Skip to content

Commit 9919e92

Browse files
committed
cmake: Add optional sources to minisketch library directly
This change eliminates the questionable use of an `OBJECT` library and removes the corresponding workaround for a CMake bug.
1 parent 28dec6c commit 9919e92

File tree

1 file changed

+22
-30
lines changed

1 file changed

+22
-30
lines changed

cmake/minisketch.cmake

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,6 @@ check_cxx_source_compiles_with_flags("${CLMUL_CXXFLAGS}" "
2525
)
2626

2727
add_library(minisketch_common INTERFACE)
28-
target_compile_definitions(minisketch_common INTERFACE
29-
DISABLE_DEFAULT_FIELDS
30-
ENABLE_FIELD_32
31-
)
3228
if(MSVC)
3329
target_compile_options(minisketch_common INTERFACE
3430
/wd4060
@@ -39,29 +35,6 @@ if(MSVC)
3935
)
4036
endif()
4137

42-
if(HAVE_CLMUL)
43-
add_library(minisketch_clmul OBJECT EXCLUDE_FROM_ALL
44-
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_1byte.cpp
45-
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_2bytes.cpp
46-
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_3bytes.cpp
47-
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_4bytes.cpp
48-
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_5bytes.cpp
49-
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_6bytes.cpp
50-
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_7bytes.cpp
51-
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_8bytes.cpp
52-
)
53-
target_compile_definitions(minisketch_clmul PUBLIC HAVE_CLMUL)
54-
target_compile_options(minisketch_clmul PRIVATE ${CLMUL_CXXFLAGS})
55-
target_link_libraries(minisketch_clmul
56-
PRIVATE
57-
core_interface
58-
minisketch_common
59-
)
60-
set_target_properties(minisketch_clmul PROPERTIES
61-
EXPORT_COMPILE_COMMANDS OFF
62-
)
63-
endif()
64-
6538
add_library(minisketch STATIC EXCLUDE_FROM_ALL
6639
${PROJECT_SOURCE_DIR}/src/minisketch/src/minisketch.cpp
6740
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/generic_1byte.cpp
@@ -74,8 +47,11 @@ add_library(minisketch STATIC EXCLUDE_FROM_ALL
7447
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/generic_8bytes.cpp
7548
)
7649

77-
# Workaround for https://gitlab.kitware.com/cmake/cmake/-/issues/24058
78-
set_target_properties(minisketch PROPERTIES OPTIMIZE_DEPENDENCIES OFF)
50+
target_compile_definitions(minisketch
51+
PRIVATE
52+
DISABLE_DEFAULT_FIELDS
53+
ENABLE_FIELD_32
54+
)
7955

8056
target_include_directories(minisketch
8157
PUBLIC
@@ -86,9 +62,25 @@ target_link_libraries(minisketch
8662
PRIVATE
8763
core_interface
8864
minisketch_common
89-
$<TARGET_NAME_IF_EXISTS:minisketch_clmul>
9065
)
9166

9267
set_target_properties(minisketch PROPERTIES
9368
EXPORT_COMPILE_COMMANDS OFF
9469
)
70+
71+
if(HAVE_CLMUL)
72+
set(_minisketch_clmul_src
73+
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_1byte.cpp
74+
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_2bytes.cpp
75+
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_3bytes.cpp
76+
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_4bytes.cpp
77+
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_5bytes.cpp
78+
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_6bytes.cpp
79+
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_7bytes.cpp
80+
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_8bytes.cpp
81+
)
82+
target_sources(minisketch PRIVATE ${_minisketch_clmul_src})
83+
set_property(SOURCE ${_minisketch_clmul_src} PROPERTY COMPILE_OPTIONS ${CLMUL_CXXFLAGS})
84+
target_compile_definitions(minisketch PRIVATE HAVE_CLMUL)
85+
unset(_minisketch_clmul_src)
86+
endif()

0 commit comments

Comments
 (0)