Skip to content

Commit b79d386

Browse files
committed
[CMake] Fix CMake for compiling Cilksan and Cilkscale for OSX
1 parent fd36e7b commit b79d386

File tree

3 files changed

+171
-73
lines changed

3 files changed

+171
-73
lines changed

compiler-rt/cmake/config-ix.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,7 @@ if(APPLE)
327327

328328
# Note: In order to target x86_64h on OS X the minimum deployment target must
329329
# be 10.8 or higher.
330+
set(CILKTOOL_SUPPORTED_OS osx)
330331
set(SANITIZER_COMMON_SUPPORTED_OS osx)
331332
set(PROFILE_SUPPORTED_OS osx)
332333
set(TSAN_SUPPORTED_OS osx)

compiler-rt/lib/cilksan/CMakeLists.txt

Lines changed: 55 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -36,44 +36,79 @@ append_list_if(COMPILER_RT_HAS_LIBDL dl CILKSAN_DYNAMIC_LIBS)
3636
#append_list_if(COMPILER_RT_HAS_LIBSTDCXX stdc++ CILKSAN_DYNAMIC_LIBS)
3737
#append_list_if(COMPILER_RT_HAS_LIBLOG log CILKSAN_DYNAMIC_LIBS)
3838

39-
# Compile Cilksan sources into an object library
40-
41-
add_compiler_rt_object_libraries(RTCilksan_dynamic
42-
OS ${SANITIZER_COMMON_SUPPORTED_OS}
43-
ARCHS ${CILKSAN_SUPPORTED_ARCH}
44-
SOURCES ${CILKSAN_SOURCES}
45-
CFLAGS ${CILKSAN_DYNAMIC_CFLAGS}
46-
DEFS ${CILKSAN_DYNAMIC_DEFINITIONS})
47-
48-
add_compiler_rt_object_libraries(RTCilksan
49-
OS ${SANITIZER_COMMON_SUPPORTED_OS}
50-
ARCHS ${CILKSAN_SUPPORTED_ARCH}
51-
SOURCES ${CILKSAN_SOURCES}
52-
CFLAGS ${CILKSAN_CFLAGS}
53-
DEFS ${CILKSAN_COMMON_DEFINITIONS})
54-
5539
# Build Cilksan runtimes shipped with Clang.
5640
add_compiler_rt_component(cilksan)
5741

58-
foreach (arch ${CILKSAN_SUPPORTED_ARCH})
42+
if (APPLE)
43+
# Compile Cilksan sources into an object library
44+
add_compiler_rt_object_libraries(RTCilksan_dynamic
45+
OS ${CILKTOOL_SUPPORTED_OS}
46+
ARCHS ${CILKSAN_SUPPORTED_ARCH}
47+
SOURCES ${CILKSAN_SOURCES}
48+
CFLAGS ${CILKSAN_DYNAMIC_CFLAGS}
49+
DEFS ${CILKSAN_DYNAMIC_DEFINITIONS})
50+
51+
add_compiler_rt_object_libraries(RTCilksan
52+
OS ${CILKTOOL_SUPPORTED_OS}
53+
ARCHS ${CILKSAN_SUPPORTED_ARCH}
54+
SOURCES ${CILKSAN_SOURCES}
55+
CFLAGS ${CILKSAN_CFLAGS}
56+
DEFS ${CILKSAN_COMMON_DEFINITIONS})
57+
5958
add_compiler_rt_runtime(clang_rt.cilksan
6059
STATIC
61-
ARCHS ${arch}
60+
OS ${CILKTOOL_SUPPORTED_OS}
61+
ARCHS ${CILKSAN_SUPPORTED_ARCH}
6262
OBJECT_LIBS RTCilksan
6363
CFLAGS ${CILKSAN_CFLAGS}
6464
DEFS ${CILKSAN_COMMON_DEFINITIONS}
6565
PARENT_TARGET cilksan)
6666

