Skip to content

Commit

Permalink
cmake: Add optional sources to minisketch library directly
Browse files Browse the repository at this point in the history
This change eliminates the questionable use of an `OBJECT` library and
removes the corresponding workaround for a CMake bug.
  • Loading branch information
hebasto committed Feb 18, 2025
1 parent 28dec6c commit 9919e92
Showing 1 changed file with 22 additions and 30 deletions.
52 changes: 22 additions & 30 deletions cmake/minisketch.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,6 @@ check_cxx_source_compiles_with_flags("${CLMUL_CXXFLAGS}" "
)

add_library(minisketch_common INTERFACE)
target_compile_definitions(minisketch_common INTERFACE
DISABLE_DEFAULT_FIELDS
ENABLE_FIELD_32
)
if(MSVC)
target_compile_options(minisketch_common INTERFACE
/wd4060
Expand All @@ -39,29 +35,6 @@ if(MSVC)
)
endif()

if(HAVE_CLMUL)
add_library(minisketch_clmul OBJECT EXCLUDE_FROM_ALL
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_1byte.cpp
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_2bytes.cpp
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_3bytes.cpp
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_4bytes.cpp
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_5bytes.cpp
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_6bytes.cpp
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_7bytes.cpp
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_8bytes.cpp
)
target_compile_definitions(minisketch_clmul PUBLIC HAVE_CLMUL)
target_compile_options(minisketch_clmul PRIVATE ${CLMUL_CXXFLAGS})
target_link_libraries(minisketch_clmul
PRIVATE
core_interface
minisketch_common
)
set_target_properties(minisketch_clmul PROPERTIES
EXPORT_COMPILE_COMMANDS OFF
)
endif()

add_library(minisketch STATIC EXCLUDE_FROM_ALL
${PROJECT_SOURCE_DIR}/src/minisketch/src/minisketch.cpp
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/generic_1byte.cpp
Expand All @@ -74,8 +47,11 @@ add_library(minisketch STATIC EXCLUDE_FROM_ALL
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/generic_8bytes.cpp
)

# Workaround for https://gitlab.kitware.com/cmake/cmake/-/issues/24058
set_target_properties(minisketch PROPERTIES OPTIMIZE_DEPENDENCIES OFF)
target_compile_definitions(minisketch
PRIVATE
DISABLE_DEFAULT_FIELDS
ENABLE_FIELD_32
)

target_include_directories(minisketch
PUBLIC
Expand All @@ -86,9 +62,25 @@ target_link_libraries(minisketch
PRIVATE
core_interface
minisketch_common
$<TARGET_NAME_IF_EXISTS:minisketch_clmul>
)

set_target_properties(minisketch PROPERTIES
EXPORT_COMPILE_COMMANDS OFF
)

if(HAVE_CLMUL)
set(_minisketch_clmul_src
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_1byte.cpp
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_2bytes.cpp
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_3bytes.cpp
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_4bytes.cpp
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_5bytes.cpp
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_6bytes.cpp
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_7bytes.cpp
${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_8bytes.cpp
)
target_sources(minisketch PRIVATE ${_minisketch_clmul_src})
set_property(SOURCE ${_minisketch_clmul_src} PROPERTY COMPILE_OPTIONS ${CLMUL_CXXFLAGS})
target_compile_definitions(minisketch PRIVATE HAVE_CLMUL)
unset(_minisketch_clmul_src)
endif()

0 comments on commit 9919e92

Please sign in to comment.