aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Renieris <velocityra@gmail.com>2020-05-18 20:38:59 +0300
committerGitHub <noreply@github.com>2020-05-18 10:38:59 -0700
commit9f0f0bdedc512519e37a5c5e5651984725a90573 (patch)
treeccd209d8d64399f09e1e79fd1c37e54bbb049b42
parent6b871df7e03690dafdc6d65f606fef036f5db4e8 (diff)
downloadvcpkg-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.txt84
-rw-r--r--ports/libvmdk/CONTROL6
-rw-r--r--ports/libvmdk/Config.cmake.in4
-rw-r--r--ports/libvmdk/no_fs_and_fadvise_on_macos.patch25
-rw-r--r--ports/libvmdk/portfile.cmake35
-rw-r--r--scripts/ci.baseline.txt2
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