diff options
| author | Nick Renieris <velocityra@gmail.com> | 2020-05-18 20:38:59 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-18 10:38:59 -0700 |
| commit | 9f0f0bdedc512519e37a5c5e5651984725a90573 (patch) | |
| tree | ccd209d8d64399f09e1e79fd1c37e54bbb049b42 | |
| parent | 6b871df7e03690dafdc6d65f606fef036f5db4e8 (diff) | |
| download | vcpkg-9f0f0bdedc512519e37a5c5e5651984725a90573.tar.gz vcpkg-9f0f0bdedc512519e37a5c5e5651984725a90573.zip | |
[libvmdk] Initial port (#11010)
* [libvmdk] Initial port
Signed-off-by: Nick Renieris <velocityra@gmail.com>
* Update scripts/ci.baseline.txt
Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>
| -rw-r--r-- | ports/libvmdk/CMakeLists.txt | 84 | ||||
| -rw-r--r-- | ports/libvmdk/CONTROL | 6 | ||||
| -rw-r--r-- | ports/libvmdk/Config.cmake.in | 4 | ||||
| -rw-r--r-- | ports/libvmdk/no_fs_and_fadvise_on_macos.patch | 25 | ||||
| -rw-r--r-- | ports/libvmdk/portfile.cmake | 35 | ||||
| -rw-r--r-- | scripts/ci.baseline.txt | 2 |
6 files changed, 156 insertions, 0 deletions
diff --git a/ports/libvmdk/CMakeLists.txt b/ports/libvmdk/CMakeLists.txt new file mode 100644 index 000000000..1fb043d90 --- /dev/null +++ b/ports/libvmdk/CMakeLists.txt @@ -0,0 +1,84 @@ +cmake_minimum_required(VERSION 3.12)
+
+project(libvmdk C)
+
+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_LIBCAES)
+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_LIBUNA)
+add_compile_definitions(HAVE_LOCAL_LIBBFIO)
+add_compile_definitions(HAVE_LOCAL_LIBFCACHE)
+add_compile_definitions(HAVE_LOCAL_LIBFDATA)
+add_compile_definitions(HAVE_LOCAL_LIBFVALUE)
+add_compile_definitions(ZLIB_DLL)
+
+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(LIBVMDK_DLL_EXPORT)
+ set(LIB_RC libvmdk/libvmdk.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 "libvmdk::")
+
+# Source files
+file(GLOB LIB_SRC lib*/*.c)
+
+# Headers
+file(GLOB LIB_INST_HEADERS include/libvmdk/*.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 ./libfcache ./libfdata ./libfvalue ./libuna)
+
+target_link_libraries(${PROJECT_NAME} PRIVATE ZLIB::ZLIB)
+
+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/libvmdk)
+install(FILES include/libvmdk.h DESTINATION include)
+
+
+# Generate and install libvmdkConfig.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 libvmdkTargets*.cmake
+install(EXPORT ${TARGETS_EXPORT_NAME}
+ NAMESPACE ${NAMESPACE}
+ DESTINATION "${CONFIG_INSTALL_DIR}")
+
diff --git a/ports/libvmdk/CONTROL b/ports/libvmdk/CONTROL new file mode 100644 index 000000000..8eeff87d0 --- /dev/null +++ b/ports/libvmdk/CONTROL @@ -0,0 +1,6 @@ +Source: libvmdk
+Version: 2019-12-21
+Homepage: https://github.com/libyal/libvmdk
+Description: Library and tools to access the VMware Virtual Disk (VMDK) format
+Build-Depends: gettext,zlib
+Supports: !uwp
diff --git a/ports/libvmdk/Config.cmake.in b/ports/libvmdk/Config.cmake.in new file mode 100644 index 000000000..bd6bd4532 --- /dev/null +++ b/ports/libvmdk/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/libvmdk/no_fs_and_fadvise_on_macos.patch b/ports/libvmdk/no_fs_and_fadvise_on_macos.patch new file mode 100644 index 000000000..3e95869fe --- /dev/null +++ b/ports/libvmdk/no_fs_and_fadvise_on_macos.patch @@ -0,0 +1,25 @@ +diff --git a/libcfile/libcfile_file.c b/libcfile/libcfile_file.c +index 13eab02..690cc04 100644 +--- a/libcfile/libcfile_file.c ++++ b/libcfile/libcfile_file.c +@@ -56,7 +56,7 @@ + #elif defined( HAVE_CYGWIN_FS_H ) + #include <cygwin/fs.h> + +-#elif defined( HAVE_LINUX_FS_H ) ++#elif defined( __linux__ ) && defined( HAVE_LINUX_FS_H ) + /* Required for Linux platforms that use a sizeof( u64 ) + * in linux/fs.h but have no typedef of it + */ +@@ -4603,6 +4603,11 @@ ssize_t libcfile_file_io_control_read_with_error_code( + #error Missing file IO control with data function + #endif + ++// Force disable on Darwin, it can be erroneously defined ++#if defined ( __APPLE__ ) ++#undef HAVE_POSIX_FADVISE ++#endif ++ + /* On some versions of Linux the FADVISE definions seem to be missing from fcntl.h + */ + #if defined( HAVE_POSIX_FADVISE ) && !defined( WINAPI ) diff --git a/ports/libvmdk/portfile.cmake b/ports/libvmdk/portfile.cmake new file mode 100644 index 000000000..7fc06f802 --- /dev/null +++ b/ports/libvmdk/portfile.cmake @@ -0,0 +1,35 @@ +vcpkg_fail_port_install(ON_TARGET "uwp")
+
+set(LIB_VERSION 20191221)
+set(LIB_FILENAME libvmdk-alpha-${LIB_VERSION}.tar.gz)
+
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://github.com/libyal/libvmdk/releases/download/${LIB_VERSION}/${LIB_FILENAME}"
+ FILENAME "${LIB_FILENAME}"
+ SHA512 fd14760034ada2b01599f6c812b1a94592067bc224495aaae736d81d08629b1904935f43516513ba726d2d04589aa816c17b72a6f9ae035ee0030dba93dce865
+)
+
+vcpkg_extract_source_archive_ex(
+ OUT_SOURCE_PATH SOURCE_PATH
+ ARCHIVE ${ARCHIVE}
+ REF ${LIB_VERSION}
+ PATCHES no_fs_and_fadvise_on_macos.patch
+)
+
+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/libvmdk" TARGET_PATH "share/libvmdk")
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+
+file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
+
+vcpkg_copy_pdbs()
diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt index 3cf2987d2..3d118c6d3 100644 --- a/scripts/ci.baseline.txt +++ b/scripts/ci.baseline.txt @@ -990,6 +990,8 @@ libuuid:x86-windows=fail libuv:arm64-windows=fail
libuv:arm-uwp=fail
libuv:x64-uwp=fail
+libvmdk:arm-uwp=fail
+libvmdk:x64-uwp=fail
libvpx:arm-uwp=fail
libvpx:arm64-windows=fail
libwandio:x86-windows=fail
|
