Skip to content
This repository was archived by the owner on Dec 21, 2023. It is now read-only.

Commit c77f6be

Browse files
author
Guihao Liang
authored
set 0045 0046 new (#3066)
* make 0045 0046 new
1 parent c7cdb86 commit c77f6be

File tree

3 files changed

+138
-90
lines changed

3 files changed

+138
-90
lines changed

cmake/MakeLibrary.cmake

Lines changed: 124 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
2-
# This is an internal function and should not be used
3-
# Usage:
1+
# This is an internal function and should not be used Usage:
42
# make_target_impl(target compile_flags sources requirements is_library SHARED)
53
#
4+
# cmake-format: off
65
# Example:
76
# make_target_impl(fileio "-fPIC"
87
# "asyncurl.cpp;sysutils.cpp"
@@ -11,17 +10,26 @@
1110
#
1211
# This generates a target library/binary with the given name. The optional
1312
# compile_flags are appended to the target compile flags. "-fPIC" is ALWAYS
14-
# added for libraries. "sources" is a list listing all the library/binary
15-
# source files. "requirements" is a list listing all the libraries, and
16-
# builtins this target depends on. IS_LIBRARY must be "TRUE" or "FALSE"
13+
# added for libraries. "sources" is a list listing all the library/binary source
14+
# files. "requirements" is a list listing all the libraries, and builtins this
15+
# target depends on. IS_LIBRARY must be "TRUE" or "FALSE"
1716
#
1817
# if DYNAMIC is true, a dynamic library is built.
1918
#
20-
# Boost, pthread is always added as a default dependency.
21-
# when possible.
22-
macro(make_target_impl NAME FLAGS REQUIREMENTS IS_LIBRARY SHARED SHARED_ALL_DEFINED OBJECT)
19+
# Boost, pthread is always added as a default dependency. when possible.
20+
# cmake-format: on
21+
22+
macro(
23+
make_target_impl
24+
NAME
25+
FLAGS
26+
REQUIREMENTS
27+
IS_LIBRARY
28+
SHARED
29+
SHARED_ALL_DEFINED
30+
OBJECT)
2331
# create the target
24-
if (${IS_LIBRARY})
32+
if(${IS_LIBRARY})
2533
message(STATUS "Adding Library: ${NAME}")
2634
else()
2735
message(STATUS "Adding Executable: ${NAME}")
@@ -33,46 +41,56 @@ macro(make_target_impl NAME FLAGS REQUIREMENTS IS_LIBRARY SHARED SHARED_ALL_DEFI
3341

3442
# add a custom property to the target listing its dependencies
3543
if(NOT ${FLAGS} STREQUAL "")
36-
set_property(TARGET ${NAME} APPEND_STRING PROPERTY COMPILE_FLAGS " ${FLAGS}")
44+
set_property(TARGET ${NAME} APPEND_STRING PROPERTY COMPILE_FLAGS
45+
" ${FLAGS}")
3746
endif()
38-
if (${IS_LIBRARY})
39-
if (NOT WIN32)
40-
#windows is always fPIC
47+
if(${IS_LIBRARY})
48+
if(NOT WIN32)
49+
# windows is always fPIC
4150
set_property(TARGET ${NAME} APPEND_STRING PROPERTY COMPILE_FLAGS " -fPIC")
4251
endif()
43-
if (APPLE)
44-
if (${SHARED})
45-
if (NOT ${SHARED_ALL_DEFINED})
46-
set_property(TARGET ${NAME} APPEND_STRING PROPERTY LINK_FLAGS " -undefined dynamic_lookup")
52+
if(APPLE)
53+
if(${SHARED})
54+
if(NOT ${SHARED_ALL_DEFINED})
55+
set_property(TARGET ${NAME} APPEND_STRING
56+
PROPERTY LINK_FLAGS " -undefined dynamic_lookup")
4757
endif()
4858
endif()
4959
endif()
5060
endif()
5161

52-
if (${IS_LIBRARY})
62+
if(${IS_LIBRARY})
5363
if(${SHARED})
5464
target_link_libraries(${NAME} PRIVATE ${REQUIREMENTS})
5565
elseif(${OBJECT})
5666
# TODO we can link the requirements from here when target_link_libraries
57-
# works with OBJECT library targets (requires CMake 3.12)
58-
# See https://gitlab.kitware.com/cmake/cmake/issues/14778
59-
# For now, do nothing.
67+
# works with OBJECT library targets (requires CMake 3.12) See
68+
# https://gitlab.kitware.com/cmake/cmake/issues/14778 For now, do nothing.
6069
else()
6170
target_link_libraries(${NAME} PUBLIC ${REQUIREMENTS})
6271
endif()
6372
else()
6473
target_link_libraries(${NAME} PUBLIC ${REQUIREMENTS})
6574
endif()
66-
67-
# Ensure dependencies are tracked in order to make sure compilation order matters.
68-
add_dependencies(${NAME} "${REQUIREMENTS}")
69-
75+
76+
# Ensure dependencies are tracked in order to make sure compilation order
77+
# matters.
78+
if(REQUIREMENTS)
79+
add_dependencies(${NAME} ${REQUIREMENTS})
80+
endif()
81+
7082
# make sure dependencies are always built first
71-
add_dependencies(${NAME} "${_TC_EXTERNAL_DEPENDENCIES}")
72-
add_dependencies(${NAME} external_dependencies)
73-
endmacro()
83+
if(TC_EXTERNAL_DEPENDENCIES)
84+
add_dependencies(${NAME} ${TC_EXTERNAL_DEPENDENCIES})
85+
endif()
7486

87+
if(external_dependencies)
88+
add_dependencies(${NAME} external_dependencies)
89+
endif()
90+
91+
endmacro()
7592

93+
# cmake-format: off
7694
# This is an external function
7795
# Usage:
7896
# make_library(NAME target
@@ -116,15 +134,24 @@ endmacro()
116134
#
117135
# Boost, pthread is always added as a default dependency.
118136
# when possible.
137+
# cmake-format: on
138+
119139
macro(make_library NAME)
120140
set(options SHARED EXTERNAL_VISIBILITY SHARED_ALL_DEFINED DEAD_STRIP OBJECT)
121-
set(one_value_args COMPILE_FLAGS OUTPUT_NAME EXPORT_LINUX_MAP_FILE EXPORT_OSX_MAP_FILE)
141+
set(one_value_args COMPILE_FLAGS OUTPUT_NAME EXPORT_LINUX_MAP_FILE
142+
EXPORT_OSX_MAP_FILE)
122143
set(multi_value_args
123-
SOURCES REQUIRES MAC_REQUIRES LINUX_REQUIRES
124-
COMPILE_FLAGS_EXTRA COMPILE_FLAGS_EXTRA_CLANG COMPILE_FLAGS_EXTRA_GCC)
125-
CMAKE_PARSE_ARGUMENTS(make_library "${options}" "${one_value_args}" "${multi_value_args}" ${ARGN})
144+
SOURCES
145+
REQUIRES
146+
MAC_REQUIRES
147+
LINUX_REQUIRES
148+
COMPILE_FLAGS_EXTRA
149+
COMPILE_FLAGS_EXTRA_CLANG
150+
COMPILE_FLAGS_EXTRA_GCC)
151+
cmake_parse_arguments(make_library "${options}" "${one_value_args}"
152+
"${multi_value_args}" ${ARGN})
126153
if(NOT make_library_SOURCES)
127-
MESSAGE(FATAL_ERROR "make_library call with no sources")
154+
message(FATAL_ERROR "make_library call with no sources")
128155
endif()
129156

130157
if(TC_DISABLE_OBJECT_BUILDS)
@@ -143,91 +170,113 @@ macro(make_library NAME)
143170
endforeach()
144171
endif()
145172

146-
if (APPLE)
147-
if (make_library_MAC_REQUIRES)
148-
set(make_library_REQUIRES ${make_library_REQUIRES} ${make_library_MAC_REQUIRES})
173+
if(APPLE)
174+
if(make_library_MAC_REQUIRES)
175+
set(make_library_REQUIRES ${make_library_REQUIRES}
176+
${make_library_MAC_REQUIRES})
149177
endif()
150178
else()
151-
if (make_library_LINUX_REQUIRES)
152-
set(make_library_REQUIRES ${make_library_REQUIRES} ${make_library_LINUX_REQUIRES})
179+
if(make_library_LINUX_REQUIRES)
180+
set(make_library_REQUIRES ${make_library_REQUIRES}
181+
${make_library_LINUX_REQUIRES})
153182
endif()
154183
endif()
155184

156-
if (${make_library_SHARED})
185+
if(${make_library_SHARED})
157186
add_library(${NAME} SHARED ${make_library_SOURCES})
158187
elseif(${make_library_OBJECT})
159188
add_library(${NAME} OBJECT ${make_library_SOURCES})
160189
else()
161190
add_library(${NAME} STATIC ${make_library_SOURCES})
162191
endif()
163192

164-
make_target_impl("${NAME}" "${make_library_COMPILE_FLAGS}"
165-
"${make_library_REQUIRES}" TRUE "${make_library_SHARED}" "${make_library_SHARED_ALL_DEFINED}" "${make_library_OBJECT}")
193+
make_target_impl(
194+
"${NAME}"
195+
"${make_library_COMPILE_FLAGS}"
196+
"${make_library_REQUIRES}"
197+
TRUE
198+
"${make_library_SHARED}"
199+
"${make_library_SHARED_ALL_DEFINED}"
200+
"${make_library_OBJECT}")
166201

167-
if (make_library_OUTPUT_NAME)
168-
message(STATUS "make_library ${NAME} ===> ${make_library_OUTPUT_NAME}")
169-
set_target_properties(${NAME} PROPERTIES OUTPUT_NAME ${make_library_OUTPUT_NAME})
202+
if(make_library_OUTPUT_NAME)
203+
message(STATUS "make_library ${NAME} ===> ${make_library_OUTPUT_NAME}")
204+
set_target_properties(${NAME} PROPERTIES OUTPUT_NAME
205+
${make_library_OUTPUT_NAME})
170206
endif()
171207

172-
if (make_library_COMPILE_FLAGS_EXTRA)
208+
if(make_library_COMPILE_FLAGS_EXTRA)
173209
target_compile_options(${NAME} PRIVATE ${make_library_COMPILE_FLAGS_EXTRA})
174210
endif()
175211

176-
if (CLANG)
177-
if (make_library_COMPILE_FLAGS_EXTRA_CLANG)
178-
target_compile_options(${NAME} PRIVATE ${make_library_COMPILE_FLAGS_EXTRA_CLANG})
212+
if(CLANG)
213+
if(make_library_COMPILE_FLAGS_EXTRA_CLANG)
214+
target_compile_options(${NAME}
215+
PRIVATE ${make_library_COMPILE_FLAGS_EXTRA_CLANG})
179216
endif()
180217
endif()
181218

182-
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
183-
if (make_library_COMPILE_FLAGS_EXTRA_GCC)
184-
target_compile_options(${NAME} PRIVATE ${make_library_COMPILE_FLAGS_EXTRA_GCC})
219+
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
220+
if(make_library_COMPILE_FLAGS_EXTRA_GCC)
221+
target_compile_options(${NAME}
222+
PRIVATE ${make_library_COMPILE_FLAGS_EXTRA_GCC})
185223
endif()
186224
endif()
187225

188-
if (${make_library_EXTERNAL_VISIBILITY} OR ${make_library_OBJECT})
226+
if(${make_library_EXTERNAL_VISIBILITY} OR ${make_library_OBJECT})
189227
# do nothing
190228
message(STATUS "External Visibility: " ${NAME})
191229
target_compile_options(${NAME} PRIVATE "-fvisibility=default")
192-
target_compile_options(${NAME} PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-fvisibility-inlines-hidden>)
230+
target_compile_options(
231+
${NAME} PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-fvisibility-inlines-hidden>)
193232
else()
194233
target_compile_options(${NAME} PRIVATE "-fvisibility=hidden")
195-
target_compile_options(${NAME} PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-fvisibility-inlines-hidden>)
234+
target_compile_options(
235+
${NAME} PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-fvisibility-inlines-hidden>)
196236
endif()
197237

198238
if(NOT CLANG)
199-
if (NOT WIN32)
200-
# set_property(TARGET ${NAME} APPEND_STRING PROPERTY LINK_FLAGS " -static-libstdc++ ")
239+
if(NOT WIN32)
240+
# set_property(TARGET ${NAME} APPEND_STRING PROPERTY LINK_FLAGS " -static-
241+
# libstdc++ ")
201242
endif()
202243
endif()
203244

204245
if(APPLE)
205-
if(make_library_EXPORT_OSX_MAP_FILE)
206-
set_property(TARGET ${NAME} APPEND PROPERTY LINK_DEPENDS "${make_library_EXPORT_OSX_MAP_FILE}")
207-
set_property(TARGET ${NAME} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-exported_symbols_list,${make_library_EXPORT_OSX_MAP_FILE} ")
208-
endif()
246+
if(make_library_EXPORT_OSX_MAP_FILE)
247+
set_property(TARGET ${NAME} APPEND
248+
PROPERTY LINK_DEPENDS "${make_library_EXPORT_OSX_MAP_FILE}")
249+
set_property(
250+
TARGET ${NAME} APPEND_STRING
251+
PROPERTY
252+
LINK_FLAGS
253+
" -Wl,-exported_symbols_list,${make_library_EXPORT_OSX_MAP_FILE} ")
254+
endif()
209255

210-
if(make_library_DEAD_STRIP)
211-
set_property(TARGET ${NAME} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-dead_strip")
212-
endif()
256+
if(make_library_DEAD_STRIP)
257+
set_property(TARGET ${NAME} APPEND_STRING PROPERTY LINK_FLAGS
258+
" -Wl,-dead_strip")
259+
endif()
213260

214-
else()
215-
if(make_library_EXPORT_LINUX_MAP_FILE)
216-
set_property(TARGET ${NAME} APPEND PROPERTY LINK_DEPENDS "${make_library_EXPORT_LINUX_MAP_FILE}")
217-
set_property(TARGET ${NAME} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--version-script=${make_library_EXPORT_LINUX_MAP_FILE} ")
261+
else()
262+
if(make_library_EXPORT_LINUX_MAP_FILE)
263+
set_property(
264+
TARGET ${NAME} APPEND PROPERTY LINK_DEPENDS
265+
"${make_library_EXPORT_LINUX_MAP_FILE}")
266+
set_property(
267+
TARGET ${NAME} APPEND_STRING
268+
PROPERTY LINK_FLAGS
269+
" -Wl,--version-script=${make_library_EXPORT_LINUX_MAP_FILE} ")
270+
endif()
218271
endif()
219-
endif()
220272

221273
endmacro()
222274

223-
# Creates an empty library to use as a dependency placeholder.
224-
#
225-
# Usage:
226-
# make_empty_library(NAME)
227-
#
275+
# Creates an empty library to use as a dependency placeholder.
276+
#
277+
# Usage: make_empty_library(NAME)
228278
#
229279
# will automatically include all recursive dependencies.
230280
macro(make_empty_library NAME)
231281
add_library(${NAME} INTERFACE)
232282
endmacro()
233-

deps/cmake/ExternalProjectLibXML2.cmake

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ endif()
2121

2222
ExternalProject_Add(ex_libxml2
2323
PREFIX ${CMAKE_SOURCE_DIR}/deps/build/libxml2
24-
URL ${CMAKE_SOURCE_DIR}/deps/src/libxml2-2.9.1/
24+
URL ${CMAKE_SOURCE_DIR}/deps/src/libxml2-2.9.1/
2525
INSTALL_DIR ${CMAKE_SOURCE_DIR}/deps/local
2626
CONFIGURE_COMMAND bash -c "${__SDKCMD} CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} CFLAGS=\"${__ARCH_FLAG} ${CMAKE_C_FLAGS} -w -Wno-everything\" <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --enable-shared=no --enable-static=yes --without-lzma --libdir=<INSTALL_DIR>/lib --with-python=./ ${EXTRA_CONFIGURE_FLAGS}"
2727
BUILD_COMMAND cp <SOURCE_DIR>/testchar.c <SOURCE_DIR>/testapi.c && ${__SDKCMD} make
@@ -30,16 +30,15 @@ ExternalProject_Add(ex_libxml2
3030
# the with-python=./ prevents it from trying to build/install some python stuff
3131
# which is poorly installed (always ways to stick it in a system directory)
3232
include_directories(${CMAKE_SOURCE_DIR}/deps/local/include/libxml2)
33-
add_dependencies(ex_libxml2 ex_libz)
3433

3534
add_library(libxml2a STATIC IMPORTED)
3635
set_property(TARGET libxml2a PROPERTY IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/deps/local/lib/libxml2.a)
3736

3837
add_library(libxml2 INTERFACE )
3938
add_dependencies(libxml2 ex_libxml2)
40-
target_link_libraries(libxml2 INTERFACE libxml2a z)
39+
target_link_libraries(libxml2 INTERFACE libxml2a)
4140
if(WIN32)
42-
target_link_libraries(libxml2 INTERFACE iconv ws2_32 z)
41+
target_link_libraries(libxml2 INTERFACE iconv ws2_32)
4342
endif()
4443
target_compile_definitions(libxml2 INTERFACE HAS_LIBXML2)
4544
set(HAS_LIBXML2 TRUE CACHE BOOL "")

0 commit comments

Comments
 (0)