1- cmake_minimum_required (VERSION 3.10 )
1+ cmake_minimum_required (VERSION 3.20 )
22
33project (CastXMLSuperbuild NONE)
44# Set a default build type if none was specified
@@ -12,32 +12,24 @@ enable_language(C)
1212enable_language (CXX)
1313
1414
15- # Use a static runtime with MSVC
16- if (MSVC )
17- foreach (flag
18- CMAKE_CXX_FLAGS
19- CMAKE_CXX_FLAGS_RELEASE
20- CMAKE_C_FLAGS
21- CMAKE_C_FLAGS_RELEASE
22- )
23- if (${flag} MATCHES "/MD" )
24- string (REGEX REPLACE "/MD" "/MT" ${flag} "${${flag} }" )
25- endif ()
26- endforeach ()
27- else ()
28- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14" )
29- endif ()
15+ set (CMAKE_CXX_STANDARD "17" )
3016
3117
3218if (APPLE )
3319 set (osx_args
34- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING =10.9
20+ -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING =10.11
3521 )
3622endif ()
3723
3824
3925include (ExternalProject)
4026
27+ if (${CMAKE_VERSION} VERSION_LESS 3.24)
28+ set (download_extract_timestamp_flag)
29+ else ()
30+ set (download_extract_timestamp_flag DOWNLOAD_EXTRACT_TIMESTAMP TRUE )
31+ endif ()
32+
4133find_program (NINJA_EXECUTABLE ninja)
4234if (NINJA_EXECUTABLE)
4335 set (CMAKE_GENERATOR "Ninja" )
@@ -51,74 +43,87 @@ if(USE_SYSTEM_LLVM)
5143 set (castxml_deps)
5244else ()
5345
54- set (llvm_version 13.0.0)
55- set (llvm_folder 13.0.0)
56- set (llvm_md5 8c24626dce3ee9d87d1079ebf0897db5)
46+ set (llvm_version 18.1.3)
47+ set (llvm_folder 18.1.3)
48+ set (LLVM_DIR ${CMAKE_CURRENT_BINARY_DIR} /llvm/lib/cmake/llvm/)
49+
50+ set (llvm_cmake_sha256 acfecb615d41c5b1a0a31e15324994ca06f7a3f37d8958d719b20de0d217b71b)
51+ ExternalProject_Add(llvm-cmake
52+ URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${llvm_folder} /cmake-${llvm_version} .src.tar.xz"
53+ URL_HASH SHA256=${llvm_cmake_sha256}
54+ CONFIGURE_COMMAND ""
55+ BUILD_COMMAND ""
56+ INSTALL_COMMAND ""
57+ ${download_extract_timestamp_flag}
58+ LOG_BUILD 0
59+ SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR} /llvm-prefix /src/cmake
60+ )
61+
62+ set (llvm_sha256 fa6db8951f5ef576ac6bad43d5e1ed83962754538c998fbfa0397cd4521abc00)
5763 ExternalProject_Add(llvm
58- URL https://github.com/llvm/llvm-project/releases/download/llvmorg-${llvm_folder} /llvm-${llvm_version} .src.tar.xz
59- URL_MD5 ${llvm_md5}
64+ URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${llvm_folder} /llvm-${llvm_version} .src.tar.xz"
65+ URL_HASH SHA256=${llvm_sha256}
66+ DEPENDS llvm-cmake
6067 CMAKE_ARGS -Wno-dev
6168 CMAKE_GENERATOR "${CMAKE_GENERATOR} "
6269 CMAKE_CACHE_ARGS
6370 -DCMAKE_CXX_COMPILER:FILEPATH =${CMAKE_CXX_COMPILER}
64- "-DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} -w"
65- "-DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE} "
71+ -DCMAKE_CXX_STANDARD:STRING =${CMAKE_CXX_STANDARD}
6672 -DCMAKE_C_COMPILER:FILEPATH =${CMAKE_C_COMPILER}
67- "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS} -w"
68- "-DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE} "
73+ -DLLVM_STATIC_LINK_CXX_STDLIB:BOOL =ON
6974 -DCMAKE_BUILD_TYPE:STRING =${CMAKE_BUILD_TYPE}
70- -DLLVM_USE_CRT_RELEASE:STRING =MT
7175 -DCMAKE_INSTALL_PREFIX:PATH =<INSTALL_DIR>
76+ -DLLVM_INSTALL_PREFIX:PATH =<INSTALL_DIR>
7277 -DLLVM_ENABLE_TERMINFO:BOOL =OFF
7378 -DLLVM_INCLUDE_TESTS:BOOL =OFF
74- -DLLVM_INCLUDE_EXAMPLES :BOOL =OFF
79+ -DLLVM_INCLUDE_BENCHMARKS :BOOL =OFF
7580 -DLLVM_INCLUDE_DOCS:BOOL =OFF
7681 -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN:BOOL =ON
7782 ${osx_args}
7883 ${verbose_command}
84+ ${download_extract_timestamp_flag}
7985 LOG_BUILD 0
8086 INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR} /llvm
8187 )
8288
8389
84- set (clang_md5 020cbac6e5786094fe4f96f72e290763 )
90+ set (clang_sha256 e43e1729713ac0241aa026fa2f98bb54e74a196a6fed60ab4819134a428eb6d8 )
8591 ExternalProject_Add(clang
86- URL https://github.com/llvm/llvm-project/releases/download/llvmorg-${llvm_folder} /clang-${llvm_version} .src.tar.xz
87- URL_MD5 ${clang_md5 }
92+ URL " https://github.com/llvm/llvm-project/releases/download/llvmorg-${llvm_folder} /clang-${llvm_version} .src.tar.xz"
93+ URL_HASH SHA256= ${clang_sha256 }
8894 DEPENDS llvm
89- SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR} /cfe-${llvm_version}
95+ SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR} /llvm- prefix /src/ cfe-${llvm_version}
9096 CMAKE_ARGS -Wno-dev
9197 CMAKE_GENERATOR "${CMAKE_GENERATOR} "
9298 CMAKE_CACHE_ARGS
9399 -DCMAKE_CXX_COMPILER:FILEPATH =${CMAKE_CXX_COMPILER}
94- "-DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} -w"
95- "-DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE} "
100+ -DCMAKE_CXX_STANDARD:STRING =${CMAKE_CXX_STANDARD}
96101 -DCMAKE_C_COMPILER:FILEPATH =${CMAKE_C_COMPILER}
97- "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS} -w"
98- "-DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE} "
99102 -DCMAKE_BUILD_TYPE:STRING =${CMAKE_BUILD_TYPE}
100103 -DCMAKE_INSTALL_PREFIX:PATH =<INSTALL_DIR>
101104 -DCLANG_INCLUDE_DOCS:BOOL =OFF
102105 -DCLANG_INCLUDE_TESTS:BOOL =OFF
106+ -DLLVM_INCLUDE_TESTS:BOOL =OFF
103107 -DLLVM_CONFIG:PATH =${CMAKE_CURRENT_BINARY_DIR} /llvm/bin/llvm-config
108+ -DLLVM_DIR:PATH =${LLVM_DIR}
104109 -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN:BOOL =ON
105110 ${osx_args}
106111 ${verbose_command}
112+ ${download_extract_timestamp_flag}
107113 LOG_BUILD 0
108114 INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR} /llvm
109115 )
110116
111117 set (castxml_deps llvm clang)
112- set (LLVM_DIR ${CMAKE_CURRENT_BINARY_DIR} /llvm/lib/cmake/llvm/)
113118endif ()
114119
115120
116121# Use a static C++ library on GCC/Linux
117122if (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_SYSTEM_NAME MATCHES "Linux" )
118- set (extra_flags " -static-libstdc++" )
123+ set (linux_args "-DCMAKE_CXX_FLAGS:STRING= -static-libstdc++" )
119124endif ()
120- # 2022-12-06 master
121- set (CastXML_GIT_TAG v0.5.0 CACHE STRING "CastXML Git revision." )
125+ # 2024-04-12 master
126+ set (CastXML_GIT_TAG v0.6.5 CACHE STRING "CastXML Git revision." )
122127ExternalProject_Add(castxml
123128 GIT_REPOSITORY https://github.com/CastXML/CastXML.git
124129 GIT_TAG ${CastXML_GIT_TAG}
@@ -127,15 +132,13 @@ ExternalProject_Add(castxml
127132 CMAKE_GENERATOR "${CMAKE_GENERATOR} "
128133 CMAKE_CACHE_ARGS
129134 -DCMAKE_CXX_COMPILER:FILEPATH =${CMAKE_CXX_COMPILER}
130- "-DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} -w ${extra_flags} "
131- "-DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE} "
135+ -DCMAKE_CXX_STANDARD:STRING =${CMAKE_CXX_STANDARD}
132136 -DCMAKE_C_COMPILER:FILEPATH =${CMAKE_C_COMPILER}
133- "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS} -w"
134- "-DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE} "
135137 -DCMAKE_BUILD_TYPE:STRING =${CMAKE_BUILD_TYPE}
136138 -DCMAKE_INSTALL_PREFIX:PATH =<INSTALL_DIR>
137139 -DLLVM_DIR:PATH =${LLVM_DIR}
138140 ${osx_args}
141+ ${linux_args}
139142 ${verbose_command}
140143 LOG_BUILD 0
141144 INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR} /castxml
0 commit comments