aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/portable-snippets
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/portable-snippets')
-rw-r--r--vcpkg/ports/portable-snippets/CMakeLists.txt100
-rw-r--r--vcpkg/ports/portable-snippets/portfile.cmake26
-rw-r--r--vcpkg/ports/portable-snippets/vcpkg.json19
3 files changed, 145 insertions, 0 deletions
diff --git a/vcpkg/ports/portable-snippets/CMakeLists.txt b/vcpkg/ports/portable-snippets/CMakeLists.txt
new file mode 100644
index 0000000..0931363
--- /dev/null
+++ b/vcpkg/ports/portable-snippets/CMakeLists.txt
@@ -0,0 +1,100 @@
+cmake_minimum_required(VERSION 3.14)
+
+project(portable-snippets LANGUAGES C)
+
+include(GNUInstallDirs)
+
+option(PSNIP_INSTALL_HEADERS "Install header files" ON)
+
+# https://stackoverflow.com/questions/7787823/cmake-how-to-get-the-name-of-all-subdirectories-of-a-directory
+function (list_subdir output_variable path)
+ file(GLOB sub_entries RELATIVE ${path} ${path}/*)
+
+ set(dirlist "")
+
+ foreach (entry ${sub_entries})
+ if (IS_DIRECTORY ${path}/${entry})
+ list(APPEND dirlist ${entry})
+ endif ()
+ endforeach ()
+
+ set(${output_variable} ${dirlist} PARENT_SCOPE)
+endfunction ()
+
+function (check_if_header_only output_variable files)
+ set(is_header_only 1)
+
+ foreach (entry ${files})
+ get_filename_component(file_ext ${entry} EXT)
+ if (file_ext STREQUAL .c)
+ set(is_header_only 0)
+ endif ()
+ endforeach ()
+
+ set(${output_variable} ${is_header_only} PARENT_SCOPE)
+endfunction ()
+
+list_subdir(subdirs ${CMAKE_CURRENT_LIST_DIR})
+list(REMOVE_ITEM subdirs tests)
+
+set(namespace unofficial::portable-snippets)
+
+foreach (subdir ${subdirs})
+ set(module ${subdir})
+ set(module_path "${CMAKE_CURRENT_LIST_DIR}/${subdir}")
+
+ file(GLOB entries
+ LIST_DIRECTORIES false
+ ${module_path}/*.h
+ ${module_path}/*.c
+ )
+
+ check_if_header_only(header_only "${entries}")
+
+ if (header_only)
+ add_library(${module} INTERFACE)
+
+ target_include_directories(
+ ${module}
+ INTERFACE
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
+ )
+ else ()
+ add_library(${module} STATIC ${entries})
+
+ if (MSVC)
+ target_compile_definitions(${module} PUBLIC __STDC_NO_THREADS__=1)
+ endif ()
+
+ set_target_properties(
+ ${module}
+ PROPERTIES
+ PREFIX ""
+ OUTPUT_NAME "psnip-${module}"
+ )
+
+ target_include_directories(
+ ${module}
+ PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
+ )
+
+ list(FILTER entries EXCLUDE REGEX "\.c$")
+ endif ()
+
+ add_library(${namespace}::${module} ALIAS ${module})
+
+ if (PSNIP_INSTALL_HEADERS)
+ install(FILES ${entries} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${subdir})
+ endif ()
+
+ install(TARGETS ${module} EXPORT unofficial-portable-snippets-config)
+endforeach ()
+
+install(
+ EXPORT unofficial-portable-snippets-config
+ NAMESPACE ${namespace}::
+ DESTINATION share/unofficial-portable-snippets
+ PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
+)
diff --git a/vcpkg/ports/portable-snippets/portfile.cmake b/vcpkg/ports/portable-snippets/portfile.cmake
new file mode 100644
index 0000000..6ad89c3
--- /dev/null
+++ b/vcpkg/ports/portable-snippets/portfile.cmake
@@ -0,0 +1,26 @@
+vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO nemequ/portable-snippets
+ REF 26496acb37ab46ee249ea19d45381da6955d89c4
+ SHA512 6213b22e4358b06f92396731d94fd27d4cf3568a47c56c057174c1839929c6a569ad5b1e1302fe0d092c4f393c570607b96e9e977223f86a9e3c2862010f3af0
+ HEAD_REF master
+)
+
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}")
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS_DEBUG
+ -DPSNIP_INSTALL_HEADERS=OFF
+ OPTIONS_RELEASE
+ -DPSNIP_INSTALL_HEADERS=ON
+)
+
+vcpkg_cmake_install()
+
+vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-${PORT})
+
+# Handle copyright
+configure_file("${SOURCE_PATH}/COPYING.md" "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" COPYONLY)
diff --git a/vcpkg/ports/portable-snippets/vcpkg.json b/vcpkg/ports/portable-snippets/vcpkg.json
new file mode 100644
index 0000000..efcb6e5
--- /dev/null
+++ b/vcpkg/ports/portable-snippets/vcpkg.json
@@ -0,0 +1,19 @@
+{
+ "name": "portable-snippets",
+ "version-date": "2019-09-20",
+ "port-version": 4,
+ "description": "Collection of miscellaneous portable C snippets",
+ "homepage": "https://github.com/nemequ/portable-snippets",
+ "license": null,
+ "supports": "!(arm & osx)",
+ "dependencies": [
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ]
+}