@@ -3,7 +3,12 @@ version: 2.1
3
3
common_parameters : &common_parameters
4
4
os :
5
5
type : enum
6
- enum : [ alpine, debian, linux ]
6
+ enum : [ alpine, debian, linux, macos, "win/default" ]
7
+
8
+ # # ORBS ##
9
+
10
+ orbs :
11
+
7
12
8
13
# # EXECUTORS ##
9
14
@@ -23,6 +28,11 @@ executors:
23
28
machine :
24
29
image : ubuntu-2004:202101-01
25
30
31
+ macos :
32
+ resource_class : medium
33
+ macos :
34
+ xcode : 13.4.1
35
+
26
36
# # COMMANDS ##
27
37
28
38
commands :
@@ -45,23 +55,50 @@ commands:
45
55
steps :
46
56
- run : apt-get update -y && apt-get install -y make
47
57
48
- - run : make install-deps EXECUTOR=<< parameters.os >>
58
+ - when :
59
+ condition :
60
+ not :
61
+ equal : [ "win/default", << parameters.os >> ]
62
+ steps :
63
+ - run : make install-deps EXECUTOR=<< parameters.os >>
64
+
65
+ - when :
66
+ condition :
67
+ equal : [ "win/default", << parameters.os >> ]
68
+ steps :
69
+ - run : choco install cmake.install --installargs '"ADD_CMAKE_TO_PATH=User"'
70
+ - run : choco install ninja
49
71
50
72
build :
73
+ parameters :
74
+ << : *common_parameters
51
75
steps :
52
- - run :
53
- # NOTE: the circle ci container executor reports the memory/cpu stats
54
- # of the host machine (https://ideas.circleci.com/ideas/CCI-I-578),
55
- # `nproc` will return 36 on docker/medium resource_class,
56
- # ninja parallelizes accordingly, which leads to overloading
57
- # and circleci eventually terminating the builds:
58
- #
59
- # ninja: job failed: /usr/bin/c++ [...]
60
- # c++: fatal error: Killed signal terminated program cc1plus
61
- # compilation terminated
62
- #
63
- # force overwrite job count here:
64
- command : make lief JOBS=3
76
+ - when :
77
+ condition :
78
+ not :
79
+ equal : [ "win/default", << parameters.os >> ]
80
+ steps :
81
+ - run :
82
+ # NOTE: the circle ci container executor reports the memory/cpu stats
83
+ # of the host machine (https://ideas.circleci.com/ideas/CCI-I-578),
84
+ # `nproc` will return 36 on docker/medium resource_class,
85
+ # ninja parallelizes accordingly, which leads to overloading
86
+ # and circleci eventually terminating the builds:
87
+ #
88
+ # ninja: job failed: /usr/bin/c++ [...]
89
+ # c++: fatal error: Killed signal terminated program cc1plus
90
+ # compilation terminated
91
+ #
92
+ # force overwrite job count here:
93
+ command : make lief JOBS=3
94
+
95
+ - when :
96
+ condition :
97
+ equal : [ "win/default", << parameters.os >> ]
98
+ steps :
99
+ - run :
100
+ command : refreshenv & cd vendor\lief & python ./setup.py --ninja build_ext -b ..\..\dist\lief
101
+ shell : cmd.exe
65
102
66
103
- persist_to_workspace :
67
104
root : .
86
123
- checkout
87
124
- prepare :
88
125
os : << parameters.os >>
89
- - build
126
+ - build :
127
+ os : << parameters.os >>
90
128
- store_artifacts :
91
129
path : dist
92
130
- store_artifacts :
@@ -106,17 +144,22 @@ jobs:
106
144
107
145
# # WORKFLOWS ##
108
146
109
- matrix : &matrix
147
+ build_matrix : &build_matrix
148
+ matrix :
149
+ parameters :
150
+ os : [ alpine, debian, macos, "win/default" ]
151
+
152
+ test_matrix : &test_matrix
110
153
matrix :
111
154
parameters :
112
- os : [ alpine, debian ]
155
+ os : [ alpine, debian, macos ]
113
156
114
157
workflows :
115
158
postject :
116
159
jobs :
117
160
- build :
118
- << : *matrix
161
+ << : *build_matrix
119
162
- test :
120
- << : *matrix
163
+ << : *test_matrix
121
164
requires : [ build-<<matrix.os>> ]
122
165
0 commit comments