Merge pull request #134 from tamasmeszaros/cmake-dynlib
Support installation of amalgamated sources
This commit is contained in:
commit
e71344bdd7
132
CMakeLists.txt
132
CMakeLists.txt
@ -1,7 +1,18 @@
|
|||||||
PROJECT(miniz C)
|
cmake_minimum_required(VERSION 3.0)
|
||||||
cmake_minimum_required(VERSION 3.4)
|
|
||||||
|
|
||||||
set(Upstream_VERSION 2.1.0)
|
if(CMAKE_MINOR_VERSION LESS 12)
|
||||||
|
project(miniz)
|
||||||
|
# see issue https://gitlab.kitware.com/cmake/cmake/merge_requests/1799
|
||||||
|
else()
|
||||||
|
project(miniz C)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
set(MINIZ_API_VERSION 2)
|
||||||
|
set(MINIZ_MINOR_VERSION 1)
|
||||||
|
set(MINIZ_PATCH_VERSION 0)
|
||||||
|
set(MINIZ_VERSION
|
||||||
|
${MINIZ_API_VERSION}.${MINIZ_MINOR_VERSION}.${MINIZ_PATCH_VERSION})
|
||||||
|
|
||||||
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
|
||||||
@ -52,7 +63,12 @@ if(AMALGAMATE_SOURCES)
|
|||||||
"${AMAL_MINIZ_C}" "\n#endif // MINIZ_HEADER_FILE_ONLY\n")
|
"${AMAL_MINIZ_C}" "\n#endif // MINIZ_HEADER_FILE_ONLY\n")
|
||||||
file(WRITE ${CMAKE_BINARY_DIR}/amalgamation/miniz.h "${AMAL_MINIZ_H}")
|
file(WRITE ${CMAKE_BINARY_DIR}/amalgamation/miniz.h "${AMAL_MINIZ_H}")
|
||||||
add_library(${PROJECT_NAME} INTERFACE)
|
add_library(${PROJECT_NAME} INTERFACE)
|
||||||
set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
|
target_compile_definitions(${PROJECT_NAME}
|
||||||
|
INTERFACE $<$<C_COMPILER_ID:GNU>:_GNU_SOURCE>)
|
||||||
|
|
||||||
|
set_property(TARGET ${PROJECT_NAME} APPEND
|
||||||
|
PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||||
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/amalgamation>
|
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/amalgamation>
|
||||||
$<INSTALL_INTERFACE:include>
|
$<INSTALL_INTERFACE:include>
|
||||||
)
|
)
|
||||||
@ -81,15 +97,12 @@ else(AMALGAMATE_SOURCES)
|
|||||||
string(TOUPPER ${PROJECT_NAME} PROJECT_UPPER)
|
string(TOUPPER ${PROJECT_NAME} PROJECT_UPPER)
|
||||||
set_target_properties(${PROJECT_NAME}
|
set_target_properties(${PROJECT_NAME}
|
||||||
PROPERTIES INTERFACE_COMPILE_DEFINITIONS ${PROJECT_UPPER}_STATIC_DEFINE)
|
PROPERTIES INTERFACE_COMPILE_DEFINITIONS ${PROJECT_UPPER}_STATIC_DEFINE)
|
||||||
|
else()
|
||||||
|
set_property(TARGET ${PROJECT_NAME} PROPERTY C_VISIBILITY_PRESET hidden)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set_property(TARGET ${PROJECT_NAME} PROPERTY VERSION ${Upstream_VERSION})
|
set_property(TARGET ${PROJECT_NAME} PROPERTY VERSION ${MINIZ_VERSION})
|
||||||
set_property(TARGET ${PROJECT_NAME} PROPERTY SOVERSION 2)
|
set_property(TARGET ${PROJECT_NAME} PROPERTY SOVERSION ${MINIZ_API_VERSION})
|
||||||
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
|
target_include_directories(${PROJECT_NAME} PUBLIC
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||||
@ -98,51 +111,64 @@ else(AMALGAMATE_SOURCES)
|
|||||||
)
|
)
|
||||||
|
|
||||||
file(GLOB INSTALL_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h)
|
file(GLOB INSTALL_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h)
|
||||||
list(APPEND INSTALL_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_export.h)
|
list(APPEND
|
||||||
|
INSTALL_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_export.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(NOT BUILD_HEADER_ONLY)
|
||||||
|
target_compile_definitions(${PROJECT_NAME}
|
||||||
|
PRIVATE $<$<C_COMPILER_ID:GNU>:_GNU_SOURCE>)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_property(TARGET ${PROJECT_NAME} PROPERTY
|
||||||
|
INTERFACE_${PROJECT_NAME}_MAJOR_VERSION ${MINIZ_API_VERSION})
|
||||||
|
set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY
|
||||||
|
COMPATIBLE_INTERFACE_STRING ${PROJECT_NAME}_MAJOR_VERSION
|
||||||
|
)
|
||||||
|
|
||||||
|
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 ${MINIZ_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
|
||||||
|
)
|
||||||
|
|
||||||
if(BUILD_EXAMPLES)
|
if(BUILD_EXAMPLES)
|
||||||
set(EXAMPLE1_SRC_LIST "${CMAKE_CURRENT_SOURCE_DIR}/examples/example1.c")
|
set(EXAMPLE1_SRC_LIST "${CMAKE_CURRENT_SOURCE_DIR}/examples/example1.c")
|
||||||
set(EXAMPLE2_SRC_LIST "${CMAKE_CURRENT_SOURCE_DIR}/examples/example2.c")
|
set(EXAMPLE2_SRC_LIST "${CMAKE_CURRENT_SOURCE_DIR}/examples/example2.c")
|
||||||
|
|||||||
10
miniz.h
10
miniz.h
@ -112,10 +112,7 @@
|
|||||||
*/
|
*/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "miniz_common.h"
|
#include "miniz_export.h"
|
||||||
#include "miniz_tdef.h"
|
|
||||||
#include "miniz_tinfl.h"
|
|
||||||
#include "miniz_zip.h"
|
|
||||||
|
|
||||||
/* Defines to completely disable specific portions of miniz.c:
|
/* Defines to completely disable specific portions of miniz.c:
|
||||||
If all macros here are defined the only functionality remaining will be CRC-32, adler-32, tinfl, and tdefl. */
|
If all macros here are defined the only functionality remaining will be CRC-32, adler-32, tinfl, and tdefl. */
|
||||||
@ -476,3 +473,8 @@ typedef void *const voidpc;
|
|||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "miniz_common.h"
|
||||||
|
#include "miniz_tdef.h"
|
||||||
|
#include "miniz_tinfl.h"
|
||||||
|
#include "miniz_zip.h"
|
||||||
|
|||||||
@ -24,7 +24,6 @@
|
|||||||
*
|
*
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
#include "miniz_tdef.h"
|
|
||||||
#include "miniz.h"
|
#include "miniz.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@ -24,7 +24,7 @@
|
|||||||
*
|
*
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
#include "miniz_tinfl.h"
|
#include "miniz.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@ -24,7 +24,7 @@
|
|||||||
* THE SOFTWARE.
|
* THE SOFTWARE.
|
||||||
*
|
*
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
#include "miniz_zip.h"
|
#include "miniz.h"
|
||||||
|
|
||||||
#ifndef MINIZ_NO_ARCHIVE_APIS
|
#ifndef MINIZ_NO_ARCHIVE_APIS
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user