Path: blob/master/Utilities/cmlibarchive/libarchive/CMakeLists.txt
5044 views
1############################################2#3# How to build libarchive4#5############################################67if (ANDROID)8include_directories(${PROJECT_SOURCE_DIR}/contrib/android/include)9endif()1011# Public headers12SET(include_HEADERS13archive.h14archive_entry.h15)1617# Sources and private headers18SET(libarchive_SOURCES19archive_acl.c20archive_acl_private.h21archive_check_magic.c22archive_cmdline.c23archive_cmdline_private.h24archive_crc32.h25archive_cryptor.c26archive_cryptor_private.h27archive_digest.c28archive_digest_private.h29archive_endian.h30archive_entry.c31archive_entry.h32archive_entry_copy_stat.c33archive_entry_link_resolver.c34archive_entry_locale.h35archive_entry_private.h36archive_entry_sparse.c37archive_entry_stat.c38archive_entry_strmode.c39archive_entry_xattr.c40archive_hmac.c41archive_hmac_private.h42archive_match.c43archive_openssl_evp_private.h44archive_openssl_hmac_private.h45archive_options.c46archive_options_private.h47archive_pack_dev.h48archive_pack_dev.c49archive_parse_date.c50archive_pathmatch.c51archive_pathmatch.h52archive_platform.h53archive_platform_acl.h54archive_platform_stat.h55archive_platform_xattr.h56archive_ppmd_private.h57archive_ppmd8.c58archive_ppmd8_private.h59archive_ppmd7.c60archive_ppmd7_private.h61archive_private.h62archive_random.c63archive_random_private.h64archive_rb.c65archive_rb.h66archive_read.c67archive_read_add_passphrase.c68archive_read_append_filter.c69archive_read_data_into_fd.c70archive_read_disk_entry_from_file.c71archive_read_disk_posix.c72archive_read_disk_private.h73archive_read_disk_set_standard_lookup.c74archive_read_extract.c75archive_read_extract2.c76archive_read_open_fd.c77archive_read_open_file.c78archive_read_open_filename.c79archive_read_open_memory.c80archive_read_private.h81archive_read_set_format.c82archive_read_set_options.c83archive_read_support_filter_all.c84archive_read_support_filter_by_code.c85archive_read_support_filter_bzip2.c86archive_read_support_filter_compress.c87archive_read_support_filter_gzip.c88archive_read_support_filter_grzip.c89archive_read_support_filter_lrzip.c90archive_read_support_filter_lz4.c91archive_read_support_filter_lzop.c92archive_read_support_filter_none.c93archive_read_support_filter_program.c94archive_read_support_filter_rpm.c95archive_read_support_filter_uu.c96archive_read_support_filter_xz.c97archive_read_support_filter_zstd.c98archive_read_support_format_7zip.c99archive_read_support_format_all.c100archive_read_support_format_ar.c101archive_read_support_format_by_code.c102archive_read_support_format_cab.c103archive_read_support_format_cpio.c104archive_read_support_format_empty.c105archive_read_support_format_iso9660.c106archive_read_support_format_lha.c107archive_read_support_format_mtree.c108archive_read_support_format_rar.c109archive_read_support_format_rar5.c110archive_read_support_format_raw.c111archive_read_support_format_tar.c112archive_read_support_format_warc.c113archive_read_support_format_xar.c114archive_read_support_format_zip.c115archive_string.c116archive_string.h117archive_string_composition.h118archive_string_sprintf.c119archive_time.c120archive_time_private.h121archive_util.c122archive_version_details.c123archive_virtual.c124archive_write.c125archive_write_disk_posix.c126archive_write_disk_private.h127archive_write_disk_set_standard_lookup.c128archive_write_private.h129archive_write_open_fd.c130archive_write_open_file.c131archive_write_open_filename.c132archive_write_open_memory.c133archive_write_add_filter.c134archive_write_add_filter_b64encode.c135archive_write_add_filter_by_name.c136archive_write_add_filter_bzip2.c137archive_write_add_filter_compress.c138archive_write_add_filter_grzip.c139archive_write_add_filter_gzip.c140archive_write_add_filter_lrzip.c141archive_write_add_filter_lz4.c142archive_write_add_filter_lzop.c143archive_write_add_filter_none.c144archive_write_add_filter_program.c145archive_write_add_filter_uuencode.c146archive_write_add_filter_xz.c147archive_write_add_filter_zstd.c148archive_write_set_format.c149archive_write_set_format_7zip.c150archive_write_set_format_ar.c151archive_write_set_format_by_name.c152archive_write_set_format_cpio.c153archive_write_set_format_cpio_binary.c154archive_write_set_format_cpio_newc.c155archive_write_set_format_cpio_odc.c156archive_write_set_format_filter_by_ext.c157archive_write_set_format_gnutar.c158archive_write_set_format_iso9660.c159archive_write_set_format_mtree.c160archive_write_set_format_pax.c161archive_write_set_format_private.h162archive_write_set_format_raw.c163archive_write_set_format_shar.c164archive_write_set_format_ustar.c165archive_write_set_format_v7tar.c166archive_write_set_format_warc.c167archive_write_set_format_xar.c168archive_write_set_format_zip.c169archive_write_set_options.c170archive_write_set_passphrase.c171archive_xxhash.h172filter_fork_posix.c173filter_fork.h174xxhash.c175)176177# Man pages178SET(libarchive_MANS179archive_entry.3180archive_entry_acl.3181archive_entry_linkify.3182archive_entry_misc.3183archive_entry_paths.3184archive_entry_perms.3185archive_entry_stat.3186archive_entry_time.3187archive_read.3188archive_read_add_passphrase.3189archive_read_data.3190archive_read_disk.3191archive_read_extract.3192archive_read_filter.3193archive_read_format.3194archive_read_free.3195archive_read_header.3196archive_read_new.3197archive_read_open.3198archive_read_set_options.3199archive_util.3200archive_write.3201archive_write_blocksize.3202archive_write_data.3203archive_write_disk.3204archive_write_filter.3205archive_write_finish_entry.3206archive_write_format.3207archive_write_free.3208archive_write_header.3209archive_write_new.3210archive_write_open.3211archive_write_set_options.3212archive_write_set_passphrase.3213cpio.5214libarchive.3215libarchive_changes.3216libarchive_internals.3217libarchive-formats.5218mtree.5219tar.5220)221222IF(WIN32 AND NOT CYGWIN)223LIST(APPEND libarchive_SOURCES archive_entry_copy_bhfi.c)224LIST(APPEND libarchive_SOURCES archive_read_disk_windows.c)225LIST(APPEND libarchive_SOURCES archive_windows.c)226LIST(APPEND libarchive_SOURCES archive_windows.h)227LIST(APPEND libarchive_SOURCES archive_write_disk_windows.c)228LIST(APPEND libarchive_SOURCES filter_fork_windows.c)229ENDIF(WIN32 AND NOT CYGWIN)230231IF(ARCHIVE_BLAKE2)232LIST(APPEND libarchive_SOURCES archive_blake2sp_ref.c)233LIST(APPEND libarchive_SOURCES archive_blake2s_ref.c)234ENDIF(ARCHIVE_BLAKE2)235236IF(ARCHIVE_ACL_DARWIN)237LIST(APPEND libarchive_SOURCES archive_disk_acl_darwin.c)238ELSEIF(ARCHIVE_ACL_FREEBSD)239LIST(APPEND libarchive_SOURCES archive_disk_acl_freebsd.c)240ELSEIF(ARCHIVE_ACL_LIBACL)241LIST(APPEND libarchive_SOURCES archive_disk_acl_linux.c)242ELSEIF(ARCHIVE_ACL_SUNOS)243LIST(APPEND libarchive_SOURCES archive_disk_acl_sunos.c)244ENDIF()245246# CMake needs just one static "cmlibarchive" library.247ADD_LIBRARY(cmlibarchive STATIC ${libarchive_SOURCES} ${include_HEADERS})248TARGET_LINK_LIBRARIES(cmlibarchive ${ADDITIONAL_LIBS})249250if(WIN32 AND CMake_BUILD_PCH)251target_precompile_headers(cmlibarchive PRIVATE "archive_platform.h" "archive_entry.h" "<cm3p/bzlib.h>")252endif()253254IF(0) # CMake does not build libarchive's full package.255# Libarchive is a shared library256IF(BUILD_SHARED_LIBS)257ADD_LIBRARY(archive SHARED ${libarchive_SOURCES} ${include_HEADERS})258TARGET_INCLUDE_DIRECTORIES(archive PUBLIC .)259TARGET_LINK_LIBRARIES(archive ${ADDITIONAL_LIBS})260SET_TARGET_PROPERTIES(archive PROPERTIES261VERSION ${SOVERSION_FULL}262SOVERSION ${SOVERSION}263MACHO_COMPATIBILITY_VERSION ${MACHO_COMPATIBILITY_VERSION}264MACHO_CURRENT_VERSION ${MACHO_CURRENT_VERSION})265IF(WIN32 AND MSVC AND MSVC_USE_STATIC_CRT)266SET_PROPERTY(TARGET archive PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")267ENDIF(WIN32 AND MSVC AND MSVC_USE_STATIC_CRT)268ENDIF(BUILD_SHARED_LIBS)269270# archive_static is a static library271ADD_LIBRARY(archive_static STATIC ${libarchive_SOURCES} ${include_HEADERS})272TARGET_INCLUDE_DIRECTORIES(archive_static PUBLIC .)273TARGET_LINK_LIBRARIES(archive_static ${ADDITIONAL_LIBS})274SET_TARGET_PROPERTIES(archive_static PROPERTIES COMPILE_DEFINITIONS275LIBARCHIVE_STATIC)276IF(WIN32 AND MSVC AND MSVC_USE_STATIC_CRT)277SET_PROPERTY(TARGET archive_static PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")278ENDIF(WIN32 AND MSVC AND MSVC_USE_STATIC_CRT)279# On Posix systems, libarchive.so and libarchive.a can co-exist.280IF(NOT WIN32 OR CYGWIN OR NOT BUILD_SHARED_LIBS)281SET_TARGET_PROPERTIES(archive_static PROPERTIES OUTPUT_NAME archive)282ENDIF(NOT WIN32 OR CYGWIN OR NOT BUILD_SHARED_LIBS)283284IF(ENABLE_INSTALL)285# How to install the libraries286IF(BUILD_SHARED_LIBS)287INSTALL(TARGETS archive288RUNTIME DESTINATION bin289LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}290ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})291ENDIF(BUILD_SHARED_LIBS)292INSTALL(TARGETS archive_static293RUNTIME DESTINATION bin294LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}295ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})296INSTALL_MAN(${libarchive_MANS})297INSTALL(FILES ${include_HEADERS} DESTINATION include)298ENDIF()299300add_subdirectory(test)301ENDIF()302303304