From 25f613278886a8055aded1bffb14daba98c39d6c Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Mon, 13 Feb 2023 21:34:00 +0100 Subject: [PATCH] [mujs] Missing fixes (#29635) * [mujs] Fix CMake config, cleanup * Enable shared build on !windows * Install pkg-config file * Handle libm * Official usage: pkgconfig * Update versions --- ports/mujs/CMakeLists.txt | 55 +++++++++++++++++++++------------- ports/mujs/mujs.pc | 11 +++++++ ports/mujs/mujsConfig.cmake.in | 8 ----- ports/mujs/portfile.cmake | 12 +++++--- ports/mujs/usage | 6 ++++ ports/mujs/vcpkg.json | 1 + versions/baseline.json | 2 +- versions/m-/mujs.json | 5 ++++ 8 files changed, 66 insertions(+), 34 deletions(-) create mode 100644 ports/mujs/mujs.pc delete mode 100644 ports/mujs/mujsConfig.cmake.in create mode 100644 ports/mujs/usage diff --git a/ports/mujs/CMakeLists.txt b/ports/mujs/CMakeLists.txt index e70f01c126f680..6a30cf3b5e9625 100644 --- a/ports/mujs/CMakeLists.txt +++ b/ports/mujs/CMakeLists.txt @@ -1,48 +1,61 @@ -cmake_minimum_required(VERSION 3.9) -project(mujs VERSION 1.3.2) +cmake_minimum_required(VERSION 3.25) +project(mujs C) + +set(LINK_LIBRARIES "") +set(PC_LIBS_PRIVATE "") if(MSVC) add_compile_options(/W3 /wd4005 /wd4996 /wd4018 -D_CRT_SECURE_NO_WARNINGS) +else() + find_library(HAVE_LIBM NAMES m) + if(HAVE_LIBM) + list(APPEND LINK_LIBRARIES m) + string(APPEND PC_LIBS_PRIVATE " -lm") + endif() endif() file(GLOB mujs_sources js*.c utf*.c regexp.c) -include_directories(.) - add_library(mujs ${mujs_sources}) -target_include_directories(mujs PUBLIC "$") +target_include_directories(mujs + PUBLIC + "$" + "$" +) -# Add CMake find_package() integration -set(CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") -set(PROJECT_CONFIG "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake") -set(TARGETS_EXPORT_NAME "unofficial-${PROJECT_NAME}Targets") -set(NAMESPACE "unofficial::mujs::") +target_link_libraries(mujs PRIVATE ${LINK_LIBRARIES}) install( TARGETS mujs - EXPORT ${TARGETS_EXPORT_NAME} + EXPORT unofficial-mujs-targets RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) - -export(TARGETS mujs NAMESPACE ${NAMESPACE} FILE mujsTargets.cmake) +install( + EXPORT unofficial-mujs-targets + FILE unofficial-mujs-config.cmake + NAMESPACE unofficial::mujs:: + DESTINATION "share/unofficial-mujs" +) include(CMakePackageConfigHelpers) -write_basic_package_version_file( - mujsConfigVersion.cmake +write_basic_package_version_file(unofficial-mujs-config-version.cmake VERSION ${PACKAGE_VERSION} COMPATIBILITY AnyNewerVersion ) +install( + FILES "${CMAKE_CURRENT_BINARY_DIR}/unofficial-mujs-config-version.cmake" + DESTINATION "share/unofficial-mujs" +) -configure_package_config_file("mujsConfig.cmake.in" "${PROJECT_CONFIG}" INSTALL_DESTINATION "${CONFIG_INSTALL_DIR}") -install(FILES "${PROJECT_CONFIG}" DESTINATION "${CONFIG_INSTALL_DIR}") +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mujs.pc" "${CMAKE_CURRENT_BINARY_DIR}/mujs.pc" @ONLY) +install( + FILES "${CMAKE_CURRENT_BINARY_DIR}/mujs.pc" + DESTINATION "lib/pkgconfig" +) -install(EXPORT ${TARGETS_EXPORT_NAME} - NAMESPACE ${NAMESPACE} - DESTINATION "${CONFIG_INSTALL_DIR}") - if(NOT DISABLE_INSTALL_HEADERS) install(FILES mujs.h DESTINATION include) endif() diff --git a/ports/mujs/mujs.pc b/ports/mujs/mujs.pc new file mode 100644 index 00000000000000..f32d0d83bcdc87 --- /dev/null +++ b/ports/mujs/mujs.pc @@ -0,0 +1,11 @@ +prefix=${pcfiledir}/../.. +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: mujs +Description: MuJS embeddable Javascript interpreter +Version: @PACKAGE_VERSION@ +Cflags: -I${includedir} +Libs: -L${libdir} -lmujs +Libs.private: @PC_LIBS_PRIVATE@ diff --git a/ports/mujs/mujsConfig.cmake.in b/ports/mujs/mujsConfig.cmake.in deleted file mode 100644 index 4a6fa4fdca758b..00000000000000 --- a/ports/mujs/mujsConfig.cmake.in +++ /dev/null @@ -1,8 +0,0 @@ -@PACKAGE_INIT@ - -include(CMakeFindDependencyMacro) - -# Any extra setup - -# Add the targets file -include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake") diff --git a/ports/mujs/portfile.cmake b/ports/mujs/portfile.cmake index fc89934c2c6c47..b747376e4975ed 100644 --- a/ports/mujs/portfile.cmake +++ b/ports/mujs/portfile.cmake @@ -1,4 +1,6 @@ -vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +if(VCPKG_TARGET_IS_WINDOWS) + vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +endif() vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH @@ -9,18 +11,20 @@ vcpkg_from_github( ) file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}") -file(COPY "${CMAKE_CURRENT_LIST_DIR}/mujsConfig.cmake.in" DESTINATION "${SOURCE_PATH}") +file(COPY "${CMAKE_CURRENT_LIST_DIR}/mujs.pc" DESTINATION "${SOURCE_PATH}") vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + "-DPACKAGE_VERSION=${VERSION}" OPTIONS_DEBUG -DDISABLE_INSTALL_HEADERS=ON - -DDISABLE_INSTALL_TOOLS=ON ) vcpkg_cmake_install() vcpkg_fixup_pkgconfig() -vcpkg_cmake_config_fixup(PACKAGE_NAME mujs CONFIG_PATH lib/cmake/mujs) +vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-mujs) vcpkg_copy_pdbs() +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING") diff --git a/ports/mujs/usage b/ports/mujs/usage new file mode 100644 index 00000000000000..5cc07c87d2fdf8 --- /dev/null +++ b/ports/mujs/usage @@ -0,0 +1,6 @@ +mujs can be imported via CMake FindPkgConfig module: + + find_package(PkgConfig) + pkg_check_modules(MUJS REQUIRED IMPORTED_TARGET mujs) + + target_link_libraries(main PRIVATE PkgConfig::MUJS) diff --git a/ports/mujs/vcpkg.json b/ports/mujs/vcpkg.json index 123be9531f805f..ae4734a1d6c41c 100644 --- a/ports/mujs/vcpkg.json +++ b/ports/mujs/vcpkg.json @@ -1,6 +1,7 @@ { "name": "mujs", "version": "1.3.2", + "port-version": 1, "description": "An embeddable Javascript interpreter in C", "homepage": "https://github.com/ccxvii/mujs", "license": "ISC", diff --git a/versions/baseline.json b/versions/baseline.json index 4d2e751fbb5897..248188602b6642 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -5230,7 +5230,7 @@ }, "mujs": { "baseline": "1.3.2", - "port-version": 0 + "port-version": 1 }, "munit": { "baseline": "2019-04-06", diff --git a/versions/m-/mujs.json b/versions/m-/mujs.json index c019af0d56fd4e..defa90a7a3bb6e 100644 --- a/versions/m-/mujs.json +++ b/versions/m-/mujs.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "3a32c06c1b96616c36a255e3a0883b406281be3a", + "version": "1.3.2", + "port-version": 1 + }, { "git-tree": "9c67a4a21c48b6ad43918a526e539cf90d822e1a", "version": "1.3.2",