File: fix-cmake.patch

package info (click to toggle)
lib60870 2.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,756 kB
  • sloc: ansic: 40,515; makefile: 264
file content (134 lines) | stat: -rw-r--r-- 5,370 bytes parent folder | download
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@