aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/mgclient/export-cmake.patch
blob: 8811a4fba6b4230994d1f5bebf59c088cf807e54 (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
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 92426e9..f96152a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -16,6 +16,8 @@ add_library(project_options INTERFACE)
 include(../cmake/Sanitizers.cmake)
 enable_sanitizers(project_options)
 
+include(GNUInstallDirs)
+
 set(mgclient_src_files
         mgallocator.c
         mgclient.c
@@ -50,6 +52,7 @@ else()
     find_package(OpenSSL REQUIRED)
     include(GenerateExportHeader)
 
+    if(NOT BUILD_SHARED_LIBS)
     add_library(mgclient-static STATIC ${mgclient_src_files})
 
     generate_export_header(mgclient-static
@@ -62,18 +65,22 @@ else()
     target_include_directories(mgclient-static
             PRIVATE
             "${PROJECT_SOURCE_DIR}/src"
-            PUBLIC
-            "${PROJECT_SOURCE_DIR}/include"
             "${CMAKE_CURRENT_BINARY_DIR}"
-            "${OPENSSL_INCLUDE_DIR}")
+            "${OPENSSL_INCLUDE_DIR}"
+            PUBLIC
+            $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
+            $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
+            )
     target_link_libraries(mgclient-static
             PRIVATE
-            ${OPENSSL_LIBRARIES} project_options project_c_warnings)
-
+            ${OPENSSL_LIBRARIES})
+    target_compile_options(mgclient-static PRIVATE
+            $<TARGET_PROPERTY:project_options,INTERFACE_COMPILE_OPTIONS>
+            $<TARGET_PROPERTY:project_c_warnings,INTERFACE_COMPILE_OPTIONS>)
     if(MGCLIENT_ON_WINDOWS)
         target_link_libraries(mgclient-static PUBLIC ws2_32 crypt32 gdi32)
     endif()
-
+    else()
     add_library(mgclient-shared SHARED ${mgclient_src_files})
 
     generate_export_header(mgclient-shared
@@ -87,32 +94,44 @@ else()
     target_include_directories(mgclient-shared
             PRIVATE
             "${PROJECT_SOURCE_DIR}/src"
-            PUBLIC
-            "${PROJECT_SOURCE_DIR}/include"
             "${CMAKE_CURRENT_BINARY_DIR}"
-            "${OPENSSL_INCLUDE_DIR}")
+            "${OPENSSL_INCLUDE_DIR}"
+            PUBLIC
+            $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
+            $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
+            )
     target_link_libraries(mgclient-shared
             PRIVATE
-            ${OPENSSL_LIBRARIES} project_options project_c_warnings)
-
+            ${OPENSSL_LIBRARIES})
+    target_compile_options(mgclient-shared PRIVATE
+            $<TARGET_PROPERTY:project_options,INTERFACE_COMPILE_OPTIONS>
+            $<TARGET_PROPERTY:project_c_warnings,INTERFACE_COMPILE_OPTIONS>)
     if(MGCLIENT_ON_WINDOWS)
         target_link_libraries(mgclient-shared PUBLIC ws2_32 crypt32 gdi32)
     endif()
+    endif()
 
-    generate_export_header(mgclient-shared
-            BASE_NAME "mgclient"
-            EXPORT_FILE_NAME "mgclient-export.h")
-
-    include(GNUInstallDirs)
-
-    install(TARGETS mgclient-static mgclient-shared
+    if(BUILD_SHARED_LIBS)
+    install(TARGETS mgclient-shared
+            EXPORT unofficial-mgclient-export
+            ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+            RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+    else()
+    install(TARGETS mgclient-static
+            EXPORT unofficial-mgclient-export
             ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
             LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-            RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR})
+            RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+    endif()
     install(DIRECTORY
             "${PROJECT_SOURCE_DIR}/include/"
             DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
     install(FILES
             "${CMAKE_CURRENT_BINARY_DIR}/mgclient-export.h"
             DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+    install(EXPORT unofficial-mgclient-export
+            FILE unofficial-mgclient-config.cmake
+            NAMESPACE unofficial::mgclient::
+            DESTINATION share/unofficial-mgclient)
 endif()