Skip to content

Commit 9cf746d

Browse files
committed
cmake: add optional source files to crc32c directly
1 parent 9c7823c commit 9cf746d

File tree

1 file changed

+14
-25
lines changed

1 file changed

+14
-25
lines changed

cmake/crc32c.cmake

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -78,46 +78,35 @@ check_cxx_source_compiles_with_flags("${ARM64_CRC_CXXFLAGS}" "
7878
" HAVE_ARM64_CRC32C
7979
)
8080

81-
add_library(crc32c_common INTERFACE)
82-
target_compile_definitions(crc32c_common INTERFACE
81+
add_library(crc32c STATIC EXCLUDE_FROM_ALL
82+
${PROJECT_SOURCE_DIR}/src/crc32c/src/crc32c.cc
83+
${PROJECT_SOURCE_DIR}/src/crc32c/src/crc32c_portable.cc
84+
)
85+
target_compile_definitions(crc32c PRIVATE
8386
HAVE_BUILTIN_PREFETCH=$<BOOL:${HAVE_BUILTIN_PREFETCH}>
8487
HAVE_MM_PREFETCH=$<BOOL:${HAVE_MM_PREFETCH}>
8588
HAVE_STRONG_GETAUXVAL=$<BOOL:${HAVE_STRONG_GETAUXVAL}>
8689
BYTE_ORDER_BIG_ENDIAN=$<STREQUAL:${CMAKE_CXX_BYTE_ORDER},BIG_ENDIAN>
8790
HAVE_SSE42=$<BOOL:${HAVE_SSE42}>
8891
HAVE_ARM64_CRC32C=$<BOOL:${HAVE_ARM64_CRC32C}>
8992
)
90-
target_link_libraries(crc32c_common INTERFACE
91-
core_interface
92-
)
93-
94-
add_library(crc32c STATIC EXCLUDE_FROM_ALL
95-
${PROJECT_SOURCE_DIR}/src/crc32c/src/crc32c.cc
96-
${PROJECT_SOURCE_DIR}/src/crc32c/src/crc32c_portable.cc
97-
)
9893
target_include_directories(crc32c
9994
PUBLIC
10095
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/crc32c/include>
10196
)
102-
target_link_libraries(crc32c PRIVATE crc32c_common)
97+
target_link_libraries(crc32c PRIVATE core_interface)
10398
set_target_properties(crc32c PROPERTIES EXPORT_COMPILE_COMMANDS OFF)
10499

105100
if(HAVE_SSE42)
106-
add_library(crc32c_sse42 STATIC EXCLUDE_FROM_ALL
107-
${PROJECT_SOURCE_DIR}/src/crc32c/src/crc32c_sse42.cc
108-
)
109-
target_compile_options(crc32c_sse42 PRIVATE ${SSE42_CXXFLAGS})
110-
target_link_libraries(crc32c_sse42 PRIVATE crc32c_common)
111-
set_target_properties(crc32c_sse42 PROPERTIES EXPORT_COMPILE_COMMANDS OFF)
112-
target_link_libraries(crc32c PRIVATE crc32c_sse42)
101+
set(_crc32_src ${PROJECT_SOURCE_DIR}/src/crc32c/src/crc32c_sse42.cc)
102+
target_sources(crc32c PRIVATE ${_crc32_src})
103+
set_property(SOURCE ${_crc32_src} PROPERTY COMPILE_OPTIONS ${SSE42_CXXFLAGS})
113104
endif()
114105

115106
if(HAVE_ARM64_CRC32C)
116-
add_library(crc32c_arm64 STATIC EXCLUDE_FROM_ALL
117-
${PROJECT_SOURCE_DIR}/src/crc32c/src/crc32c_arm64.cc
118-
)
119-
target_compile_options(crc32c_arm64 PRIVATE ${ARM64_CRC_CXXFLAGS})
120-
target_link_libraries(crc32c_arm64 PRIVATE crc32c_common)
121-
set_target_properties(crc32c_arm64 PROPERTIES EXPORT_COMPILE_COMMANDS OFF)
122-
target_link_libraries(crc32c PRIVATE crc32c_arm64)
107+
set(_crc32_src ${PROJECT_SOURCE_DIR}/src/crc32c/src/crc32c_arm64.cc)
108+
target_sources(crc32c PRIVATE ${_crc32_src})
109+
set_property(SOURCE ${_crc32_src} PROPERTY COMPILE_OPTIONS ${ARM64_CRC_CXXFLAGS})
123110
endif()
111+
112+
unset(_crc32_src)

0 commit comments

Comments
 (0)