66
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/packaging/cmake/Modules")
67
include(CMakeDependentOption)
68
69
+if(DEFINED BUILD_SHARED_LIBS)
70
+ if(NOT BUILD_SHARED_LIBS)
71
+ set(STATIC_BUILD TRUE)
72
+ endif()
73
+endif()
74
+
75
+if(STATIC_BUILD)
76
+ set(CMAKE_FIND_LIBRARY_PREFIXES "${CMAKE_STATIC_LIBRARY_PREFIX}")
77
+ set(CMAKE_FIND_LIBRARY_SUFFIXES "${CMAKE_STATIC_LIBRARY_SUFFIX}")
78
+endif()
79
+
80
find_package(PkgConfig REQUIRED)
81
82
+if(STATIC_BUILD)
83
+ list(APPEND PKG_CONFIG_EXECUTABLE "--static")
84
+endif()
85
+
86
set(CMAKE_C_STANDARD 11)
87
set(CMAKE_CXX_STANDARD 14)
88
set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "netdata")
562
563
# openssl/crypto
564
set(ENABLE_OPENSSL True)
550
-pkg_check_modules(OPENSSL openssl)
565
+pkg_check_modules(TLS IMPORTED_TARGET openssl)
566
552
-if(NOT OPENSSL_FOUND)
567
+if(NOT TARGET PkgConfig::TLS)
568
if(MACOS)
569
execute_process(COMMAND
570
brew --prefix --installed openssl
576
message(FATAL_ERROR "OpenSSL (or LibreSSL) is required for building Netdata, but could not be found.")
577
endif()
578
564
- set(OPENSSL_INCLUDE_DIRS "${BREW_OPENSSL_PREFIX}/include")
565
- set(OPENSSL_CFLAGS_OTHER "")
566
- set(OPENSSL_LDFLAGS "-L${BREW_OPENSSL_PREFIX}/lib;-lssl;-lcrypto")
579
+ add_library(PkgConfig::CRYPTO IMPORTED)
580
+ set_target_properties(PkgConfig::CRYPTO
581
+ IMPORTED_LOCATION ${BREW_OPENSSL_PREFIX}/lib/libcrypto.dylib
582
+ INTERFACE_INCLUDE_DIRECTORIES ${BREW_OPENSSL_PREFIX}/include)
583
+
584
+ add_library(PkgConfig::TLS IMPORTED)
585
+ set_target_properties(PkgConfig::TLS
586
+ IMPORTED_LOCATION ${BREW_OPENSSL_PREFIX}/lib/libssl.dylib
587
+ INTERFACE_LINK_LIBRARIES PkgConfig::CRYPTO
588
+ INTERFACE_INCLUDE_DIRECTORIES ${BREW_OPENSSL_PREFIX}/include)
589
else()
590
message(FATAL_ERROR "OpenSSL (or LibreSSL) is required for building Netdata, but could not be found.")
591
endif()
592
+else()
593
+ pkg_check_modules(CRYPTO IMPORTED_TARGET REQUIRED libcrypto)
594
endif()
595
572
-if(NOT MACOS)
573
- pkg_check_modules(CRYPTO libcrypto)
574
-endif()
596
597
#
598
# figure out if we need protoc/protobuf
1597
)
1598
1599
target_compile_options(h2o PUBLIC -DH2O_USE_LIBUV=0)
1579
-
1580
- target_include_directories(h2o BEFORE PRIVATE ${OPENSSL_INCLUDE_DIRS})
1581
- target_compile_options(h2o PRIVATE ${OPENSSL_CFLAGS_OTHER})
1582
- target_link_libraries(h2o PRIVATE ${OPENSSL_LIBRARIES})
1600
+ target_link_libraries(h2o PRIVATE PkgConfig::TLS)
1601
endif()
1602
1603
#
1731
target_link_libraries(libnetdata PUBLIC ${LIBUV_LDFLAGS})
1732
1733
# crypto
1716
-target_include_directories(libnetdata BEFORE PUBLIC ${CRYPTO_INCLUDE_DIRS})
1717
-target_compile_options(libnetdata PUBLIC ${CRYPTO_CFLAGS_OTHER})
1718
-target_link_libraries(libnetdata PUBLIC ${CRYPTO_LDFLAGS})
1734
+target_link_libraries(libnetdata PUBLIC PkgConfig::CRYPTO)
1735
1736
# openssl
1721
-target_include_directories(libnetdata BEFORE PUBLIC ${OPENSSL_INCLUDE_DIRS})
1722
-target_compile_options(libnetdata PUBLIC ${OPENSSL_CFLAGS_OTHER})
1723
-target_link_libraries(libnetdata PUBLIC ${OPENSSL_LDFLAGS})
1737
+target_link_libraries(libnetdata PUBLIC PkgConfig::TLS)
1738
1739
# mnl
1740
if(NOT MACOS)