6767
add_compiler_rt_runtime(clang_rt.cilksan
6868
SHARED
69-
ARCHS ${arch}
69+
OS ${CILKTOOL_SUPPORTED_OS}
70+
ARCHS ${CILKSAN_SUPPORTED_ARCH}
7071
OBJECT_LIBS RTCilksan_dynamic
7172
CFLAGS ${CILKSAN_DYNAMIC_CFLAGS}
7273
LINK_FLAGS ${CILKSAN_DYNAMIC_LINK_FLAGS}
7374
LINK_LIBS ${CILKSAN_DYNAMIC_LIBS}
7475
DEFS ${CILKSAN_DYNAMIC_DEFINITIONS}
7576
PARENT_TARGET cilksan)
76-
endforeach()
77+
78+
else() # Not APPLE
79+
# Compile Cilksan sources into an object library
80+
add_compiler_rt_object_libraries(RTCilksan_dynamic
81+
ARCHS ${CILKSAN_SUPPORTED_ARCH}
82+
SOURCES ${CILKSAN_SOURCES}
83+
CFLAGS ${CILKSAN_DYNAMIC_CFLAGS}
84+
DEFS ${CILKSAN_DYNAMIC_DEFINITIONS})
85+
86+
add_compiler_rt_object_libraries(RTCilksan
87+
ARCHS ${CILKSAN_SUPPORTED_ARCH}
88+
SOURCES ${CILKSAN_SOURCES}
89+
CFLAGS ${CILKSAN_CFLAGS}
90+
DEFS ${CILKSAN_COMMON_DEFINITIONS})
91+
92+
foreach (arch ${CILKSAN_SUPPORTED_ARCH})
93+
add_compiler_rt_runtime(clang_rt.cilksan
94+
STATIC
95+
ARCHS ${arch}
96+
OBJECT_LIBS RTCilksan
97+
CFLAGS ${CILKSAN_CFLAGS}
98+
DEFS ${CILKSAN_COMMON_DEFINITIONS}
99+
PARENT_TARGET cilksan)
100+
101+
add_compiler_rt_runtime(clang_rt.cilksan
102+
SHARED
103+
ARCHS ${arch}
104+
OBJECT_LIBS RTCilksan_dynamic
105+
CFLAGS ${CILKSAN_DYNAMIC_CFLAGS}
106+
LINK_FLAGS ${CILKSAN_DYNAMIC_LINK_FLAGS}
107+
LINK_LIBS ${CILKSAN_DYNAMIC_LIBS}
108+
DEFS ${CILKSAN_DYNAMIC_DEFINITIONS}
109+
PARENT_TARGET cilksan)
110+
endforeach()
111+
endif()
77112

78113
if (COMPILER_RT_INCLUDE_TESTS)
79114
# TODO(bruening): add tests via add_subdirectory(tests)

compiler-rt/lib/cilkscale/CMakeLists.txt

