mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-12-16 06:59:37 +08:00
140 lines
4.3 KiB
Diff
140 lines
4.3 KiB
Diff
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
index 03c82fb..cce8694 100644
|
|
--- a/CMakeLists.txt
|
|
+++ b/CMakeLists.txt
|
|
@@ -99,7 +99,7 @@ if(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
|
endif()
|
|
|
|
set(re_DIR ${CMAKE_CURRENT_LIST_DIR}/cmake)
|
|
-find_package(re CONFIG REQUIRED)
|
|
+include("${CMAKE_CURRENT_LIST_DIR}/cmake/re-config.cmake")
|
|
|
|
list(APPEND RE_DEFINITIONS
|
|
-DRE_VERSION="${PROJECT_VERSION_FULL}"
|
|
@@ -648,7 +648,7 @@ endif()
|
|
if(LIBRE_BUILD_STATIC)
|
|
list(APPEND RE_INSTALL_TARGETS re)
|
|
add_library(re STATIC $<TARGET_OBJECTS:re-objs>)
|
|
- target_link_libraries(re PUBLIC ${RE_LIBS})
|
|
+ target_link_libraries(re PRIVATE ${RE_LIBS})
|
|
target_include_directories(re PUBLIC
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
|
)
|
|
@@ -656,6 +656,9 @@ if(LIBRE_BUILD_STATIC)
|
|
|
|
if(MSVC)
|
|
set_target_properties(re PROPERTIES OUTPUT_NAME "re-static")
|
|
+ if(NOT LIBRE_BUILD_SHARED)
|
|
+ set(PC_LIBNAME "re-static")
|
|
+ endif()
|
|
endif()
|
|
endif()
|
|
|
|
@@ -668,6 +671,28 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
|
|
add_subdirectory(packaging)
|
|
endif()
|
|
|
|
+if(NOT PC_LIBNAME)
|
|
+ set(PC_LIBNAME "re")
|
|
+endif()
|
|
+set(PC_REQUIRES "")
|
|
+set(PC_LINKLIBS "")
|
|
+foreach(item IN LISTS LINKLIBS)
|
|
+ if(item STREQUAL "Threads::Threads")
|
|
+ list(APPEND PC_LINKLIBS ${CMAKE_THREADS_LIBS_INIT})
|
|
+ elseif(item STREQUAL "OpenSSL::Crypto")
|
|
+ list(APPEND PC_REQUIRES "libcrypto")
|
|
+ elseif(item STREQUAL "OpenSSL::SSL")
|
|
+ list(APPEND PC_REQUIRES "libssl")
|
|
+ elseif(item STREQUAL "ZLIB::ZLIB")
|
|
+ list(APPEND PC_REQUIRES "zlib")
|
|
+ elseif(item MATCHES "^-|/")
|
|
+ list(APPEND PC_LINKLIBS "${item}")
|
|
+ else()
|
|
+ list(APPEND PC_LINKLIBS "-l${item}")
|
|
+ endif()
|
|
+endforeach()
|
|
+list(JOIN PC_LINKLIBS " " PC_LINKLIBS)
|
|
+list(JOIN PC_REQUIRES " " PC_REQUIRES)
|
|
configure_file(packaging/libre.pc.in libre.pc @ONLY)
|
|
|
|
|
|
@@ -679,6 +704,9 @@ configure_file(packaging/libre.pc.in libre.pc @ONLY)
|
|
|
|
install(TARGETS ${RE_INSTALL_TARGETS}
|
|
EXPORT libre
|
|
+ RUNTIME
|
|
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
+ COMPONENT Libraries
|
|
LIBRARY
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
COMPONENT Libraries
|
|
@@ -697,7 +725,9 @@ install(FILES ${HEADERS}
|
|
|
|
install(EXPORT libre
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libre
|
|
+ FILE libre-targets.cmake
|
|
NAMESPACE libre::
|
|
+ COMPONENT Development
|
|
)
|
|
|
|
if(LIBRE_BUILD_SHARED)
|
|
@@ -709,12 +739,8 @@ if(LIBRE_BUILD_SHARED)
|
|
)
|
|
endif()
|
|
|
|
-install(FILES cmake/re-config.cmake
|
|
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/re
|
|
- COMPONENT Development
|
|
-)
|
|
-
|
|
-install(FILES cmake/libre-config.cmake
|
|
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/libre-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/cmake/libre-config.cmake" @ONLY)
|
|
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/cmake/libre-config.cmake"
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libre
|
|
COMPONENT Development
|
|
)
|
|
diff --git a/cmake/libre-config.cmake b/cmake/libre-config.cmake
|
|
index 0965b84..e8548a0 100644
|
|
--- a/cmake/libre-config.cmake
|
|
+++ b/cmake/libre-config.cmake
|
|
@@ -1 +1,23 @@
|
|
-include("${CMAKE_CURRENT_LIST_DIR}/libre.cmake")
|
|
+if("@LIBRE_BUILD_STATIC@")
|
|
+ include(CMakeFindDependencyMacro)
|
|
+ find_dependency(Threads)
|
|
+ if("@USE_OPENSSL@")
|
|
+ find_dependency(OpenSSL)
|
|
+ endif()
|
|
+ if("@ZLIB_FOUND@")
|
|
+ find_dependency(ZLIB)
|
|
+ endif()
|
|
+endif()
|
|
+
|
|
+include("${CMAKE_CURRENT_LIST_DIR}/libre-targets.cmake")
|
|
+
|
|
+# convenience target libre::libre for uniform usage
|
|
+if(NOT TARGET libre::libre)
|
|
+ if(TARGET libre::re_shared AND (BUILD_SHARED_LIBS OR NOT TARGET libre::re))
|
|
+ add_library(libre::libre INTERFACE IMPORTED)
|
|
+ set_target_properties(libre::libre PROPERTIES INTERFACE_LINK_LIBRARIES libre::re_shared)
|
|
+ elseif(TARGET libre::re AND (NOT BUILD_SHARED_LIBS OR NOT TARGET libre::re_shared))
|
|
+ add_library(libre::libre INTERFACE IMPORTED)
|
|
+ set_target_properties(libre::libre PROPERTIES INTERFACE_LINK_LIBRARIES libre::re)
|
|
+ endif()
|
|
+endif()
|
|
diff --git a/packaging/libre.pc.in b/packaging/libre.pc.in
|
|
index 5817066..2df8f6c 100644
|
|
--- a/packaging/libre.pc.in
|
|
+++ b/packaging/libre.pc.in
|
|
@@ -7,6 +7,7 @@ Name: libre
|
|
Description: @CMAKE_PROJECT_DESCRIPTION@
|
|
Version: @PROJECT_VERSION@
|
|
URL: @CMAKE_PROJECT_HOMEPAGE_URL@
|
|
-Libs: -L${libdir} -lre
|
|
-Libs.private: -L${libdir} -lre -ldl -lssl -lcrypto -lz -lpthread
|
|
+Libs: -L${libdir} -l@PC_LIBNAME@
|
|
+Libs.private: @PC_LINKLIBS@
|
|
+Requires.private: @PC_REQUIRES@
|
|
Cflags: -I${includedir}
|