aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormyd7349 <myd7349@gmail.com>2019-09-13 02:04:29 +0800
committerVictor Romero <romerosanchezv@gmail.com>2019-09-12 11:04:29 -0700
commit0c990cbfe0fa31dd97bb41a95c1fc412cb8caf32 (patch)
tree06a42ba522317973615bd61ffe2fa02b7455060e
parent4dc3c7a64f9166442a0e101721395b749697d5b6 (diff)
downloadvcpkg-0c990cbfe0fa31dd97bb41a95c1fc412cb8caf32.tar.gz
vcpkg-0c990cbfe0fa31dd97bb41a95c1fc412cb8caf32.zip
[argtable3] Add new port (#7815)
* [argtable3] Add new port * [argtable3] Update patch * [argtable3] Update patch * [argtable3] Add vcpkg-cmake-wrapper.cmake
-rw-r--r--ports/argtable3/CONTROL4
-rw-r--r--ports/argtable3/fix-cmake.patch98
-rw-r--r--ports/argtable3/portfile.cmake53
-rw-r--r--ports/argtable3/vcpkg-cmake-wrapper.cmake9
4 files changed, 164 insertions, 0 deletions
diff --git a/ports/argtable3/CONTROL b/ports/argtable3/CONTROL
new file mode 100644
index 000000000..f894b4fc5
--- /dev/null
+++ b/ports/argtable3/CONTROL
@@ -0,0 +1,4 @@
+Source: argtable3
+Version: 2019-08-21
+Description: A single-file, ANSI C, command-line parsing library that parses GNU-style command-line options
+Homepage: www.argtable.org
diff --git a/ports/argtable3/fix-cmake.patch b/ports/argtable3/fix-cmake.patch
new file mode 100644
index 000000000..320e6385e
--- /dev/null
+++ b/ports/argtable3/fix-cmake.patch
@@ -0,0 +1,98 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 57bd7a1..e19e677 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -65,10 +65,6 @@ if(ARGTABLE3_ENABLE_CONAN AND EXISTS "${CMAKE_BINARY_DIR}/conanbuildinfo.cmake")
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath-link,${LINK_FLAGS}")
+ endif()
+
+-if(ARGTABLE3_ENABLE_TESTS)
+- enable_testing()
+-endif()
+-
+ set(ARGTABLE3_AMALGAMATION_SRC_FILE ${PROJECT_SOURCE_DIR}/dist/argtable3.c)
+ set(ARGTABLE3_SRC_FILES
+ ${PROJECT_SOURCE_DIR}/src/arg_cmd.c
+@@ -88,18 +84,11 @@ set(ARGTABLE3_SRC_FILES
+ ${PROJECT_SOURCE_DIR}/src/getopt_long.c
+ )
+
+-# Platform specific settings for installation
+-if(UNIX)
+- include(GNUInstallDirs)
+- set(ARGTABLE3_INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR})
+- set(ARGTABLE3_INSTALL_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR})
+- set(ARGTABLE3_INSTALL_CMAKEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/argtable3)
+-elseif(WIN32)
+- set(ARGTABLE3_INSTALL_LIBDIR "lib")
+- set(ARGTABLE3_INSTALL_INCLUDEDIR "include")
+- set(ARGTABLE3_INSTALL_CMAKEDIR "cmake")
+-endif(UNIX)
+-
+ add_subdirectory(src)
+-add_subdirectory(tests)
++
++if(ARGTABLE3_ENABLE_TESTS)
++ enable_testing()
++ add_subdirectory(tests)
++endif()
++
+ add_subdirectory(examples)
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 429b143..f45c071 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -28,9 +28,19 @@
+ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ ################################################################################
+
+-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c89 -Wpedantic")
+-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
+-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra")
++include(GNUInstallDirs)
++
++if(UNIX)
++ set(ARGTABLE3_INSTALL_CMAKEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/argtable3)
++elseif(WIN32)
++ set(ARGTABLE3_INSTALL_CMAKEDIR "cmake")
++endif(UNIX)
++
++if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang")
++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c89 -Wpedantic")
++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra")
++endif()
+
+ add_definitions(-D_XOPEN_SOURCE=700)
+
+@@ -46,6 +56,7 @@ if(WIN32)
+ "${PROJECT_BINARY_DIR}/src/version.rc"
+ )
+ add_library(argtable3 SHARED ${ARGTABLE3_SRC_FILES} "${PROJECT_BINARY_DIR}/src/version.rc")
++ target_compile_definitions(argtable3 INTERFACE argtable3_IMPORTS)
+ else()
+ add_library(argtable3 SHARED ${ARGTABLE3_SRC_FILES})
+ endif()
+@@ -57,8 +68,18 @@ target_include_directories(argtable3 PRIVATE ${PROJECT_SOURCE_DIR}/src)
+ set_target_properties(argtable3 argtable3_static PROPERTIES
+ VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}
+ SOVERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR})
+-
+-install(TARGETS argtable3 EXPORT ${ARGTABLE3_PACKAGE_NAME}Config DESTINATION ${ARGTABLE3_INSTALL_LIBDIR})
+-install(TARGETS argtable3_static EXPORT ${ARGTABLE3_PACKAGE_NAME}Config ARCHIVE DESTINATION ${ARGTABLE3_INSTALL_LIBDIR})
+-install(FILES "${PROJECT_SOURCE_DIR}/src/argtable3.h" DESTINATION ${ARGTABLE3_INSTALL_INCLUDEDIR})
++if(BUILD_SHARED_LIBS)
++install(TARGETS argtable3
++ EXPORT ${ARGTABLE3_PACKAGE_NAME}Config
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
++else()
++install(TARGETS argtable3_static
++ EXPORT ${ARGTABLE3_PACKAGE_NAME}Config
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
++endif()
++install(FILES "${PROJECT_SOURCE_DIR}/src/argtable3.h" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+ install(EXPORT ${ARGTABLE3_PACKAGE_NAME}Config DESTINATION ${ARGTABLE3_INSTALL_CMAKEDIR})
diff --git a/ports/argtable3/portfile.cmake b/ports/argtable3/portfile.cmake
new file mode 100644
index 000000000..18d994cc5
--- /dev/null
+++ b/ports/argtable3/portfile.cmake
@@ -0,0 +1,53 @@
+include(vcpkg_common_functions)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO argtable/argtable3
+ REF bbc4ec20991e87ecf8dcf288aef777b55b78daa7
+ SHA512 050f54ead2d029715d8f10e63ff555027ead61fbfa18bd955e3b99e080f9178ad5c41937c5d62477885143f27bb9e7e505a7120b95bfcd899a60719584191f1c
+ HEAD_REF master
+ PATCHES
+ fix-cmake.patch
+)
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ OPTIONS
+ -DARGTABLE3_ENABLE_CONAN=OFF
+ -DARGTABLE3_ENABLE_TESTS=OFF
+ -DARGTABLE3_BUILD_STATIC_EXAMPLES=OFF
+)
+
+vcpkg_install_cmake()
+
+vcpkg_copy_pdbs()
+
+if(EXISTS ${CURRENT_PACKAGES_DIR}/cmake)
+ vcpkg_fixup_cmake_targets(CONFIG_PATH cmake)
+elseif(EXISTS ${CURRENT_PACKAGES_DIR}/lib/cmake/${PORT})
+ vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/${PORT})
+endif()
+
+file(COPY
+ ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake
+ DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}
+)
+
+file(REMOVE_RECURSE
+ ${CURRENT_PACKAGES_DIR}/debug/include
+)
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
+ vcpkg_replace_string(
+ "${CURRENT_PACKAGES_DIR}/include/argtable3.h"
+ "defined(argtable3_IMPORTS)"
+ "1 // defined(argtable3_IMPORTS)"
+ )
+endif()
+
+# Handle copyright
+configure_file(${SOURCE_PATH}/LICENSE ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright COPYONLY)
+
+# CMake integration test
+vcpkg_test_cmake(PACKAGE_NAME ${PORT})
diff --git a/ports/argtable3/vcpkg-cmake-wrapper.cmake b/ports/argtable3/vcpkg-cmake-wrapper.cmake
new file mode 100644
index 000000000..9000246de
--- /dev/null
+++ b/ports/argtable3/vcpkg-cmake-wrapper.cmake
@@ -0,0 +1,9 @@
+_find_package(${ARGS})
+
+if(TARGET argtable3 AND NOT TARGET argtable3_static)
+ add_library(argtable3_static INTERFACE IMPORTED)
+ set_target_properties(argtable3_static PROPERTIES INTERFACE_LINK_LIBRARIES argtable3)
+elseif(TARGET argtable3_static AND NOT TARGET argtable3)
+ add_library(argtable3 INTERFACE IMPORTED)
+ set_target_properties(argtable3 PROPERTIES INTERFACE_LINK_LIBRARIES argtable3_static)
+endif()