Merge pull request #134 from tamasmeszaros/cmake-dynlib

Support installation of amalgamated sources
This commit is contained in:
Martin Raiber
2019-06-03 15:11:49 +02:00
committed by GitHub
5 changed files with 89 additions and 62 deletions

View File

@@ -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,7 +111,21 @@ 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)
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 install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}Targets
RUNTIME DESTINATION bin RUNTIME DESTINATION bin
@@ -110,7 +137,7 @@ else(AMALGAMATE_SOURCES)
include(CMakePackageConfigHelpers) include(CMakePackageConfigHelpers)
write_basic_package_version_file( write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake"
VERSION ${Upstream_VERSION} VERSION ${MINIZ_VERSION}
COMPATIBILITY AnyNewerVersion COMPATIBILITY AnyNewerVersion
) )
@@ -141,7 +168,6 @@ else(AMALGAMATE_SOURCES)
COMPONENT COMPONENT
Devel Devel
) )
endif(AMALGAMATE_SOURCES)
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")

10
miniz.h
View File

@@ -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"

View File

@@ -24,7 +24,6 @@
* *
**************************************************************************/ **************************************************************************/
#include "miniz_tdef.h"
#include "miniz.h" #include "miniz.h"
#ifdef __cplusplus #ifdef __cplusplus

View File

@@ -24,7 +24,7 @@
* *
**************************************************************************/ **************************************************************************/
#include "miniz_tinfl.h" #include "miniz.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {

View File

@@ -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