@cryptotaxi247 / netdata-1 / commits / bfdd2284a

Correctly handle required compilation flags for dependencies. (#17664)

`target_compile_definitions` can only be used for actual command line _macro definitions_. But the `*_CFLAGS_OTHER` may contain flags that are _not_ macro definitions, and when that happens, any use of `target_compile_definitions` with the relevant `*_CFLAGS_OTHER` variable will break the build. Instead, we should be using `target_compile_options` for these variables.

Austin S. Hemmelgarn committed May 16, 2024 at 06:47 UTC bfdd2284a63b7656296d503ffe6e0c24a943dbce
5 files changed +15 -12
CMakeLists.txt
+10 -7
@@ -1655,7 +1655,7 @@ if(MACOS)
1655 else()
1656 pkg_check_modules(ZLIB REQUIRED zlib)
1657 target_include_directories(libnetdata BEFORE PUBLIC ${ZLIB_INCLUDE_DIRS})
1658 - target_compile_definitions(libnetdata PUBLIC ${ZLIB_CFLAGS_OTHER})
1658 + target_compile_options(libnetdata PUBLIC ${ZLIB_CFLAGS_OTHER})
1659 target_link_libraries(libnetdata PUBLIC ${ZLIB_LDFLAGS})
1660 endif()
1661
@@ -1670,7 +1670,7 @@ else()
1670 endif()
1671
1672 target_include_directories(libnetdata BEFORE PUBLIC ${LIBLZ4_INCLUDE_DIRS})
1673 -target_compile_definitions(libnetdata PUBLIC ${LIBLZ4_CFLAGS_OTHER})
1673 +target_compile_options(libnetdata PUBLIC ${LIBLZ4_CFLAGS_OTHER})
1674 target_link_libraries(libnetdata PUBLIC ${LIBLZ4_LDFLAGS})
1675
1676 # zstd
@@ -1678,7 +1678,7 @@ pkg_check_modules(LIBZSTD libzstd)
1678 if(LIBZSTD_FOUND)
1679 set(ENABLE_ZSTD On)
1680 target_include_directories(libnetdata BEFORE PUBLIC ${LIBZSTD_INCLUDE_DIRS})
1681 - target_compile_definitions(libnetdata PUBLIC ${LIBZSTD_CFLAGS_OTHER})
1681 + target_compile_options(libnetdata PUBLIC ${LIBZSTD_CFLAGS_OTHER})
1682 target_link_libraries(libnetdata PUBLIC ${LIBZSTD_LDFLAGS})
1683 endif()
1684
@@ -1687,7 +1687,7 @@ pkg_check_modules(LIBBROTLI libbrotlidec libbrotlienc libbrotlicommon)
1687 if(LIBBROTLI_FOUND)
1688 set(ENABLE_BROTLI On)
1689 target_include_directories(libnetdata PUBLIC ${LIBBROTLI_INCLUDE_DIRS})
1690 - target_compile_definitions(libnetdata PUBLIC ${LIBBROTLI_CFLAGS_OTHER})
1690 + target_compile_options(libnetdata PUBLIC ${LIBBROTLI_CFLAGS_OTHER})
1691 target_link_libraries(libnetdata PUBLIC ${LIBBROTLI_LDFLAGS})
1692 endif()
1693
@@ -1698,14 +1698,14 @@ if(MACOS OR WINDOWS)
1698 else()
1699 pkg_check_modules(UUID REQUIRED uuid)
1700 target_include_directories(libnetdata BEFORE PUBLIC ${UUID_INCLUDE_DIRS})
1701 - target_compile_definitions(libnetdata PUBLIC ${UUID_CFLAGS_OTHER})
1701 + target_compile_options(libnetdata PUBLIC ${UUID_CFLAGS_OTHER})
1702 target_link_libraries(libnetdata PUBLIC ${UUID_LDFLAGS})
1703 endif()
1704
1705 # uv
1706 pkg_check_modules(LIBUV REQUIRED libuv)
1707 target_include_directories(libnetdata BEFORE PUBLIC ${LIBUV_INCLUDE_DIRS})
1708 -target_compile_definitions(libnetdata PUBLIC ${LIBUV_CFLAGS_OTHER})
1708 +target_compile_options(libnetdata PUBLIC ${LIBUV_CFLAGS_OTHER})
1709 target_link_libraries(libnetdata PUBLIC ${LIBUV_LDFLAGS})
1710
1711 # crypto
@@ -2267,6 +2267,9 @@ add_executable(netdata
2267
2268 target_compile_definitions(netdata PRIVATE
2269 "$<$<BOOL:${ENABLE_ML}>:DLIB_NO_GUI_SUPPORT>"
2270 +)
2271 +
2272 +target_compile_options(netdata PRIVATE
2273 "$<$<BOOL:${ENABLE_EXPORTER_MONGODB}>:${MONGOC_CFLAGS_OTHER}>"
2274 "$<$<BOOL:${ENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE}>:${SNAPPY_CFLAGS_OTHER}>"
2275 )
@@ -2333,7 +2336,7 @@ if(PCRE2_FOUND)
2336
2337 add_executable(log2journal ${LOG2JOURNAL_FILES})
2338 target_include_directories(log2journal BEFORE PUBLIC ${CONFIG_H_DIR} ${CMAKE_SOURCE_DIR}/src ${PCRE2_INCLUDE_DIRS})
2336 - target_compile_definitions(log2journal PUBLIC ${PCRE2_CFLAGS_OTHER})
2339 + target_compile_options(log2journal PUBLIC ${PCRE2_CFLAGS_OTHER})
2340 target_link_libraries(log2journal PUBLIC "${PCRE2_LDFLAGS}")
2341
2342 netdata_add_libyaml_to_target(log2journal)
packaging/cmake/Modules/NetdataJSONC.cmake
+1 -1
@@ -96,7 +96,7 @@ endmacro()
96 # macro must have already been run at least once for this to work correctly.
97 function(netdata_add_jsonc_to_target _target)
98 target_include_directories(${_target} PUBLIC ${NETDATA_JSONC_INCLUDE_DIRS})
99 - target_compile_definitions(${_target} PUBLIC ${NETDATA_JSONC_CFLAGS_OTHER})
99 + target_compile_options(${_target} PUBLIC ${NETDATA_JSONC_CFLAGS_OTHER})
100 target_link_libraries(${_target} PUBLIC ${NETDATA_JSONC_LDFLAGS})
101 add_dependencies(${_target} json-c-compat-link)
102 endfunction()
packaging/cmake/Modules/NetdataLibBPF.cmake
+2 -2
@@ -90,13 +90,13 @@ function(netdata_bundle_libbpf)
90 PROPERTY INTERFACE_LINK_LIBRARIES "${ELF_LIBRARIES};${ZLIB_LIBRARIES}"
91 )
92 set(NETDATA_LIBBPF_INCLUDE_DIRECTORIES "${libbpf_SOURCE_DIR}/usr/include;${libbpf_SOURCE_DIR}/include;${ELF_INCLUDE_DIRECTORIES};${ZLIB_INCLUDE_DIRECTORIES}" PARENT_SCOPE)
93 - set(NETDATA_LIBBPF_COMPILE_DEFINITIONS "${ELF_CFLAGS_OTHER};${ZLIB_CFLAGS_OTHER}" PARENT_SCOPE)
93 + set(NETDATA_LIBBPF_COMPILE_OPTIONS "${ELF_CFLAGS_OTHER};${ZLIB_CFLAGS_OTHER}" PARENT_SCOPE)
94 endfunction()
95
96 # Add libbpf as a link dependency for the given target.
97 function(netdata_add_libbpf_to_target _target)
98 target_link_libraries(${_target} PUBLIC libbpf_library)
99 target_include_directories(${_target} BEFORE PUBLIC "${NETDATA_LIBBPF_INCLUDE_DIRECTORIES}")
100 - target_compile_definitions(${_target} PUBLIC "${NETDATA_LIBBPF_COMPILE_DEFINITIONS}")
100 + target_compile_options(${_target} PUBLIC "${NETDATA_LIBBPF_COMPILE_OPTIONS}")
101 add_dependencies(${_target} libbpf)
102 endfunction()
packaging/cmake/Modules/NetdataProtobuf.cmake
+1 -1
@@ -165,7 +165,7 @@ endfunction()
165
166 # Add protobuf to a specified target.
167 function(netdata_add_protobuf _target)
168 - target_compile_definitions(${_target} PRIVATE ${PROTOBUF_CFLAGS_OTHER})
168 + target_compile_options(${_target} PRIVATE ${PROTOBUF_CFLAGS_OTHER})
169 target_include_directories(${_target} PRIVATE ${PROTOBUF_INCLUDE_DIRS})
170 target_link_libraries(${_target} PRIVATE ${PROTOBUF_LIBRARIES})
171 endfunction()
packaging/cmake/Modules/NetdataYAML.cmake
+1 -1
@@ -60,6 +60,6 @@ endmacro()
60 # macro must have already been run at least once for this to work correctly.
61 function(netdata_add_libyaml_to_target _target)
62 target_include_directories(${_target} PUBLIC ${NETDATA_YAML_INCLUDE_DIRS})
63 - target_compile_definitions(${_target} PUBLIC ${NETDATA_YAML_CFLAGS_OTHER})
63 + target_compile_options(${_target} PUBLIC ${NETDATA_YAML_CFLAGS_OTHER})
64 target_link_libraries(${_target} PUBLIC ${NETDATA_YAML_LDFLAGS})
65 endfunction()