Add option to disable installation by setting LIBZIP_DO_INSTALL to OFF.
Requested by Tomáš Malý in #180.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 430c272..d1630e0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -61,6 +61,7 @@
ENDIF()
OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON)
+OPTION(LIBZIP_DO_INSTALL "Install libzip and the related files" ON)
OPTION(SHARED_LIB_VERSIONNING "Add SO version in .so build" ON)
@@ -345,7 +346,9 @@
set(LIBS "${LIBS} -l${LIB}")
endforeach()
CONFIGURE_FILE(libzip.pc.in libzip.pc @ONLY)
-INSTALL(FILES ${PROJECT_BINARY_DIR}/libzip.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+IF(LIBZIP_DO_INSTALL)
+ INSTALL(FILES ${PROJECT_BINARY_DIR}/libzip.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+ENDIF()
# fixed size integral types
@@ -476,19 +479,22 @@
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libzip
PATH_VARS CMAKE_INSTALL_BINDIR CMAKE_INSTALL_INCLUDEDIR CMAKE_INSTALL_LIBDIR)
-INSTALL(EXPORT ${PROJECT_NAME}-targets
- FILE ${PROJECT_NAME}-targets.cmake
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
- )
+IF(LIBZIP_DO_INSTALL)
+ INSTALL(EXPORT ${PROJECT_NAME}-targets
+ FILE ${PROJECT_NAME}-targets.cmake
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
+ )
+ENDIF()
# Add targets to the build-tree export set
EXPORT(TARGETS zip
FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-targets.cmake")
# installation
-
-INSTALL(FILES ${PROJECT_BINARY_DIR}/zipconf.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
-INSTALL(FILES ${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake ${PROJECT_BINARY_DIR}/${PROJECT_NAME}-version.cmake
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
- )
+IF(LIBZIP_DO_INSTALL)
+ INSTALL(FILES ${PROJECT_BINARY_DIR}/zipconf.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+ INSTALL(FILES ${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake ${PROJECT_BINARY_DIR}/${PROJECT_NAME}-version.cmake
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
+ )
+ENDIF()
diff --git a/INSTALL.md b/INSTALL.md
index 14e4469..74e3e79 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -42,6 +42,9 @@
- `DOCUMENTATION_FORMAT`: choose one of 'man', 'mdoc', and 'html' for
the installed documentation (default: decided by cmake depending on
available tools)
+- `LIBZIP_DO_INSTALL`: If you include libzip as a subproject, link it
+ statically and do not want to let it install its files, set this
+ variable to `OFF`. Defaults to `ON`.
If you want to compile with custom `CFLAGS`, set them in the environment
before running `cmake`:
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 38fab2f..a68360c 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -1,6 +1,8 @@
INCLUDE(CheckFunctionExists)
-INSTALL(FILES zip.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+IF(LIBZIP_DO_INSTALL)
+ INSTALL(FILES zip.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+ENDIF()
SET(CMAKE_C_VISIBILITY_PRESET hidden)
@@ -215,9 +217,11 @@
TARGET_LINK_LIBRARIES(zip PRIVATE ${ZLIB_LIBRARIES} ${OPTIONAL_LIBRARY})
-INSTALL(TARGETS zip
- EXPORT ${PROJECT_NAME}-targets
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+IF(LIBZIP_DO_INSTALL)
+ INSTALL(TARGETS zip
+ EXPORT ${PROJECT_NAME}-targets
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ENDIF()
diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt
index e3b8dc0..5290f88 100644
--- a/man/CMakeLists.txt
+++ b/man/CMakeLists.txt
@@ -102,11 +102,13 @@
FOREACH(MAN_PAGE ${MAN_PAGES})
STRING(REGEX REPLACE "[1-9]$" "${DOCUMENTATION_FORMAT}" SOURCE_FILE ${MAN_PAGE})
- IF (DOCUMENTATION_FORMAT MATCHES "html")
- INSTALL(FILES ${PROJECT_BINARY_DIR}/man/${MAN_PAGE} DESTINATION ${CMAKE_INSTALL_DOCDIR} RENAME ${SOURCE_FILE})
- ELSE()
- STRING(REGEX REPLACE ".*(.)$" "man\\1" SUBDIR ${MAN_PAGE})
- INSTALL(FILES ${PROJECT_BINARY_DIR}/man/${MAN_PAGE} DESTINATION ${CMAKE_INSTALL_MANDIR}/${SUBDIR})
+ IF(LIBZIP_DO_INSTALL)
+ IF (DOCUMENTATION_FORMAT MATCHES "html")
+ INSTALL(FILES ${PROJECT_BINARY_DIR}/man/${MAN_PAGE} DESTINATION ${CMAKE_INSTALL_DOCDIR} RENAME ${SOURCE_FILE})
+ ELSE()
+ STRING(REGEX REPLACE ".*(.)$" "man\\1" SUBDIR ${MAN_PAGE})
+ INSTALL(FILES ${PROJECT_BINARY_DIR}/man/${MAN_PAGE} DESTINATION ${CMAKE_INSTALL_MANDIR}/${SUBDIR})
+ ENDIF()
ENDIF()
# CONFIGURE_FILE does not find out about updates to the sources, and it does not provide a target
#CONFIGURE_FILE(${SOURCE_FILE} ${MAN_PAGE} COPYONLY)
@@ -143,10 +145,12 @@
IF(${LINKS_LINE} MATCHES "(.*) (.*)")
SET(SOURCE ${CMAKE_MATCH_1})
SET(TARGET ${CMAKE_MATCH_2})
- IF (DOCUMENTATION_FORMAT MATCHES "html")
- INSTALL(FILES ${PROJECT_BINARY_DIR}/man/${SOURCE}.3 DESTINATION ${CMAKE_INSTALL_DOCDIR} RENAME ${TARGET}.html)
- ELSE()
- INSTALL(FILES ${PROJECT_BINARY_DIR}/man/${SOURCE}.3 DESTINATION ${CMAKE_INSTALL_MANDIR}/man3 RENAME ${TARGET}.3)
+ IF(LIBZIP_DO_INSTALL)
+ IF (DOCUMENTATION_FORMAT MATCHES "html")
+ INSTALL(FILES ${PROJECT_BINARY_DIR}/man/${SOURCE}.3 DESTINATION ${CMAKE_INSTALL_DOCDIR} RENAME ${TARGET}.html)
+ ELSE()
+ INSTALL(FILES ${PROJECT_BINARY_DIR}/man/${SOURCE}.3 DESTINATION ${CMAKE_INSTALL_MANDIR}/man3 RENAME ${TARGET}.3)
+ ENDIF()
ENDIF()
ENDIF()
ENDFOREACH()
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index dff9619..78135d9 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -7,12 +7,18 @@
ADD_EXECUTABLE(zipcmp zipcmp.c ${SRC_EXTRA_FILES})
TARGET_LINK_LIBRARIES(zipcmp zip ${FTS_LIB} ${ZLIB_LIBRARIES})
-INSTALL(TARGETS zipcmp EXPORT ${PROJECT_NAME}-targets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+IF(LIBZIP_DO_INSTALL)
+ INSTALL(TARGETS zipcmp EXPORT ${PROJECT_NAME}-targets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+ENDIF()
ADD_EXECUTABLE(zipmerge zipmerge.c ${SRC_EXTRA_FILES})
TARGET_LINK_LIBRARIES(zipmerge zip)
-INSTALL(TARGETS zipmerge EXPORT ${PROJECT_NAME}-targets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+IF(LIBZIP_DO_INSTALL)
+ INSTALL(TARGETS zipmerge EXPORT ${PROJECT_NAME}-targets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+ENDIF()
ADD_EXECUTABLE(ziptool ziptool.c ${SRC_EXTRA_FILES})
TARGET_LINK_LIBRARIES(ziptool zip)
-INSTALL(TARGETS ziptool EXPORT ${PROJECT_NAME}-targets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+IF(LIBZIP_DO_INSTALL)
+ INSTALL(TARGETS ziptool EXPORT ${PROJECT_NAME}-targets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+ENDIF()