aboutsummaryrefslogtreecommitdiff
path: root/ports/opendnp3/export-cmake.patch
blob: ee0ab50c33c2d704fc6f01e9c0b662a019f069f8 (plain)
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
135
136
137
138
139
140
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1381bab..e184423 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -104,20 +104,54 @@ include_directories(./cpp/tests/libs/src)
 # ---- openpal library ----
 file(GLOB_RECURSE openpal_SRC ./cpp/libs/src/openpal/*.cpp ./cpp/libs/src/openpal/*.h ./cpp/libs/include/openpal/*.h)
 add_library(openpal ${LIB_TYPE} ${openpal_SRC})
-install(TARGETS openpal DESTINATION lib)
 set_target_properties(openpal PROPERTIES FOLDER cpp/libs VERSION ${OPENDNP3_VERSION} SOVERSION ${OPENDNP3_MAJOR_VERSION})
 clang_format(openpal)
 clang_tidy(openpal)
 
+include(CMakePackageConfigHelpers)
+write_basic_package_version_file(openpal-version.cmake VERSION ${OPENDNP3_VERSION} COMPATIBILITY ExactVersion)
+
+install(
+    TARGETS openpal
+    EXPORT openpal-config
+    DESTINATION lib
+)
+
+install(
+    EXPORT openpal-config
+    DESTINATION share/openpal
+)
+
 # ---- opendnp3 library ----
 file(GLOB_RECURSE opendnp3_SRC ./cpp/libs/src/opendnp3/*.cpp ./cpp/libs/src/opendnp3/*.h ./cpp/libs/include/opendnp3/*.h)
 add_library(opendnp3 ${LIB_TYPE} ${opendnp3_SRC})
 target_link_libraries(opendnp3 openpal)
-install(TARGETS opendnp3 DESTINATION lib)
+
 set_target_properties(opendnp3 PROPERTIES FOLDER cpp/libs VERSION ${OPENDNP3_VERSION} SOVERSION ${OPENDNP3_MAJOR_VERSION})
 clang_format(opendnp3 EXCLUDES ".*/gen/.*" ".*/objects/.*")
 clang_tidy(opendnp3)
 
+write_basic_package_version_file(opendnp3-version.cmake VERSION ${OPENDNP3_VERSION} COMPATIBILITY ExactVersion)
+
+set(PROJECT_NAME opendnp3)
+set(FIND_DEPENDS "find_dependency(openpal)")
+configure_package_config_file(opendnp3-config.cmake.in opendnp3-config.cmake
+    INSTALL_DESTINATION share/opendnp3
+    PATH_VARS PROJECT_NAME FIND_DEPENDS
+)
+
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/opendnp3-config.cmake DESTINATION share/opendnp3)
+
+install(
+    TARGETS opendnp3
+    EXPORT opendnp3-targets
+    DESTINATION lib
+)
+install(
+    EXPORT opendnp3-targets
+    DESTINATION share/opendnp3
+)
+
 if(DNP3_DECODER)
   file(GLOB_RECURSE dnp3decode_SRC ./cpp/libs/src/dnp3decode/*.cpp ./cpp/libs/src/dnp3decode/*.h ./cpp/libs/include/dnp3decode/*.h)
   add_library(dnp3decode ${LIB_TYPE} ${dnp3decode_SRC})
@@ -144,8 +178,7 @@ if(DNP3_TLS)
     set(asiopal_link_libraries "${asiopal_link_libraries};${OPENSSL_LIBRARIES}")
 endif()
 
-target_link_libraries(asiopal ${asiopal_link_libraries})
-install(TARGETS asiopal DESTINATION lib)
+target_link_libraries(asiopal PUBLIC ${asiopal_link_libraries})
 set_target_properties(asiopal PROPERTIES FOLDER cpp/libs VERSION ${OPENDNP3_VERSION} SOVERSION ${OPENDNP3_MAJOR_VERSION})
 if(FLOCK)
   add_definitions(-DUSE_FLOCK)
@@ -153,6 +186,32 @@ endif()
 clang_format(asiopal)
 clang_tidy(asiopal)
 
+install(
+    TARGETS asiopal
+    EXPORT asiopal-targets
+    DESTINATION lib
+)
+  
+write_basic_package_version_file(asiopal-version.cmake VERSION ${OPENDNP3_VERSION} COMPATIBILITY ExactVersion)
+
+set(PROJECT_NAME asiopal)
+if (DNP3_TLS)
+    set(FIND_DEPENDS "find_dependency(openpal)\nfind_dependency(OpenSSL)")
+else()
+    set(FIND_DEPENDS "find_dependency(openpal)")
+endif()
+configure_package_config_file(opendnp3-config.cmake.in asiopal-config.cmake
+    INSTALL_DESTINATION share/asiopal
+    PATH_VARS PROJECT_NAME FIND_DEPENDS
+)
+
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/asiopal-config.cmake DESTINATION share/asiopal)
+
+install(
+    EXPORT asiopal-targets
+    DESTINATION share/asiopal
+)
+
 # ---- asiodnp3 library ----
 file(GLOB_RECURSE asiodnp3_HPP ./cpp/libs/src/asiodnp3/*.h ./cpp/libs/include/asiodnp3/*.h)
 if(DNP3_TLS)
@@ -161,12 +220,33 @@ else()
   file(GLOB asiodnp3_CPP ./cpp/libs/src/asiodnp3/*.cpp)
 endif()
 add_library(asiodnp3 ${LIB_TYPE} ${asiodnp3_HPP} ${asiodnp3_CPP})
-target_link_libraries(asiodnp3 asiopal opendnp3)
-install(TARGETS asiodnp3 DESTINATION lib)
+target_link_libraries(asiodnp3 PUBLIC asiopal opendnp3)
 set_target_properties(asiodnp3 PROPERTIES FOLDER cpp/libs VERSION ${OPENDNP3_VERSION} SOVERSION ${OPENDNP3_MAJOR_VERSION})
 clang_format(asiodnp3)
 clang_tidy(asiodnp3)
 
+install(
+    TARGETS asiodnp3    
+    EXPORT asiodnp3-targets
+    DESTINATION lib
+)
+  
+write_basic_package_version_file(asiopal-version.cmake VERSION ${OPENDNP3_VERSION} COMPATIBILITY ExactVersion)
+
+set(PROJECT_NAME asiodnp3)
+set(FIND_DEPENDS "find_dependency(asiopal)\nfind_dependency(opendnp3)")
+configure_package_config_file(opendnp3-config.cmake.in asiodnp3-config.cmake
+    INSTALL_DESTINATION share/asiopal
+    PATH_VARS PROJECT_NAME FIND_DEPENDS
+)
+
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/asiodnp3-config.cmake DESTINATION share/asiodnp3)
+
+install(
+    EXPORT asiodnp3-targets
+    DESTINATION share/asiodnp3
+)
+
 if(DNP3_JAVA)
   file(GLOB_RECURSE opendnp3java_SRC ./java/cpp/*.h ./java/cpp/*.cpp)
   add_library(opendnp3java SHARED ${opendnp3java_SRC})