Lines changed: 115 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -36,61 +36,123 @@ set(CILKSCALE_INSTRUCTIONS_DYNAMIC_DEFINITIONS
3636
# Build Cilkscale runtimes shipped with Clang.
3737
add_compiler_rt_component(cilkscale)
3838

39-
foreach (arch ${CILKSCALE_SUPPORTED_ARCH})
40-
add_compiler_rt_runtime(clang_rt.cilkscale
41-
STATIC
42-
ARCHS ${arch}
43-
SOURCES ${CILKSCALE_SOURCES}
44-
CFLAGS ${CILKSCALE_CFLAGS}
45-
DEFS ${CILKSCALE_COMMON_DEFINITIONS}
46-
PARENT_TARGET cilkscale)
47-
48-
add_compiler_rt_runtime(clang_rt.cilkscale
49-
SHARED
50-
ARCHS ${arch}
51-
SOURCES ${CILKSCALE_SOURCES}
52-
CFLAGS ${CILKSCALE_DYNAMIC_CFLAGS}
53-
LINK_FLAGS ${CILKSCALE_DYNAMIC_LINK_FLAGS}
54-
LINK_LIBS ${CILKSCALE_DYNAMIC_LIBS}
55-
DEFS ${CILKSCALE_DYNAMIC_DEFINITIONS}
56-
PARENT_TARGET cilkscale)
57-
58-
add_compiler_rt_runtime(clang_rt.cilkscale-instructions
59-
STATIC
60-
ARCHS ${arch}
61-
SOURCES ${CILKSCALE_SOURCES}
62-
CFLAGS ${CILKSCALE_CFLAGS}
63-
DEFS ${CILKSCALE_INSTRUCTIONS_COMMON_DEFINITIONS}
64-
PARENT_TARGET cilkscale)
65-
66-
add_compiler_rt_runtime(clang_rt.cilkscale-instructions
67-
SHARED
68-
ARCHS ${arch}
69-
SOURCES ${CILKSCALE_SOURCES}
70-
CFLAGS ${CILKSCALE_DYNAMIC_CFLAGS}
71-
LINK_FLAGS ${CILKSCALE_DYNAMIC_LINK_FLAGS}
72-
LINK_LIBS ${CILKSCALE_DYNAMIC_LIBS}
73-
DEFS ${CILKSCALE_INSTRUCTIONS_DYNAMIC_DEFINITIONS}
74-
PARENT_TARGET cilkscale)
39+
if (APPLE)
40+
add_compiler_rt_runtime(clang_rt.cilkscale
41+
STATIC
42+
OS ${CILKTOOL_SUPPORTED_OS}
43+
ARCHS ${CILKSCALE_SUPPORTED_ARCH}
44+
SOURCES ${CILKSCALE_SOURCES}
45+
CFLAGS ${CILKSCALE_CFLAGS}
46+
DEFS ${CILKSCALE_COMMON_DEFINITIONS}
47+
PARENT_TARGET cilkscale)
48+
49+
add_compiler_rt_runtime(clang_rt.cilkscale-instructions
50+
STATIC
51+
OS ${CILKTOOL_SUPPORTED_OS}
52+
ARCHS ${CILKSCALE_SUPPORTED_ARCH}
53+
SOURCES ${CILKSCALE_SOURCES}
54+
CFLAGS ${CILKSCALE_CFLAGS}
55+
DEFS ${CILKSCALE_INSTRUCTIONS_COMMON_DEFINITIONS}
56+
PARENT_TARGET cilkscale)
57+
58+
add_compiler_rt_runtime(clang_rt.cilkscale-benchmark
59+
STATIC
60+
OS ${CILKTOOL_SUPPORTED_OS}
61+
ARCHS ${CILKSCALE_SUPPORTED_ARCH}
62+
SOURCES ${BENCHMARK_SOURCES}
63+
CFLAGS ${CILKSCALE_CFLAGS}
64+
DEFS ${CILKSCALE_COMMON_DEFINITIONS}
65+
PARENT_TARGET cilkscale)
66+
67+
add_compiler_rt_runtime(clang_rt.cilkscale
68+
SHARED
69+
OS ${CILKTOOL_SUPPORTED_OS}
70+
ARCHS ${CILKSCALE_SUPPORTED_ARCH}
71+
SOURCES ${CILKSCALE_SOURCES}
72+
CFLAGS ${CILKSCALE_DYNAMIC_CFLAGS}
73+
LINK_FLAGS ${CILKSCALE_DYNAMIC_LINK_FLAGS}
74+
LINK_LIBS ${CILKSCALE_DYNAMIC_LIBS}
75+
DEFS ${CILKSCALE_DYNAMIC_DEFINITIONS}
76+
PARENT_TARGET cilkscale)
77+
78+
add_compiler_rt_runtime(clang_rt.cilkscale-instructions
79+
SHARED
80+
OS ${CILKTOOL_SUPPORTED_OS}
81+
ARCHS ${CILKSCALE_SUPPORTED_ARCH}
82+
SOURCES ${CILKSCALE_SOURCES}
83+
CFLAGS ${CILKSCALE_DYNAMIC_CFLAGS}
84+
LINK_FLAGS ${CILKSCALE_DYNAMIC_LINK_FLAGS}
85+
LINK_LIBS ${CILKSCALE_DYNAMIC_LIBS}
86+
DEFS ${CILKSCALE_INSTRUCTIONS_DYNAMIC_DEFINITIONS}
87+
PARENT_TARGET cilkscale)
7588

7689
add_compiler_rt_runtime(clang_rt.cilkscale-benchmark
77-
STATIC
78-
ARCHS ${arch}
79-
SOURCES ${BENCHMARK_SOURCES}
80-
CFLAGS ${CILKSCALE_CFLAGS}
81-
DEFS ${CILKSCALE_COMMON_DEFINITIONS}
82-
PARENT_TARGET cilkscale)
83-
84-
add_compiler_rt_runtime(clang_rt.cilkscale-benchmark
85-
SHARED
86-
ARCHS ${arch}
87-
SOURCES ${BENCHMARK_SOURCES}
88-
CFLAGS ${CILKSCALE_DYNAMIC_CFLAGS}
89-
LINK_FLAGS ${CILKSCALE_DYNAMIC_LINK_FLAGS}
90-
LINK_LIBS ${CILKSCALE_DYNAMIC_LIBS}
91-
DEFS ${CILKSCALE_DYNAMIC_DEFINITIONS}
92-
PARENT_TARGET cilkscale)
93-
endforeach()
90+
SHARED
91+
OS ${CILKTOOL_SUPPORTED_OS}
92+
ARCHS ${CILKSCALE_SUPPORTED_ARCH}
93+
SOURCES ${BENCHMARK_SOURCES}
94+
CFLAGS ${CILKSCALE_DYNAMIC_CFLAGS}
95+
LINK_FLAGS ${CILKSCALE_DYNAMIC_LINK_FLAGS}
96+
LINK_LIBS ${CILKSCALE_DYNAMIC_LIBS}
97+
DEFS ${CILKSCALE_DYNAMIC_DEFINITIONS}
98+
PARENT_TARGET cilkscale)
99+
else()
100+
foreach (arch ${CILKSCALE_SUPPORTED_ARCH})
101+
add_compiler_rt_runtime(clang_rt.cilkscale
102+
STATIC
103+
ARCHS ${arch}
104+
SOURCES ${CILKSCALE_SOURCES}
105+
CFLAGS ${CILKSCALE_CFLAGS}
106+
DEFS ${CILKSCALE_COMMON_DEFINITIONS}
107+
PARENT_TARGET cilkscale)
108+
109+
add_compiler_rt_runtime(clang_rt.cilkscale
110+
SHARED
111+
ARCHS ${arch}
112+
SOURCES ${CILKSCALE_SOURCES}
113+
CFLAGS ${CILKSCALE_DYNAMIC_CFLAGS}
114+
LINK_FLAGS ${CILKSCALE_DYNAMIC_LINK_FLAGS}
115+
LINK_LIBS ${CILKSCALE_DYNAMIC_LIBS}
116+
DEFS ${CILKSCALE_DYNAMIC_DEFINITIONS}
117+
PARENT_TARGET cilkscale)
118+
119+
add_compiler_rt_runtime(clang_rt.cilkscale-instructions
120+
STATIC
121+
ARCHS ${arch}
122+
SOURCES ${CILKSCALE_SOURCES}
123+
CFLAGS ${CILKSCALE_CFLAGS}
124+
DEFS ${CILKSCALE_INSTRUCTIONS_COMMON_DEFINITIONS}
125+
PARENT_TARGET cilkscale)
126+
127+
add_compiler_rt_runtime(clang_rt.cilkscale-instructions
128+
SHARED
129+
ARCHS ${arch}
130+
SOURCES ${CILKSCALE_SOURCES}
131+
CFLAGS ${CILKSCALE_DYNAMIC_CFLAGS}
132+
LINK_FLAGS ${CILKSCALE_DYNAMIC_LINK_FLAGS}
133+
LINK_LIBS ${CILKSCALE_DYNAMIC_LIBS}
134+
DEFS ${CILKSCALE_INSTRUCTIONS_DYNAMIC_DEFINITIONS}
135+
PARENT_TARGET cilkscale)
136+
137+
add_compiler_rt_runtime(clang_rt.cilkscale-benchmark
138+
STATIC
139+
ARCHS ${arch}
140+
SOURCES ${BENCHMARK_SOURCES}
141+
CFLAGS ${CILKSCALE_CFLAGS}
142+
DEFS ${CILKSCALE_COMMON_DEFINITIONS}
143+
PARENT_TARGET cilkscale)
144+
145+
add_compiler_rt_runtime(clang_rt.cilkscale-benchmark
146+
SHARED
147+
ARCHS ${arch}
148+
SOURCES ${BENCHMARK_SOURCES}
149+
CFLAGS ${CILKSCALE_DYNAMIC_CFLAGS}
150+
LINK_FLAGS ${CILKSCALE_DYNAMIC_LINK_FLAGS}
151+
LINK_LIBS ${CILKSCALE_DYNAMIC_LIBS}
152+
DEFS ${CILKSCALE_DYNAMIC_DEFINITIONS}
153+
PARENT_TARGET cilkscale)
154+
endforeach()
155+
endif()
94156

95157
if (COMPILER_RT_INCLUDE_TESTS)
96158
# TODO(bruening): add tests via add_subdirectory(tests)

0 commit comments

Comments
 (0)