diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/duktape | |
Diffstat (limited to 'vcpkg/ports/duktape')
| -rw-r--r-- | vcpkg/ports/duktape/CMakeLists.txt | 56 | ||||
| -rw-r--r-- | vcpkg/ports/duktape/duktapeConfig.cmake | 32 | ||||
| -rw-r--r-- | vcpkg/ports/duktape/portfile.cmake | 37 | ||||
| -rw-r--r-- | vcpkg/ports/duktape/vcpkg.json | 18 |
4 files changed, 143 insertions, 0 deletions
diff --git a/vcpkg/ports/duktape/CMakeLists.txt b/vcpkg/ports/duktape/CMakeLists.txt new file mode 100644 index 0000000..3b2054c --- /dev/null +++ b/vcpkg/ports/duktape/CMakeLists.txt @@ -0,0 +1,56 @@ +cmake_minimum_required(VERSION 3.13) + +option(CMAKE_VERBOSE_MAKEFILE "Create verbose makefile" OFF) +option(BUILD_SHARED_LIBS "Create duktape as a shared library" ON) + +project(duktape VERSION ${VERSION}) + +file(GLOB_RECURSE DUKTAPE_SOURCES "${CMAKE_CURRENT_LIST_DIR}/src/*.c") +file(GLOB_RECURSE DUKTAPE_HEADERS "${CMAKE_CURRENT_LIST_DIR}/src/*.h") + +add_library(duktape ${DUKTAPE_SOURCES} ${DUKTAPE_HEADERS}) +target_include_directories(duktape PRIVATE "${CMAKE_CURRENT_LIST_DIR}/src") +target_include_directories(duktape PUBLIC "$<INSTALL_INTERFACE:include>") +set_target_properties(duktape PROPERTIES PUBLIC_HEADER "${DUKTAPE_HEADERS}") +set_target_properties(duktape PROPERTIES VERSION ${duktape_VERSION}) +set_target_properties(duktape PROPERTIES SOVERSION ${duktape_VERSION_MAJOR}) + +if (BUILD_SHARED_LIBS) + target_compile_definitions(duktape PRIVATE -DDUK_F_DLL_BUILD) +endif () + +install(TARGETS duktape + EXPORT duktapeTargets + ARCHIVE DESTINATION "lib" + LIBRARY DESTINATION "lib" + RUNTIME DESTINATION "bin" + PUBLIC_HEADER DESTINATION "include" + COMPONENT dev +) + +install(EXPORT duktapeTargets + FILE unofficial-duktape-config.cmake + NAMESPACE unofficial::duktape:: + DESTINATION "share/unofficial-duktape" +) + +export(PACKAGE duktape) + +include(CMakePackageConfigHelpers) +write_basic_package_version_file("${PROJECT_BINARY_DIR}/unofficial-duktape-config-version.cmake" + COMPATIBILITY SameMajorVersion +) + +install(FILES + "${PROJECT_BINARY_DIR}/unofficial-duktape-config-version.cmake" + DESTINATION "share/unofficial-duktape" +) + +set(prefix "") +set(LIBDIR "/lib") +set(VERSION "${duktape_VERSION}") +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/duktape.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/duktape.pc" @ONLY) +install( + FILES "${CMAKE_CURRENT_BINARY_DIR}/duktape.pc" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig" +) diff --git a/vcpkg/ports/duktape/duktapeConfig.cmake b/vcpkg/ports/duktape/duktapeConfig.cmake new file mode 100644 index 0000000..94b86d6 --- /dev/null +++ b/vcpkg/ports/duktape/duktapeConfig.cmake @@ -0,0 +1,32 @@ +# - Try to find duktape
+# Once done this will define
+#
+# DUKTAPE_FOUND - system has Duktape
+# DUKTAPE_INCLUDE_DIRS - the Duktape include directory
+# DUKTAPE_LIBRARIES - Link these to use DUKTAPE
+# DUKTAPE_DEFINITIONS - Compiler switches required for using Duktape
+#
+
+include(FindPackageHandleStandardArgs)
+include(SelectLibraryConfigurations)
+
+find_path(DUKTAPE_INCLUDE_DIR duktape.h PATHS "${CMAKE_CURRENT_LIST_DIR}/../../include" NO_DEFAULT_PATH REQUIRED)
+
+find_library(DUKTAPE_LIBRARY_RELEASE NAMES duktape PATHS "${CMAKE_CURRENT_LIST_DIR}/../../lib" NO_DEFAULT_PATH REQUIRED)
+find_library(DUKTAPE_LIBRARY_DEBUG NAMES duktape PATHS "${CMAKE_CURRENT_LIST_DIR}/../../debug/lib" NO_DEFAULT_PATH)
+select_library_configurations(DUKTAPE)
+
+find_package_handle_standard_args(duktape
+ REQUIRED_VARS DUKTAPE_LIBRARY DUKTAPE_INCLUDE_DIR)
+
+if(DUKTAPE_FOUND)
+ set(DUKTAPE_INCLUDE_DIRS "${DUKTAPE_INCLUDE_DIR}")
+ set(DUKTAPE_LIBRARIES "${DUKTAPE_LIBRARY}")
+ set(DUKTAPE_DEFINITIONS "")
+endif ()
+
+mark_as_advanced(
+ DUKTAPE_INCLUDE_DIR
+ DUKTAPE_LIBRARY_RELEASE
+ DUKTAPE_LIBRARY_DEBUG
+)
diff --git a/vcpkg/ports/duktape/portfile.cmake b/vcpkg/ports/duktape/portfile.cmake new file mode 100644 index 0000000..f4e3a9f --- /dev/null +++ b/vcpkg/ports/duktape/portfile.cmake @@ -0,0 +1,37 @@ +vcpkg_download_distfile( + ARCHIVE + URLS https://github.com/svaarala/duktape/releases/download/v2.7.0/duktape-2.7.0.tar.xz + FILENAME duktape-2.7.0.tar.xz + SHA512 8ff5465c9c335ea08ebb0d4a06569c991b9dc4661b63e10da6b123b882e7375e82291d6b883c2644902d68071a29ccc880dae8229447cebe710c910b54496c1d +) + +vcpkg_extract_source_archive( + SOURCE_PATH + ARCHIVE "${ARCHIVE}" +) + +file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}") + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + vcpkg_replace_string("${SOURCE_PATH}/src/duk_config.h" "#undef DUK_F_DLL_BUILD" "#define DUK_F_DLL_BUILD") +else() + vcpkg_replace_string("${SOURCE_PATH}/src/duk_config.h" "#define DUK_F_DLL_BUILD" "#undef DUK_F_DLL_BUILD" IGNORE_UNCHANGED) +endif() + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + "-DVERSION=${VERSION}" +) + +vcpkg_cmake_install() +vcpkg_copy_pdbs() +vcpkg_fixup_pkgconfig() +vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-duktape) + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +# Legacy package based on find commands, not on exported config. +file(COPY "${CURRENT_PORT_DIR}/duktapeConfig.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.txt") diff --git a/vcpkg/ports/duktape/vcpkg.json b/vcpkg/ports/duktape/vcpkg.json new file mode 100644 index 0000000..73d6258 --- /dev/null +++ b/vcpkg/ports/duktape/vcpkg.json @@ -0,0 +1,18 @@ +{ + "name": "duktape", + "version": "2.7.0", + "port-version": 2, + "description": "Embeddable Javascript engine with a focus on portability and compact footprint.", + "homepage": "https://github.com/svaarala/duktape", + "license": "MIT", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} |