@@ -5,15 +5,16 @@ cmake_minimum_required(VERSION 3.14...3.22)
5
5
# Note: update this to your new project's name and version
6
6
project (
7
7
AddBoost.cmake
8
- VERSION 3.2
8
+ VERSION 3.3
9
9
LANGUAGES CXX
10
10
)
11
11
12
12
function (SUBDIRLIST result_var curdir)
13
13
file (
14
14
GLOB children
15
15
RELATIVE ${curdir}
16
- ${curdir} /*)
16
+ ${curdir} /*
17
+ )
17
18
set (result "" )
18
19
foreach (child ${children} )
19
20
if (IS_DIRECTORY ${curdir} /${child} )
@@ -22,18 +23,21 @@ function(SUBDIRLIST result_var curdir)
22
23
endforeach ()
23
24
set (${result_var}
24
25
${result}
25
- PARENT_SCOPE)
26
+ PARENT_SCOPE
27
+ )
26
28
endfunction ()
27
29
28
30
macro (add_boost TRY_BOOST_VERSION BOOST_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED
29
- BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED)
31
+ BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED
32
+ )
30
33
message (
31
34
DEBUG
32
35
"add_boost called with next arguments:
33
36
\$\{\$\{ TRY_BOOST_VERSION\}\} : ${${TRY_BOOST_VERSION} }
34
37
\$\{\$\{ BOOST_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED\}\} : ${${BOOST_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED} }
35
38
\$\{\$\{ BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED\}\} : ${${BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED} }
36
- " )
39
+ "
40
+ )
37
41
set (targets_to_link_to "${ARGN} " )
38
42
message (DEBUG "targets_to_link_to: \" ${targets_to_link_to} \" " )
39
43
set (BOOST_INCLUDE_LIBRARIES
@@ -56,11 +60,13 @@ macro(add_boost TRY_BOOST_VERSION BOOST_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED
56
60
set (patches_for_boost "" )
57
61
58
62
file (GLOB global_patches_for_boost CONFIGURE_DEPENDS
59
- "${CMAKE_CURRENT_SOURCE_DIR} /patches/boost/*.patch" )
63
+ "${CMAKE_CURRENT_SOURCE_DIR} /patches/boost/*.patch"
64
+ )
60
65
list (APPEND patches_for_boost ${global_patches_for_boost} )
61
66
if (DEFINED BOOST_ADD_MY_PATCHES)
62
67
file (GLOB global_patches_for_boost CONFIGURE_DEPENDS
63
- "${BOOST_ADD_MY_PATCHES} /patches/boost/*.patch" )
68
+ "${BOOST_ADD_MY_PATCHES} /patches/boost/*.patch"
69
+ )
64
70
list (APPEND patches_for_boost ${global_patches_for_boost} )
65
71
66
72
endif ()
@@ -69,11 +75,10 @@ macro(add_boost TRY_BOOST_VERSION BOOST_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED
69
75
if (subdirs_boost_patches)
70
76
foreach (subdir ${subdirs_boost_patches} )
71
77
if (${subdir} STREQUAL ${${TRY_BOOST_VERSION} })
72
- file (GLOB_RECURSE patches_with_max_applicable_version_up_to
73
- CONFIGURE_DEPENDS
74
- "${CMAKE_CURRENT_SOURCE_DIR} /patches/boost/${subdir} /*.patch" )
75
- list (APPEND patches_for_boost
76
- ${patches_with_max_applicable_version_up_to} )
78
+ file (GLOB_RECURSE patches_with_max_applicable_version_up_to CONFIGURE_DEPENDS
79
+ "${CMAKE_CURRENT_SOURCE_DIR} /patches/boost/${subdir} /*.patch"
80
+ )
81
+ list (APPEND patches_for_boost ${patches_with_max_applicable_version_up_to} )
77
82
endif ()
78
83
endforeach ()
79
84
endif ()
@@ -82,80 +87,56 @@ macro(add_boost TRY_BOOST_VERSION BOOST_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED
82
87
if (subdirs_boost_patches)
83
88
foreach (subdir ${subdirs_boost_patches} )
84
89
if (${subdir} STREQUAL ${${TRY_BOOST_VERSION} })
85
- file (GLOB_RECURSE patches_with_max_applicable_version_up_to
86
- CONFIGURE_DEPENDS
87
- "${CMAKE_CURRENT_SOURCE_DIR} /patches/boost/${subdir} /*.patch" )
88
- list (APPEND patches_for_boost
89
- ${patches_with_max_applicable_version_up_to} )
90
+ file (GLOB_RECURSE patches_with_max_applicable_version_up_to CONFIGURE_DEPENDS
91
+ "${CMAKE_CURRENT_SOURCE_DIR} /patches/boost/${subdir} /*.patch"
92
+ )
93
+ list (APPEND patches_for_boost ${patches_with_max_applicable_version_up_to} )
90
94
endif ()
91
95
endforeach ()
92
96
endif ()
93
97
endif ()
94
98
95
- string (REPLACE ";" "\; "
96
- ESCAPED_BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED
97
- "${ ${BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED} }" )
99
+ string (REPLACE ";" "\; " ESCAPED_BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED
100
+ "${ ${BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED} }"
101
+ )
98
102
message (
99
103
DEBUG
100
104
"\$\{ ESCAPED_BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED\} : ${ESCAPED_BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED} "
101
105
)
102
106
103
107
if (DEFINED BOOST_USE_MY_BOOST_DIRECTORY)
104
- cpmaddpackage(
105
- NAME
106
- Boost
107
- VERSION
108
- ${${TRY_BOOST_VERSION} }
109
- SOURCE_DIR
110
- ${BOOST_USE_MY_BOOST_DIRECTORY}
111
- PATCHES
112
- ${patches_for_boost}
113
- FIND_PACKAGE_ARGUMENTS
114
- "COMPONENTS ${ESCAPED_BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED} "
115
- OPTIONS
116
- "BOOST_ENABLE_CMAKE ON;BOOST_SKIP_INSTALL_RULES OFF;${BOOST_MY_OPTIONS} " )
108
+ CPMAddPackage(
109
+ NAME Boost
110
+ VERSION ${${TRY_BOOST_VERSION} }
111
+ SOURCE_DIR ${BOOST_USE_MY_BOOST_DIRECTORY} PATCHES ${patches_for_boost}
112
+ FIND_PACKAGE_ARGUMENTS "COMPONENTS ${ESCAPED_BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED} "
113
+ OPTIONS "BOOST_ENABLE_CMAKE ON;BOOST_SKIP_INSTALL_RULES OFF;${BOOST_MY_OPTIONS} "
114
+ )
117
115
elseif (patches_for_boost AND NOT boost_is_old) # is it 1.80.0 < x < 1.84.0
118
- cpmaddpackage(
119
- NAME
120
- Boost
121
- VERSION
122
- ${${TRY_BOOST_VERSION} }
123
- URL
124
- ${BOOST_URL}
125
- PATCHES
126
- ${patches_for_boost}
127
- FIND_PACKAGE_ARGUMENTS
128
- "COMPONENTS ${ESCAPED_BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED} "
129
- OPTIONS
130
- "BOOST_ENABLE_CMAKE ON;BOOST_SKIP_INSTALL_RULES OFF;${BOOST_MY_OPTIONS} " )
116
+ CPMAddPackage(
117
+ NAME Boost
118
+ VERSION ${${TRY_BOOST_VERSION} }
119
+ URL ${BOOST_URL} PATCHES ${patches_for_boost}
120
+ FIND_PACKAGE_ARGUMENTS "COMPONENTS ${ESCAPED_BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED} "
121
+ OPTIONS "BOOST_ENABLE_CMAKE ON;BOOST_SKIP_INSTALL_RULES OFF;${BOOST_MY_OPTIONS} "
122
+ )
131
123
elseif (NOT boost_is_old) # is it 1.85.0+ ?
132
- cpmaddpackage(
133
- NAME
134
- Boost
135
- VERSION
136
- ${${TRY_BOOST_VERSION} }
137
- URL
138
- ${BOOST_URL}
139
- FIND_PACKAGE_ARGUMENTS
140
- "COMPONENTS ${ESCAPED_BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED} "
141
- OPTIONS
142
- "BOOST_ENABLE_CMAKE ON;BOOST_SKIP_INSTALL_RULES OFF;${BOOST_MY_OPTIONS} " )
124
+ CPMAddPackage(
125
+ NAME Boost
126
+ VERSION ${${TRY_BOOST_VERSION} }
127
+ URL ${BOOST_URL}
128
+ FIND_PACKAGE_ARGUMENTS "COMPONENTS ${ESCAPED_BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED} "
129
+ OPTIONS "BOOST_ENABLE_CMAKE ON;BOOST_SKIP_INSTALL_RULES OFF;${BOOST_MY_OPTIONS} "
130
+ )
143
131
else () # is it <1.80.0 ?
144
- cpmaddpackage(
145
- NAME
146
- Boost
147
- VERSION
148
- ${${TRY_BOOST_VERSION} }
149
- GIT_REPOSITORY
150
- "https://github.com/boostorg/boost"
151
- GIT_TAG
152
- "boost-${${TRY_BOOST_VERSION} }"
153
- PATCHES
154
- ${patches_for_boost}
155
- FIND_PACKAGE_ARGUMENTS
156
- "COMPONENTS ${ESCAPED_BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED} "
157
- OPTIONS
158
- "BOOST_ENABLE_CMAKE ON;BOOST_SKIP_INSTALL_RULES OFF;${BOOST_MY_OPTIONS} " )
132
+ CPMAddPackage(
133
+ NAME Boost
134
+ VERSION ${${TRY_BOOST_VERSION} }
135
+ GIT_REPOSITORY "https://github.com/boostorg/boost"
136
+ GIT_TAG "boost-${${TRY_BOOST_VERSION} }" PATCHES ${patches_for_boost}
137
+ FIND_PACKAGE_ARGUMENTS "COMPONENTS ${ESCAPED_BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED} "
138
+ OPTIONS "BOOST_ENABLE_CMAKE ON;BOOST_SKIP_INSTALL_RULES OFF;${BOOST_MY_OPTIONS} "
139
+ )
159
140
endif ()
160
141
161
142
# set(IS_BOOST_LOCAL OFF) endif()
@@ -164,7 +145,11 @@ macro(add_boost TRY_BOOST_VERSION BOOST_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED
164
145
165
146
# Link dependencies
166
147
foreach (target IN LISTS targets_to_link_to)
167
- message (DEBUG "Boost_ADDED is defined : ${Boost_ADDED} " )
148
+ if (DEFINED Boost_LOCAL)
149
+ message (DEBUG "Boost_LOCAL is defined \$\{ Boost_LOCAL\} : ${Boost_LOCAL} " )
150
+ else ()
151
+ message (DEBUG "Boost_LOCAL is not defined." )
152
+ endif ()
168
153
if (NOT DEFINED ADDBOOSTCMAKE_LINK_TYPE)
169
154
get_target_property (type ${target} TYPE )
170
155
if ("${type} " STREQUAL "INTERFACE_LIBRARY" )
@@ -175,21 +160,19 @@ macro(add_boost TRY_BOOST_VERSION BOOST_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED
175
160
else ()
176
161
set (ADDBOOSTCMAKE_LINK_TYPE_VALUE ${ADDBOOSTCMAKE_LINK_TYPE} )
177
162
endif ()
178
- if (Boost_ADDED STREQUAL "" )
163
+ if (Boost_LOCAL STREQUAL "YES " )
179
164
target_link_libraries (${target} ${ADDBOOSTCMAKE_LINK_TYPE_VALUE} Boost::boost)
180
165
else ()
181
166
foreach (a_lib ${${BOOST_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED} })
182
- target_link_libraries (${target} ${ADDBOOSTCMAKE_LINK_TYPE_VALUE}
183
- Boost::${a_lib} )
167
+ target_link_libraries (${target} ${ADDBOOSTCMAKE_LINK_TYPE_VALUE} Boost::${a_lib} )
184
168
endforeach ()
185
169
endif ()
186
170
187
171
foreach (a_lib ${${BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED} })
188
- target_link_libraries (${target} ${ADDBOOSTCMAKE_LINK_TYPE_VALUE}
189
- Boost::${a_lib} )
172
+ target_link_libraries (${target} ${ADDBOOSTCMAKE_LINK_TYPE_VALUE} Boost::${a_lib} )
190
173
endforeach ()
191
174
endforeach ()
192
- if (Boost_ADDED STREQUAL "" )
175
+ if (Boost_LOCAL STREQUAL "YES " )
193
176
set (ADDBOOSTCMAKE_PACKAGEPROJECT_INSTALL_TARGETS
194
177
"Boost ${${TRY_BOOST_VERSION} } REQUIRED ${${BOOST_NOT_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED} }"
195
178
)
@@ -200,16 +183,19 @@ macro(add_boost TRY_BOOST_VERSION BOOST_HEADER_ONLY_COMPONENTS_THAT_YOU_NEED
200
183
)
201
184
foreach (dep ${BOOST_ALL_DEPENDENCIES} )
202
185
string (APPEND ADDBOOSTCMAKE_PACKAGEPROJECT_INSTALL_TARGETS
203
- "boost_${dep} ${${TRY_BOOST_VERSION} };" )
186
+ "boost_${dep} ${${TRY_BOOST_VERSION} };"
187
+ )
204
188
endforeach ()
205
189
string (LENGTH "${ADDBOOSTCMAKE_PACKAGEPROJECT_INSTALL_TARGETS} "
206
- ADDBOOSTCMAKE_PACKAGEPROJECT_INSTALL_TARGETS_LENGTH)
190
+ ADDBOOSTCMAKE_PACKAGEPROJECT_INSTALL_TARGETS_LENGTH
191
+ )
207
192
math (EXPR ADDBOOSTCMAKE_PACKAGEPROJECT_INSTALL_TARGETS_LENGTH
208
- "${ADDBOOSTCMAKE_PACKAGEPROJECT_INSTALL_TARGETS_LENGTH} -1"
209
- OUTPUT_FORMAT DECIMAL )
193
+ "${ADDBOOSTCMAKE_PACKAGEPROJECT_INSTALL_TARGETS_LENGTH} -1" OUTPUT_FORMAT DECIMAL
194
+ )
210
195
string (SUBSTRING "${ADDBOOSTCMAKE_PACKAGEPROJECT_INSTALL_TARGETS} " 0
211
196
${ADDBOOSTCMAKE_PACKAGEPROJECT_INSTALL_TARGETS_LENGTH}
212
- ADDBOOSTCMAKE_PACKAGEPROJECT_INSTALL_TARGETS)
197
+ ADDBOOSTCMAKE_PACKAGEPROJECT_INSTALL_TARGETS
198
+ )
213
199
endif ()
214
200
215
201
message (
0 commit comments