Skip to content

Commit 6ca7360

Browse files
committed
split external build into module file; always build with Release config for external libs
Signed-off-by: Benstone Zhang <[email protected]>
1 parent 7d9099a commit 6ca7360

File tree

2 files changed

+56
-49
lines changed

2 files changed

+56
-49
lines changed

external.cmake

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
include(ExternalProject)
2+
set(EXTERNAL_BASE_DIR ${CMAKE_BINARY_DIR}/external CACHE STRING "External base directory")
3+
4+
ExternalProject_Add(
5+
zlib_src
6+
PREFIX ${EXTERNAL_BASE_DIR}
7+
GIT_REPOSITORY https://github.com/madler/zlib.git
8+
GIT_TAG 51b7f2abdade71cd9bb0e7a373ef2610ec6f9daf # v1.3.1
9+
GIT_SHALLOW True
10+
UPDATE_DISCONNECTED True
11+
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_BASE_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_MSVC_RUNTIME_LIBRARY=${CMAKE_MSVC_RUNTIME_LIBRARY} -DZLIB_BUILD_MINIZIP=1
12+
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release
13+
BUILD_BYPRODUCTS ${EXTERNAL_BASE_DIR}/lib/libz.a
14+
INSTALL_COMMAND ${CMAKE_COMMAND} --install . --config Release
15+
)
16+
add_library(zlib STATIC IMPORTED)
17+
set_target_properties(zlib PROPERTIES IMPORTED_LOCATION ${EXTERNAL_BASE_DIR}/lib/libz.a)
18+
add_dependencies(zlib zlib_src)
19+
20+
set(ZLIB_SRC_DIR ${EXTERNAL_BASE_DIR}/src/zlib_src)
21+
set_source_files_properties(${ZLIB_SRC_DIR}/contrib/minizip/ioapi.c PROPERTIES GENERATED 1)
22+
set_source_files_properties(${ZLIB_SRC_DIR}/contrib/minizip/unzip.c PROPERTIES GENERATED 1)
23+
set_source_files_properties(${ZLIB_SRC_DIR}/contrib/minizip/iowin32.c PROPERTIES GENERATED 1)
24+
25+
ExternalProject_Add(
26+
xml2_src
27+
PREFIX ${EXTERNAL_BASE_DIR}
28+
GIT_REPOSITORY https://github.com/GNOME/libxml2.git
29+
GIT_TAG 60d3056c97067e6cb2125284878ed7c99c90ed81 # v2.13.4
30+
GIT_SHALLOW True
31+
UPDATE_DISCONNECTED True
32+
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_BASE_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_MSVC_RUNTIME_LIBRARY=${CMAKE_MSVC_RUNTIME_LIBRARY} -DBUILD_SHARED_LIBS=OFF -DLIBXML2_WITH_ICONV=OFF -DLIBXML2_WITH_LZMA=OFF -DLIBXML2_WITH_PYTHON=OFF -DLIBXML2_WITH_ZLIB=OFF -DLIBXML2_WITH_TESTS=OFF
33+
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release
34+
BUILD_BYPRODUCTS ${EXTERNAL_BASE_DIR}/lib/libxml2.a
35+
INSTALL_COMMAND ${CMAKE_COMMAND} --install . --config Release
36+
)
37+
add_library(xml2 STATIC IMPORTED)
38+
set_target_properties(xml2 PROPERTIES IMPORTED_LOCATION ${EXTERNAL_BASE_DIR}/lib/libxml2.a)
39+
add_dependencies(xml2 xml2_src)
40+
41+
ExternalProject_Add(
42+
cvcode_src
43+
PREFIX ${EXTERNAL_BASE_DIR}
44+
GIT_REPOSITORY https://github.com/LLNL/sundials.git
45+
GIT_TAG c28eaa3764a03705d61decb6025b409360e9d53f # v7.1.1
46+
GIT_SHALLOW True
47+
UPDATE_DISCONNECTED True
48+
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_BASE_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_MSVC_RUNTIME_LIBRARY=${CMAKE_MSVC_RUNTIME_LIBRARY} -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF -DEXAMPLES_INSTALL=OFF -DSUNDIALS_ENABLE_ERROR_CHECKS=OFF
49+
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release
50+
BUILD_BYPRODUCTS ${EXTERNAL_BASE_DIR}/lib/libsundials_cvode.a ${EXTERNAL_BASE_DIR}/lib/libsundials_core.a
51+
INSTALL_COMMAND ${CMAKE_COMMAND} --install . --config Release
52+
)
53+
add_library(cvcode STATIC IMPORTED)
54+
set_target_properties(cvcode PROPERTIES IMPORTED_LOCATION ${EXTERNAL_BASE_DIR}/lib/libsundials_core.a)
55+
add_dependencies(cvcode cvcode_src)

