diff --git a/ports/libodraw/CMakeLists.txt b/ports/libodraw/CMakeLists.txt new file mode 100644 index 00000000000000..1e649c9e80fa39 --- /dev/null +++ b/ports/libodraw/CMakeLists.txt @@ -0,0 +1,80 @@ +cmake_minimum_required(VERSION 3.12) + +project(libodraw C) + +find_package(OpenSSL REQUIRED) +find_package(ZLIB REQUIRED) + +if(MSVC) + add_compile_definitions(_CRT_SECURE_NO_DEPRECATE) + add_compile_definitions(_CRT_NONSTDC_NO_DEPRECATE) +endif() + +add_compile_definitions(HAVE_LOCAL_LIBBFIO) +add_compile_definitions(HAVE_LOCAL_LIBCERROR) +add_compile_definitions(HAVE_LOCAL_LIBCTHREADS) +add_compile_definitions(HAVE_LOCAL_LIBCDATA) +add_compile_definitions(HAVE_LOCAL_LIBCLOCALE) +add_compile_definitions(HAVE_LOCAL_LIBCNOTIFY) +add_compile_definitions(HAVE_LOCAL_LIBCSPLIT) +add_compile_definitions(HAVE_LOCAL_LIBCFILE) +add_compile_definitions(HAVE_LOCAL_LIBCPATH) +add_compile_definitions(HAVE_LOCAL_LIBHMAC) +add_compile_definitions(HAVE_LOCAL_LIBUNA) + +if(UNIX) + configure_file(common/config.h.in common/config.h) + add_compile_definitions(HAVE_CONFIG_H) + add_compile_definitions(LOCALEDIR="/usr/share/locale") +endif() + +if(MSVC) + add_compile_definitions(LIBODRAW_DLL_EXPORT) + set(LIB_RC libodraw/libodraw.rc) +endif() + + +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) + +# Add CMake find_package() integration +set(PROJECT_TARGET_NAME "${PROJECT_NAME}") +set(CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") +set(PROJECT_CONFIG "${CMAKE_CURRENT_BINARY_DIR}/generated/${PROJECT_TARGET_NAME}Config.cmake") +set(TARGETS_EXPORT_NAME "${PROJECT_TARGET_NAME}Targets") +set(NAMESPACE "libodraw::") + +# Source files +file(GLOB LIB_SRC lib*/*.c) + +# Headers +file(GLOB LIB_INST_HEADERS include/libodraw/*.h) + +add_library(${PROJECT_NAME} ${LIB_SRC} ${LIB_RC}) + +target_include_directories(${PROJECT_NAME} PRIVATE ./include ./common) +target_include_directories(${PROJECT_NAME} PRIVATE ./libbfio ./libcdata ./libcerror ./libcfile ./libclocale) +target_include_directories(${PROJECT_NAME} PRIVATE ./libcnotify ./libcpath ./libcsplit ./libcthreads) +target_include_directories(${PROJECT_NAME} PRIVATE ./libhmac ./libuna) + +target_link_libraries(${PROJECT_NAME} PRIVATE ZLIB::ZLIB OpenSSL::Crypto) + +install(TARGETS ${PROJECT_NAME} + EXPORT ${TARGETS_EXPORT_NAME} + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + INCLUDES DESTINATION include) + +install(FILES ${LIB_INST_HEADERS} DESTINATION include/libodraw) +install(FILES include/libodraw.h DESTINATION include) + + +# Generate and install libodrawConfig.cmake +configure_package_config_file("Config.cmake.in" "${PROJECT_CONFIG}" INSTALL_DESTINATION "${CONFIG_INSTALL_DIR}") +install(FILES "${PROJECT_CONFIG}" DESTINATION "${CONFIG_INSTALL_DIR}") + +# Generate and install libodrawTargets*.cmake +install(EXPORT ${TARGETS_EXPORT_NAME} + NAMESPACE ${NAMESPACE} + DESTINATION "${CONFIG_INSTALL_DIR}") diff --git a/ports/libodraw/CONTROL b/ports/libodraw/CONTROL new file mode 100644 index 00000000000000..1570ccf488e2fd --- /dev/null +++ b/ports/libodraw/CONTROL @@ -0,0 +1,4 @@ +Source: libodraw +Version: 2019-01-18 +Build-Depends: openssl,zlib +Description: Library and tools to access to optical disc (split) RAW image files (BIN/CUE, ISO/CUE). diff --git a/ports/libodraw/Config.cmake.in b/ports/libodraw/Config.cmake.in new file mode 100644 index 00000000000000..bd6bd4532b6282 --- /dev/null +++ b/ports/libodraw/Config.cmake.in @@ -0,0 +1,4 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake") +check_required_components("@PROJECT_NAME@") diff --git a/ports/libodraw/portfile.cmake b/ports/libodraw/portfile.cmake new file mode 100644 index 00000000000000..0f8dd9f46f20d2 --- /dev/null +++ b/ports/libodraw/portfile.cmake @@ -0,0 +1,37 @@ +include(vcpkg_common_functions) + +vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY) + +set(LIB_VERSION 20190118) +set(LIB_FILENAME libodraw-alpha-${LIB_VERSION}.tar.gz) + +# Release distribution file contains configured sources, while the source code in the repository does not. +vcpkg_download_distfile(ARCHIVE + URLS "https://github.com/libyal/libodraw/releases/download/${LIB_VERSION}/${LIB_FILENAME}" + FILENAME "${LIB_FILENAME}" + SHA512 db7e44867d75c8742bbc1655d6c7cdfbf27542bff2bcca32bb2bebaedaa6f98488fd9fe2f20d4d652a6f39c9aff8cc4805dbbb07661e1c90a913396a9d39e708 +) + +vcpkg_extract_source_archive_ex( + OUT_SOURCE_PATH SOURCE_PATH + ARCHIVE ${ARCHIVE} + REF ${LIB_VERSION} +) + +file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}") +file(COPY "${CMAKE_CURRENT_LIST_DIR}/Config.cmake.in" DESTINATION "${SOURCE_PATH}") + +vcpkg_configure_cmake( + SOURCE_PATH "${SOURCE_PATH}" + PREFER_NINJA +) +vcpkg_install_cmake() + +vcpkg_fixup_cmake_targets(CONFIG_PATH "lib/cmake/libodraw" TARGET_PATH "share/libodraw") + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +# License and man +file(INSTALL "${SOURCE_PATH}/COPYING" DESTINATION "${CURRENT_PACKAGES_DIR}/share/libodraw" RENAME copyright) + +vcpkg_copy_pdbs()