mirror of
https://github.com/eledio-devices/thirdparty-miniz.git
synced 2025-10-30 16:15:41 +01:00
Modified cmake script to support shared library mode and find_package.
This commit is contained in:
@@ -1,5 +1,8 @@
|
|||||||
PROJECT(miniz C)
|
PROJECT(miniz C)
|
||||||
cmake_minimum_required(VERSION 2.8)
|
cmake_minimum_required(VERSION 3.4)
|
||||||
|
|
||||||
|
set(Upstream_VERSION 2.1.0)
|
||||||
|
|
||||||
if(CMAKE_BUILD_TYPE STREQUAL "")
|
if(CMAKE_BUILD_TYPE STREQUAL "")
|
||||||
# CMake defaults to leaving CMAKE_BUILD_TYPE empty. This screws up
|
# CMake defaults to leaving CMAKE_BUILD_TYPE empty. This screws up
|
||||||
# differentiation between debug and release builds.
|
# differentiation between debug and release builds.
|
||||||
@@ -11,6 +14,7 @@ endif ()
|
|||||||
option(BUILD_EXAMPLES "Build examples" ON)
|
option(BUILD_EXAMPLES "Build examples" ON)
|
||||||
option(AMALGAMATE_SOURCES "Amalgamate sources into miniz.h/c" OFF)
|
option(AMALGAMATE_SOURCES "Amalgamate sources into miniz.h/c" OFF)
|
||||||
option(BUILD_HEADER_ONLY "Build a header-only version" OFF)
|
option(BUILD_HEADER_ONLY "Build a header-only version" OFF)
|
||||||
|
option(BUILD_SHARED_LIBS "Build shared library instead of static" ON)
|
||||||
|
|
||||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
|
||||||
|
|
||||||
@@ -65,13 +69,65 @@ if(AMALGAMATE_SOURCES)
|
|||||||
endif(BUILD_HEADER_ONLY)
|
endif(BUILD_HEADER_ONLY)
|
||||||
set(INSTALL_HEADERS ${CMAKE_BINARY_DIR}/amalgamation/miniz.h)
|
set(INSTALL_HEADERS ${CMAKE_BINARY_DIR}/amalgamation/miniz.h)
|
||||||
else(AMALGAMATE_SOURCES)
|
else(AMALGAMATE_SOURCES)
|
||||||
|
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
||||||
set(miniz_SOURCE miniz.c miniz_zip.c miniz_tinfl.c miniz_tdef.c)
|
set(miniz_SOURCE miniz.c miniz_zip.c miniz_tinfl.c miniz_tdef.c)
|
||||||
add_library(${PROJECT_NAME} ${miniz_SOURCE})
|
add_library(${PROJECT_NAME} ${miniz_SOURCE})
|
||||||
target_include_directories(${PROJECT_NAME} PUBLIC
|
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
set_property(TARGET ${PROJECT_NAME} PROPERTY VERSION ${Upstream_VERSION})
|
||||||
$<INSTALL_INTERFACE:include>
|
set_property(TARGET ${PROJECT_NAME} PROPERTY SOVERSION 2)
|
||||||
|
set_property(TARGET ${PROJECT_NAME} PROPERTY
|
||||||
|
INTERFACE_${PROJECT_NAME}_MAJOR_VERSION 2)
|
||||||
|
set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY
|
||||||
|
COMPATIBLE_INTERFACE_STRING ${PROJECT_NAME}_MAJOR_VERSION
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# target_include_directories(${PROJECT_NAME} PUBLIC
|
||||||
|
# $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||||
|
# $<INSTALL_INTERFACE:include>
|
||||||
|
# )
|
||||||
file(GLOB INSTALL_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h)
|
file(GLOB INSTALL_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h)
|
||||||
|
|
||||||
|
install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}Targets
|
||||||
|
RUNTIME DESTINATION bin
|
||||||
|
ARCHIVE DESTINATION lib
|
||||||
|
LIBRARY DESTINATION lib
|
||||||
|
INCLUDES DESTINATION include
|
||||||
|
)
|
||||||
|
|
||||||
|
include(CMakePackageConfigHelpers)
|
||||||
|
write_basic_package_version_file(
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake"
|
||||||
|
VERSION ${Upstream_VERSION}
|
||||||
|
COMPATIBILITY AnyNewerVersion
|
||||||
|
)
|
||||||
|
|
||||||
|
export(EXPORT ${PROJECT_NAME}Targets
|
||||||
|
FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}Targets.cmake"
|
||||||
|
NAMESPACE ${PROJECT_NAME}::
|
||||||
|
)
|
||||||
|
configure_file(Config.cmake.in
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}Config.cmake"
|
||||||
|
@ONLY
|
||||||
|
)
|
||||||
|
|
||||||
|
set(ConfigPackageLocation lib/cmake/${PROJECT_NAME})
|
||||||
|
install(EXPORT ${PROJECT_NAME}Targets
|
||||||
|
FILE
|
||||||
|
${PROJECT_NAME}Targets.cmake
|
||||||
|
NAMESPACE
|
||||||
|
${PROJECT_NAME}::
|
||||||
|
DESTINATION
|
||||||
|
${ConfigPackageLocation}
|
||||||
|
)
|
||||||
|
install(
|
||||||
|
FILES
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}Config.cmake"
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake"
|
||||||
|
DESTINATION
|
||||||
|
${ConfigPackageLocation}
|
||||||
|
COMPONENT
|
||||||
|
Devel
|
||||||
|
)
|
||||||
endif(AMALGAMATE_SOURCES)
|
endif(AMALGAMATE_SOURCES)
|
||||||
|
|
||||||
if(BUILD_EXAMPLES)
|
if(BUILD_EXAMPLES)
|
||||||
@@ -108,3 +164,4 @@ endif(BUILD_EXAMPLES)
|
|||||||
set(INCLUDE_INSTALL_DIR "include")
|
set(INCLUDE_INSTALL_DIR "include")
|
||||||
|
|
||||||
install(FILES ${INSTALL_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/${PROJECT_NAME})
|
install(FILES ${INSTALL_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/${PROJECT_NAME})
|
||||||
|
|
||||||
|
|||||||
1
Config.cmake.in
Normal file
1
Config.cmake.in
Normal file
@@ -0,0 +1 @@
|
|||||||
|
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
|
||||||
Reference in New Issue
Block a user