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 141 142
|
From: =?utf-8?q?Timo_R=C3=B6hling?= <roehling@debian.org>
Date: Tue, 3 Aug 2021 20:00:55 +0200
Subject: Build and export shared library
---
CMakeLists.txt | 21 +++++++++++++++++++++
Source/UnitTest/cmake_core.cmake | 1 -
Source/astcenc.h | 6 +++++-
Source/cmake_core.cmake | 24 +++++++++++++++++++++---
4 files changed, 47 insertions(+), 5 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9392299..2c1639b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -26,6 +26,10 @@ endif()
project(astcencoder VERSION 4.2.0)
+include(GNUInstallDirs)
+find_path(stb_INCLUDE_DIR NAMES stb.h PATH_SUFFIXES stb)
+find_package(ZLIB REQUIRED)
+
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
@@ -211,6 +215,23 @@ printopt("Unit tests " ${UNITTEST})
# Subcomponents
add_subdirectory(Source)
+include(CMakePackageConfigHelpers)
+configure_package_config_file(debian/extra/config.cmake.in astcencConfig.cmake
+ INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/astcenc
+ NO_SET_AND_CHECK_MACRO
+ NO_CHECK_REQUIRED_COMPONENTS_MACRO
+)
+write_basic_package_version_file(astcencConfigVersion.cmake
+ VERSION ${ASTCENC_VERSION}
+ COMPATIBILITY SameMinorVersion
+)
+install(FILES Source/astcenc.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+install(EXPORT astcencTargets NAMESPACE astcenc:: DESTINATION
+ ${CMAKE_INSTALL_LIBDIR}/cmake/astcenc)
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/astcencConfig.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/astcencConfigVersion.cmake DESTINATION
+ ${CMAKE_INSTALL_LIBDIR}/cmake/astcenc)
+
# Configure package archive
if(PACKAGE)
if("${MACOS_BUILD}")
diff --git a/Source/UnitTest/cmake_core.cmake b/Source/UnitTest/cmake_core.cmake
index 2f7955b..1da3230 100644
--- a/Source/UnitTest/cmake_core.cmake
+++ b/Source/UnitTest/cmake_core.cmake
@@ -135,4 +135,3 @@ target_link_libraries(${ASTC_TEST}
add_test(NAME ${ASTC_TEST}
COMMAND ${ASTC_TEST})
-install(TARGETS ${ASTC_TEST} DESTINATION ${PACKAGE_ROOT})
diff --git a/Source/astcenc.h b/Source/astcenc.h
index 56f1ad8..7258173 100644
--- a/Source/astcenc.h
+++ b/Source/astcenc.h
@@ -164,7 +164,11 @@
#if defined(ASTCENC_DYNAMIC_LIBRARY)
#if defined(_MSC_VER)
- #define ASTCENC_PUBLIC extern "C" __declspec(dllexport)
+ #if defined(ASTCENC_EXPORTS)
+ #define ASTCENC_PUBLIC extern "C" __declspec(dllexport)
+ #else
+ #define ASTCENC_PUBLIC extern "C" __declspec(dllimport)
+ #endif
#else
#define ASTCENC_PUBLIC extern "C" __attribute__ ((visibility ("default")))
#endif
diff --git a/Source/cmake_core.cmake b/Source/cmake_core.cmake
index a95362c..02b3485 100644
--- a/Source/cmake_core.cmake
+++ b/Source/cmake_core.cmake
@@ -26,7 +26,6 @@ set(CMAKE_THREAD_PREFER_PTHREAD ON)
find_package(Threads REQUIRED)
add_library(${ASTC_TARGET}-static
- STATIC
astcenc_averages_and_directions.cpp
astcenc_block_sizes.cpp
astcenc_color_quantize.cpp
@@ -51,10 +50,18 @@ add_library(${ASTC_TARGET}-static
astcenc_weight_align.cpp
astcenc_weight_quant_xfer_tables.cpp)
+if(BUILD_SHARED_LIBS)
+ target_compile_definitions(${ASTC_TARGET}-static
+ PUBLIC
+ ASTCENC_DYNAMIC_LIBRARY
+ PRIVATE
+ ASTCENC_EXPORTS)
+endif()
+
target_include_directories(${ASTC_TARGET}-static
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
- $<INSTALL_INTERFACE:.>)
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
if(${CLI})
add_executable(${ASTC_TARGET}
@@ -66,8 +73,10 @@ if(${CLI})
astcenccli_toplevel.cpp
astcenccli_toplevel_help.cpp)
+ target_include_directories(${ASTC_TARGET} PRIVATE ${stb_INCLUDE_DIR})
target_link_libraries(${ASTC_TARGET}
PRIVATE
+ ZLIB::ZLIB
${ASTC_TARGET}-static)
endif()
@@ -303,6 +312,15 @@ astcenc_set_properties(${ASTC_TARGET}-static)
PRIVATE
$<$<CXX_COMPILER_ID:MSVC>:/W4>)
+set_target_properties(${ASTC_TARGET}-static
+ PROPERTIES
+ OUTPUT_NAME ${ASTC_TARGET}
+ EXPORT_NAME ${ASTC_TARGET}
+ VERSION ${ASTCENC_VERSION}
+ SOVERSION ${ASTCENC_SOVERSION}
+)
+install(TARGETS ${ASTC_TARGET}-static DESTINATION ${CMAKE_INSTALL_LIBDIR} EXPORT astcencTargets)
+
if(${CLI})
astcenc_set_properties(${ASTC_TARGET})
@@ -321,5 +339,5 @@ if(${CLI})
PRIVATE
${CMAKE_CURRENT_BINARY_DIR})
- install(TARGETS ${ASTC_TARGET} DESTINATION ${PACKAGE_ROOT})
+ install(TARGETS ${ASTC_TARGET} DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
|