Skip to content

Commit 78a1d13

Browse files
committed
Cleaned up the MSVC runtime passing to subbuild.
1 parent c365615 commit 78a1d13

File tree

1 file changed

+31
-53
lines changed

1 file changed

+31
-53
lines changed

cmake/external_rules.cmake

Lines changed: 31 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -136,90 +136,68 @@ function(build_external_dependencies)
136136

137137
if (CMAKE_BUILD_TYPE)
138138
# If Release or Debug were specified, pass it along.
139-
set(CMAKE_SUB_CONFIGURE_OPTIONS
140-
${CMAKE_SUB_CONFIGURE_OPTIONS}
139+
set(CMAKE_SUB_CONFIGURE_OPTIONS ${CMAKE_SUB_CONFIGURE_OPTIONS}
141140
-DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}")
142141
endif()
143142

144143
if(APPLE)
145144
# Propagate MacOS build flags.
146145
if(CMAKE_OSX_ARCHITECTURES)
147-
set(CMAKE_SUB_CONFIGURE_OPTIONS
148-
${CMAKE_SUB_CONFIGURE_OPTIONS}
146+
set(CMAKE_SUB_CONFIGURE_OPTIONS ${CMAKE_SUB_CONFIGURE_OPTIONS}
149147
-DCMAKE_OSX_ARCHITECTURES="${CMAKE_OSX_ARCHITECTURES}")
150148
endif()
151149
elseif(MSVC)
152150
# Propagate MSVC build flags.
151+
set(CMAKE_SUB_CONFIGURE_OPTIONS ${CMAKE_SUB_CONFIGURE_OPTIONS}
152+
-A "${CMAKE_GENERATOR_PLATFORM}")
153153
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
154-
set(CMAKE_SUB_BUILD_OPTIONS ${CMAKE_SUB_BUILD_OPTIONS} --config Debug)
155-
if(MSVC_RUNTIME_LIBRARY_STATIC)
156-
set(SUBBUILD_MSVC_RUNTIME_FLAG "/MTd")
157-
set(CMAKE_SUB_CONFIGURE_OPTIONS
158-
${CMAKE_SUB_CONFIGURE_OPTIONS}
159-
-DCMAKE_C_FLAGS_RELEASE="/MT"
160-
-DCMAKE_C_FLAGS_DEBUG="/MTd"
161-
-DCMAKE_CXX_FLAGS_RELEASE="/MT"
162-
-DCMAKE_CXX_FLAGS_DEBUG="/MTd"
163-
-MSVC_RUNTIME_LIBRARY=MultiThreadedDebug
154+
set(CMAKE_SUB_BUILD_OPTIONS ${CMAKE_SUB_BUILD_OPTIONS}
155+
--config Debug)
156+
endif()
157+
if(MSVC_RUNTIME_LIBRARY_STATIC)
158+
set(CMAKE_SUB_CONFIGURE_OPTIONS ${CMAKE_SUB_CONFIGURE_OPTIONS}
159+
-DCMAKE_C_FLAGS_RELEASE="/MT"
160+
-DCMAKE_CXX_FLAGS_RELEASE="/MT"
161+
-DCMAKE_C_FLAGS_DEBUG="/MTd"
162+
-DCMAKE_CXX_FLAGS_DEBUG="/MTd")
163+
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
164+
set(CMAKE_SUB_CONFIGURE_OPTIONS ${CMAKE_SUB_CONFIGURE_OPTIONS}
164165
-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebug)
165166
else()
166-
set(SUBBUILD_MSVC_RUNTIME_FLAG "/MDd")
167-
set(CMAKE_SUB_CONFIGURE_OPTIONS
168-
${CMAKE_SUB_CONFIGURE_OPTIONS}
169-
-DCMAKE_C_FLAGS_RELEASE="/MD"
170-
-DCMAKE_C_FLAGS_DEBUG="/MDd"
171-
-DCMAKE_CXX_FLAGS_RELEASE="/MD"
172-
-DCMAKE_CXX_FLAGS_DEBUG="/MDd"
173-
-DMSVC_RUNTIME_LIBRARY=MultiThreadedDebugDLL
174-
-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebugDLL)
175-
endif()
176-
else()
177-
set(CMAKE_SUB_BUILD_OPTIONS ${CMAKE_SUB_BUILD_OPTIONS} --config Release)
178-
if(MSVC_RUNTIME_LIBRARY_STATIC)
179-
set(SUBBUILD_MSVC_RUNTIME_FLAG "/MT")
180-
set(CMAKE_SUB_CONFIGURE_OPTIONS
181-
${CMAKE_SUB_CONFIGURE_OPTIONS}
182-
-DCMAKE_C_FLAGS_RELEASE="/MT"
183-
-DCMAKE_C_FLAGS_DEBUG="/MTd"
184-
-DCMAKE_CXX_FLAGS_RELEASE="/MT"
185-
-DCMAKE_CXX_FLAGS_DEBUG="/MTd"
186-
-DMSVC_RUNTIME_LIBRARY=MultiThreaded
167+
set(CMAKE_SUB_CONFIGURE_OPTIONS ${CMAKE_SUB_CONFIGURE_OPTIONS}
187168
-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded)
169+
endif()
170+
else() // dynamic (DLL) runtime
171+
set(CMAKE_SUB_CONFIGURE_OPTIONS ${CMAKE_SUB_CONFIGURE_OPTIONS}
172+
-DCMAKE_C_FLAGS_RELEASE="/MD"
173+
-DCMAKE_CXX_FLAGS_RELEASE="/MD"
174+
-DCMAKE_C_FLAGS_DEBUG="/MDd"
175+
-DCMAKE_CXX_FLAGS_DEBUG="/MDd")
176+
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
177+
set(CMAKE_SUB_CONFIGURE_OPTIONS ${CMAKE_SUB_CONFIGURE_OPTIONS}
178+
-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebugDLL)
188179
else()
189-
set(SUBBUILD_MSVC_RUNTIME_FLAG "/MD")
190-
set(CMAKE_SUB_CONFIGURE_OPTIONS
191-
${CMAKE_SUB_CONFIGURE_OPTIONS}
192-
-DCMAKE_C_FLAGS_RELEASE="/MD"
193-
-DCMAKE_C_FLAGS_DEBUG="/MDd"
194-
-DCMAKE_CXX_FLAGS_RELEASE="/MD"
195-
-DCMAKE_CXX_FLAGS_DEBUG="/MDd"
196-
-DMSVC_RUNTIME_LIBRARY=MultiThreaded
180+
set(CMAKE_SUB_CONFIGURE_OPTIONS ${CMAKE_SUB_CONFIGURE_OPTIONS}
197181
-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDLL)
198182
endif()
199183
endif()
200-
set(CMAKE_SUB_CONFIGURE_OPTIONS
201-
${CMAKE_SUB_CONFIGURE_OPTIONS}
202-
-DCMAKE_C_FLAGS=${SUBBUILD_MSVC_RUNTIME_FLAG}
203-
-DCMAKE_CXX_FLAGS=${SUBBUILD_MSVC_RUNTIME_FLAG}
204-
-A "${CMAKE_GENERATOR_PLATFORM}")
205184
else()
206185
# Propagate Linux build flags.
207186
if("${CMAKE_CXX_FLAGS}" MATCHES "-D_GLIBCXX_USE_CXX11_ABI=0")
208187
set(SUBBUILD_USE_CXX11_ABI 0)
209188
else()
210189
set(SUBBUILD_USE_CXX11_ABI 1)
211190
endif()
212-
set(CMAKE_SUB_CONFIGURE_OPTIONS
213-
${CMAKE_SUB_CONFIGURE_OPTIONS}
191+
set(CMAKE_SUB_CONFIGURE_OPTIONS ${CMAKE_SUB_CONFIGURE_OPTIONS}
214192
-DCMAKE_C_FLAGS="-D_GLIBCXX_USE_CXX11_ABI=${SUBBUILD_USE_CXX11_ABI}"
215193
-DCMAKE_CXX_FLAGS="-D_GLIBCXX_USE_CXX11_ABI=${SUBBUILD_USE_CXX11_ABI}")
216194
if(CMAKE_TOOLCHAIN_FILE)
217-
set(CMAKE_SUB_CONFIGURE_OPTIONS
218-
${CMAKE_SUB_CONFIGURE_OPTIONS}
195+
set(CMAKE_SUB_CONFIGURE_OPTIONS ${CMAKE_SUB_CONFIGURE_OPTIONS}
219196
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE})
220197
endif()
221198
endif()
222-
message("Sub-build options: ${CMAKE_SUB_CONFIGURE_OPTIONS}")
199+
message("Sub-configure options: ${CMAKE_SUB_CONFIGURE_OPTIONS}")
200+
message("Sub-build options: ${CMAKE_SUB_BUILD_OPTIONS}")
223201

224202
if(NOT ANDROID AND NOT IOS)
225203
execute_process(

0 commit comments

Comments
 (0)