1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
diff --git a/lib60870-C/CMakeLists.txt b/lib60870-C/CMakeLists.txt
index ab1007d..498a8b0 100644
--- a/lib60870-C/CMakeLists.txt
+++ b/lib60870-C/CMakeLists.txt
@@ -27,6 +27,9 @@ include(CheckLibraryExists)
include (TestBigEndian)
test_big_endian(PLATFORM_IS_BIGENDIAN)
+# GNUInstallDirs is required for Debian multiarch
+include(GNUInstallDirs)
+
option(BUILD_HAL "Build the platform abstraction layer (HAL)" ON)
option(BUILD_COMMON "Build common code (shared with other libraries - e.g. libiec61850)" ON)
@@ -35,23 +38,15 @@ option(BUILD_TESTS "Build the tests" ON)
if(BUILD_HAL)
-## Detect mbedtls dependency folders. Accept folder names with patch/minor suffixes
-set(MBEDTLS_DIR "")
-file(GLOB MBEDTLS_2_28_CANDIDATES "${CMAKE_CURRENT_LIST_DIR}/dependencies/mbedtls-2.28*")
-file(GLOB MBEDTLS_3_6_CANDIDATES "${CMAKE_CURRENT_LIST_DIR}/dependencies/mbedtls-3.6*")
+option(WITH_MBEDTLS "Build with Mbed TLS support" OFF)
+option(WITH_MBEDTLS3 "Build with Mbed TLS 3 support" ON)
-if(MBEDTLS_2_28_CANDIDATES)
- list(GET MBEDTLS_2_28_CANDIDATES 0 MBEDTLS_DIR)
- set(WITH_MBEDTLS 1)
+if(WITH_MBEDTLS)
set(WITH_SEC_AUTH 1)
add_definitions(-DWITH_MBEDTLS=1)
- message("mbedtls 2.28 found: ${MBEDTLS_DIR}")
-elseif(MBEDTLS_3_6_CANDIDATES)
- list(GET MBEDTLS_3_6_CANDIDATES 0 MBEDTLS_DIR)
- set(WITH_MBEDTLS3 1)
+elseif(WITH_MBEDTLS3)
set(WITH_SEC_AUTH 1)
add_definitions(-DWITH_MBEDTLS3=1)
- message("mbedtls 3.6 found: ${MBEDTLS_DIR}")
else()
message("NOTE: mbedtls 2.28 or 3.6 is required for TLS support and secure authentication!")
endif()
@@ -67,20 +62,16 @@ include_directories(
${CMAKE_CURRENT_LIST_DIR}/src/hal/inc
)
-if(MBEDTLS_DIR)
+if(WITH_MBEDTLS OR WITH_MBEDTLS3)
# choose appropriate HAL adapter (mbedtls vs mbedtls3)
if(WITH_MBEDTLS3)
include_directories(
${CMAKE_CURRENT_LIST_DIR}/src/hal/tls/mbedtls3
- ${MBEDTLS_DIR}/include
)
- file(GLOB tls_SRCS ${MBEDTLS_DIR}/library/*.c)
else()
include_directories(
${CMAKE_CURRENT_LIST_DIR}/src/hal/tls/mbedtls
- ${MBEDTLS_DIR}/include
)
- file(GLOB tls_SRCS ${MBEDTLS_DIR}/library/*.c)
endif()
add_definitions(-DCONFIG_CS104_SUPPORT_TLS=1)
@@ -137,7 +128,7 @@ if(BUILD_TESTS)
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/tests)
endif(BUILD_TESTS)
-INSTALL(FILES ${API_HEADERS} DESTINATION include/lib60870 COMPONENT Development)
+INSTALL(FILES ${API_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/lib60870" COMPONENT Development)
IF(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
INCLUDE(InstallRequiredSystemLibraries)
diff --git a/lib60870-C/src/CMakeLists.txt b/lib60870-C/src/CMakeLists.txt
index aa420ab..43a2673 100644
--- a/lib60870-C/src/CMakeLists.txt
+++ b/lib60870-C/src/CMakeLists.txt
@@ -142,7 +142,8 @@ add_library (lib60870-shared SHARED ${library_SRCS} )
set_target_properties(lib60870-shared PROPERTIES
OUTPUT_NAME lib60870
- SOVERSION "${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${LIB_VERSION_PATCH}"
+ VERSION "${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${LIB_VERSION_PATCH}"
+ SOVERSION "${LIB_VERSION_MAJOR}"
WINDOWS_EXPORT_ALL_SYMBOLS true
)
@@ -167,7 +168,7 @@ IF(UNIX)
${CMAKE_CURRENT_LIST_DIR}/lib60870.pc.in
${CMAKE_CURRENT_BINARY_DIR}/lib60870.pc @ONLY
)
- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/lib60870.pc" DESTINATION "${CMAKE_INSTALL_PREFIX}/share/pkgconfig")
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/lib60870.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
ENDIF(UNIX)
IF(MINGW)
target_link_libraries(lib60870-shared ws2_32 iphlpapi bcrypt)
@@ -177,9 +178,17 @@ IF(MSVC)
target_link_libraries(lib60870-shared ws2_32 iphlpapi bcrypt)
target_link_libraries(lib60870 ws2_32 iphlpapi bcrypt)
ENDIF(MSVC)
+IF(WITH_MBEDTLS OR WITH_MBEDTLS3)
+ find_package(PkgConfig REQUIRED)
+ pkg_check_modules(MbedCrypto REQUIRED IMPORTED_TARGET GLOBAL mbedcrypto)
+ pkg_check_modules(MbedX509 REQUIRED IMPORTED_TARGET GLOBAL mbedx509)
+ pkg_check_modules(MbedTLS REQUIRED IMPORTED_TARGET GLOBAL mbedtls)
+ target_link_libraries(lib60870-shared PkgConfig::MbedCrypto PkgConfig::MbedX509 PkgConfig::MbedTLS)
+ target_link_libraries(lib60870 PkgConfig::MbedCrypto PkgConfig::MbedX509 PkgConfig::MbedTLS)
+ENDIF(WITH_MBEDTLS OR WITH_MBEDTLS3)
install (TARGETS lib60870 lib60870-shared
- RUNTIME DESTINATION bin COMPONENT Applications
- ARCHIVE DESTINATION lib COMPONENT Libraries
- LIBRARY DESTINATION lib COMPONENT Libraries
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT Applications
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT Libraries
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT Libraries
)
diff --git a/lib60870-C/src/lib60870.pc.in b/lib60870-C/src/lib60870.pc.in
index 1629212..f89903e 100644
--- a/lib60870-C/src/lib60870.pc.in
+++ b/lib60870-C/src/lib60870.pc.in
@@ -1,8 +1,8 @@
prefix=@CMAKE_INSTALL_PREFIX@
-exec_prefix=@CMAKE_INSTALL_PREFIX@/bin
-libdir=@CMAKE_INSTALL_PREFIX@/lib
-sharedlibdir=@CMAKE_INSTALL_PREFIX@/lib
-includedir=@CMAKE_INSTALL_PREFIX@/include
+exec_prefix=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@
+libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@
+sharedlibdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@
+includedir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@
Name: @PROJECT_NAME@
Description: @CPACK_PACKAGE_DESCRIPTION@
|