fmusim/CMakeLists.txt

Lines changed: 1 addition & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -12,55 +12,7 @@ endif ()
1212

1313
set(FMUSIM_VERSION "" CACHE STRING "")
1414

15-
include(ExternalProject)
16-
set(EXTERNAL_BASE_DIR ${CMAKE_BINARY_DIR}/external CACHE STRING "External base directory")
17-
18-
ExternalProject_Add(
19-
zlib_src
20-
GIT_REPOSITORY https://github.com/madler/zlib.git
21-
GIT_TAG 51b7f2abdade71cd9bb0e7a373ef2610ec6f9daf # v1.3.1
22-
GIT_SHALLOW True
23-
UPDATE_DISCONNECTED True
24-
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_BASE_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_MSVC_RUNTIME_LIBRARY=${CMAKE_MSVC_RUNTIME_LIBRARY} -DZLIB_BUILD_MINIZIP=1
25-
PREFIX ${EXTERNAL_BASE_DIR}
26-
BUILD_BYPRODUCTS ${EXTERNAL_BASE_DIR}/lib/libz.a
27-
)
28-
add_library(zlib STATIC IMPORTED)
29-
set_target_properties(zlib PROPERTIES IMPORTED_LOCATION ${EXTERNAL_BASE_DIR}/lib/libz.a)
30-
add_dependencies(zlib zlib_src)
31-
32-
set(ZLIB_SRC_DIR ${EXTERNAL_BASE_DIR}/src/zlib_src)
33-
set_source_files_properties(${ZLIB_SRC_DIR}/contrib/minizip/ioapi.c PROPERTIES GENERATED 1)
34-
set_source_files_properties(${ZLIB_SRC_DIR}/contrib/minizip/unzip.c PROPERTIES GENERATED 1)
35-
set_source_files_properties(${ZLIB_SRC_DIR}/contrib/minizip/iowin32.c PROPERTIES GENERATED 1)
36-
37-
ExternalProject_Add(
38-
xml2_src
39-
GIT_REPOSITORY https://github.com/GNOME/libxml2.git
40-
GIT_TAG 60d3056c97067e6cb2125284878ed7c99c90ed81 # v2.13.4
41-
GIT_SHALLOW True
42-
UPDATE_DISCONNECTED True
43-
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_BASE_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_MSVC_RUNTIME_LIBRARY=${CMAKE_MSVC_RUNTIME_LIBRARY} -DBUILD_SHARED_LIBS=OFF -DLIBXML2_WITH_ICONV=OFF -DLIBXML2_WITH_LZMA=OFF -DLIBXML2_WITH_PYTHON=OFF -DLIBXML2_WITH_ZLIB=OFF -DLIBXML2_WITH_TESTS=OFF
44-
PREFIX ${EXTERNAL_BASE_DIR}
45-
BUILD_BYPRODUCTS ${EXTERNAL_BASE_DIR}/lib/libxml2.a
46-
)
47-
add_library(xml2 STATIC IMPORTED)
48-
set_target_properties(xml2 PROPERTIES IMPORTED_LOCATION ${EXTERNAL_BASE_DIR}/lib/libxml2.a)
49-
add_dependencies(xml2 xml2_src)
50-
51-
ExternalProject_Add(
52-
cvcode_src
53-
GIT_REPOSITORY https://github.com/LLNL/sundials.git
54-
GIT_TAG c28eaa3764a03705d61decb6025b409360e9d53f # v7.1.1
55-
GIT_SHALLOW True
56-
UPDATE_DISCONNECTED True
57-
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_BASE_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_MSVC_RUNTIME_LIBRARY=${CMAKE_MSVC_RUNTIME_LIBRARY} -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF -DEXAMPLES_INSTALL=OFF -DSUNDIALS_ENABLE_ERROR_CHECKS=OFF
58-
PREFIX ${EXTERNAL_BASE_DIR}
59-
BUILD_BYPRODUCTS ${EXTERNAL_BASE_DIR}/lib/libsundials_cvode.a ${EXTERNAL_BASE_DIR}/lib/libsundials_core.a
60-
)
61-
add_library(cvcode STATIC IMPORTED)
62-
set_target_properties(cvcode PROPERTIES IMPORTED_LOCATION ${EXTERNAL_BASE_DIR}/lib/libsundials_core.a)
63-
add_dependencies(cvcode cvcode_src)
15+
include(../external.cmake)
6416

6517
if (WIN32)
6618
set(FMUSIM_DIST_DIR ${CMAKE_BINARY_DIR}/dist/fmusim-windows/)

0 commit comments

Comments
 (0)