Skip to content

Commit 4ef1f27

Browse files
committed
CMake changes to support Xcode and Apple's Clang
This change should make Xcode and Apple's Clang builds with CMake actually work. The recommended generator pattern is: BOOST_ROOT=… cmake -G"Xcode" -DCMAKE_CXX_COMPILER=clang++
1 parent 2bebdfa commit 4ef1f27

File tree

3 files changed

+69
-4
lines changed

3 files changed

+69
-4
lines changed

.gitignore.orig

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
*.swp
2+
*.pyc
3+
CMakeCache.txt
4+
CMakeFiles
5+
Makefile
6+
Testing
7+
*.gch
8+
libs/mime/test/mime-roundtrip
9+
*.a
10+
bin/
11+
tests/
12+
_build
13+
<<<<<<< HEAD
14+
CPP-NETLIB.*
15+
CMakeScripts/
16+
*.cmake
17+
=======
18+
*~
19+
>>>>>>> 49d3b206d9ee23ad7426c6f803d76b0deb9064d4

CMakeLists.txt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
2929
INCLUDE(CheckCXXCompilerFlag)
3030
CHECK_CXX_COMPILER_FLAG(-std=c++0x HAVE_STD0X)
3131
CHECK_CXX_COMPILER_FLAG(-std=c++11 HAVE_STD11)
32-
3332
if (HAVE_STD11)
3433
set(CMAKE_CXX_FLAGS -std=c++11)
3534
elseif (HAVE_STD0X)
@@ -38,11 +37,18 @@ if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
3837
message(FATAL_ERROR "No advanced standard C++ support (-std=c++0x and -std=c++11 not defined).")
3938
endif()
4039
elseif(${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
41-
set(CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++")
42-
set(CMAKE_CXX_LINK_FLAGS "-std=c++11 -stdlib=libc++")
43-
message("C++ Flags: ${CMAKE_CXX_FLAGS} link flags: ${CMAKE_CXX_LINK_FLAGS}")
40+
INCLUDE(CheckCXXCompilerFlag)
41+
CHECK_CXX_COMPILER_FLAG(-std=c++11 HAVE_STD11)
42+
if (HAVE_STD11)
43+
set(CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++")
44+
set(CMAKE_CXX_LINK_FLAGS "-std=c++11 -stdlib=libc++")
45+
else()
46+
message(FATAL_ERROR "No C++11 support for Clang version. Please upgrade Clang to a version supporting C++11.")
47+
endif()
4448
endif()
4549

50+
message("C++ Compiler ID: ${CMAKE_CXX_COMPILER_ID}")
51+
message("C++ Flags: ${CMAKE_CXX_FLAGS} link flags: ${CMAKE_CXX_LINK_FLAGS}")
4652
if (Boost_FOUND)
4753
if (MSVC)
4854
add_definitions(-D_SCL_SECURE_NO_WARNINGS)

libs/network/src/CMakeLists.txt

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
1818
elseif (HAVE_STD0X)
1919
set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++0x")
2020
endif()
21+
elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
22+
CHECK_CXX_COMPILER_FLAG(-std=c++11 HAVE_STD11)
23+
set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11 -stdlib=libc++")
24+
set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11 -stdlib=libc++")
2125
endif()
2226

2327
set(CPP-NETLIB_URI_SRCS uri/uri.cpp uri/schemes.cpp uri/normalize.cpp)
@@ -26,6 +30,9 @@ foreach (src_file ${CPP-NETLIB_URI_SRCS})
2630
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
2731
set_source_files_properties(${src_file}
2832
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
33+
elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
34+
set_source_files_properties(${src_file}
35+
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
2936
endif()
3037
endforeach(src_file)
3138

@@ -37,6 +44,9 @@ foreach (src_file ${CPP-NETLIB_MESSAGE_SRCS})
3744
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
3845
set_source_files_properties(${src_file}
3946
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
47+
elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
48+
set_source_files_properties(${src_file}
49+
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
4050
endif()
4151
endforeach(src_file)
4252

@@ -46,6 +56,9 @@ foreach (src_file ${CPP-NETLIB_MESSAGE_DIRECTIVES_SRCS})
4656
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
4757
set_source_files_properties(${src_file}
4858
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
59+
elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
60+
set_source_files_properties(${src_file}
61+
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
4962
endif()
5063
endforeach(src_file)
5164

@@ -55,6 +68,9 @@ foreach (src_file ${CPP-NETLIB_MESSAGE_WRAPPERS_SRCS})
5568
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
5669
set_source_files_properties(${src_file}
5770
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
71+
elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
72+
set_source_files_properties(${src_file}
73+
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
5874
endif()
5975
endforeach(src_file)
6076

@@ -70,6 +86,9 @@ foreach (src_file ${CPP-NETLIB_HTTP_MESSAGE_SRCS})
7086
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
7187
set_source_files_properties(${src_file}
7288
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
89+
elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
90+
set_source_files_properties(${src_file}
91+
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
7392
endif()
7493
endforeach(src_file)
7594

@@ -79,6 +98,9 @@ foreach (src_file ${CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS})
7998
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
8099
set_source_files_properties(${src_file}
81100
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
101+
elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
102+
set_source_files_properties(${src_file}
103+
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
82104
endif()
83105
endforeach(src_file)
84106

@@ -88,6 +110,9 @@ foreach (src_file ${CPP-NETLIB_HTTP_SERVER_PARSERS_SRCS})
88110
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
89111
set_source_files_properties(${src_file}
90112
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
113+
elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
114+
set_source_files_properties(${src_file}
115+
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
91116
endif()
92117
endforeach(src_file)
93118

@@ -124,6 +149,9 @@ foreach (src_file ${CPP-NETLIB_HTTP_SERVER_SRCS})
124149
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
125150
set_source_files_properties(${src_file}
126151
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
152+
elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
153+
set_source_files_properties(${src_file}
154+
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
127155
endif()
128156
endforeach(src_file)
129157

@@ -143,6 +171,9 @@ foreach (src_file ${CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS})
143171
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
144172
set_source_files_properties(${src_file}
145173
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
174+
elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
175+
set_source_files_properties(${src_file}
176+
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
146177
endif()
147178
endforeach(src_file)
148179

@@ -175,6 +206,9 @@ foreach (src_file ${CPP-NETLIB_HTTP_CLIENT_SRCS})
175206
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
176207
set_source_files_properties(${src_file}
177208
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
209+
elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
210+
set_source_files_properties(${src_file}
211+
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
178212
endif()
179213
endforeach(src_file)
180214

@@ -184,6 +218,9 @@ foreach (src_file ${CPP-NETLIB_UTILS_THREAD_POOL_SRCS})
184218
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
185219
set_source_files_properties(${src_file}
186220
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
221+
elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
222+
set_source_files_properties(${src_file}
223+
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
187224
endif()
188225
endforeach(src_file)
189226

@@ -193,5 +230,8 @@ foreach (src_file ${CPP-NETLIB_CONSTANTS_SRCS})
193230
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
194231
set_source_files_properties(${src_file}
195232
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
233+
elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
234+
set_source_files_properties(${src_file}
235+
PROPERTIES COMPILE_FLAGS ${CPP-NETLIB_CXXFLAGS})
196236
endif()
197237
endforeach(src_file)

0 commit comments

Comments
 (0)