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/nana | |
Diffstat (limited to 'vcpkg/ports/nana')
| -rw-r--r-- | vcpkg/ports/nana/CMakeLists.txt | 86 | ||||
| -rw-r--r-- | vcpkg/ports/nana/config.cmake.in | 30 | ||||
| -rw-r--r-- | vcpkg/ports/nana/fix-build-error.patch | 13 | ||||
| -rw-r--r-- | vcpkg/ports/nana/portfile.cmake | 34 | ||||
| -rw-r--r-- | vcpkg/ports/nana/vcpkg.json | 28 |
5 files changed, 191 insertions, 0 deletions
diff --git a/vcpkg/ports/nana/CMakeLists.txt b/vcpkg/ports/nana/CMakeLists.txt new file mode 100644 index 0000000..c66ce66 --- /dev/null +++ b/vcpkg/ports/nana/CMakeLists.txt @@ -0,0 +1,86 @@ +cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +project(nana VERSION 1.7.4 LANGUAGES CXX) + +option(NANA_ENABLE_PNG "Enable PNG support" OFF) +option(NANA_ENABLE_JPEG "Enable JPEG support" OFF) +option(NANA_INSTALL_HEADERS "Install headers" ON) + +if(APPLE) + add_definitions(-DAPPLE) +elseif(UNIX) + add_definitions(-Dlinux) +endif() + +file(GLOB_RECURSE headers include/*.hpp) +source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}/include PREFIX "include" FILES ${headers}) + +file(GLOB sources source/*.hpp source/*.cpp) +foreach(subdir detail filesystem gui paint system threads) + file(GLOB_RECURSE sources_subdir source/${subdir}/*.hpp source/${subdir}/*.cpp) + list(APPEND sources ${sources_subdir}) +endforeach() +source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}/source PREFIX "source" FILES ${sources}) + +add_library(nana ${headers} ${sources}) +target_include_directories(nana PUBLIC + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> + $<INSTALL_INTERFACE:include>) + +target_compile_features(nana PUBLIC cxx_std_17) + +if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + target_link_libraries(nana PUBLIC c++experimental) +endif() + +if(CMAKE_CXX_COMPILER_ID MATCHES "GCC") + target_link_libraries(nana PUBLIC stdc++fs) +endif() + +if(UNIX) + find_package(Threads REQUIRED) + target_link_libraries(nana PUBLIC Threads::Threads) + + find_package(Freetype REQUIRED) + target_link_libraries(nana PUBLIC Freetype::Freetype) + + find_package(X11 REQUIRED) + target_include_directories(nana PUBLIC ${X11_INCLUDE_DIR}) + target_link_libraries(nana PUBLIC ${X11_LIBRARIES} ${X11_Xft_LIB}) + + find_package(Fontconfig REQUIRED) + target_link_libraries(nana PUBLIC Fontconfig::Fontconfig) +endif() + +if(NANA_ENABLE_PNG) + find_package(PNG REQUIRED) + target_link_libraries(nana PUBLIC PNG::PNG) + target_compile_definitions(nana PUBLIC NANA_ENABLE_PNG=1 USE_LIBPNG_FROM_OS=1) +endif() + +if(NANA_ENABLE_JPEG) + find_package(JPEG REQUIRED) + target_include_directories(nana PUBLIC ${JPEG_INCLUDE_DIR}) + target_link_libraries(nana PUBLIC $<BUILD_INTERFACE:${JPEG_LIBRARIES}>) + target_compile_definitions(nana PUBLIC NANA_ENABLE_JPEG=1 USE_LIBJPEG_FROM_OS=1) +endif() + +install(TARGETS nana EXPORT nana + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib) + +if(NANA_INSTALL_HEADERS) + install(DIRECTORY include/nana DESTINATION include) +endif() + +include(CMakePackageConfigHelpers) + +configure_package_config_file(config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/unofficial-nana-config.cmake + INSTALL_DESTINATION share/unofficial-nana) + +write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/unofficial-nana-config-version.cmake + VERSION ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/unofficial-nana-config.cmake DESTINATION share/unofficial-nana) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/unofficial-nana-config-version.cmake DESTINATION share/unofficial-nana) +install(EXPORT nana FILE unofficial-nana-targets.cmake NAMESPACE unofficial::nana:: DESTINATION share/unofficial-nana) diff --git a/vcpkg/ports/nana/config.cmake.in b/vcpkg/ports/nana/config.cmake.in new file mode 100644 index 0000000..86d70cc --- /dev/null +++ b/vcpkg/ports/nana/config.cmake.in @@ -0,0 +1,30 @@ +@PACKAGE_INIT@ +include(CMakeFindDependencyMacro) + +if(UNIX) + find_dependency(Threads) + find_dependency(Freetype) + find_dependency(X11) + find_dependency(Fontconfig) +endif() + +option(NANA_ENABLE_PNG "Enable PNG support" @NANA_ENABLE_PNG@) +option(NANA_ENABLE_JPEG "Enable JPEG support" @NANA_ENABLE_JPEG@) + +if(NANA_ENABLE_PNG) + find_dependency(PNG) +endif() + +if(NANA_ENABLE_JPEG) + find_dependency(JPEG) +endif() + +include("${CMAKE_CURRENT_LIST_DIR}/unofficial-nana-targets.cmake") + +if(UNIX) + target_link_libraries(unofficial::nana::nana INTERFACE Fontconfig::Fontconfig ${X11_LIBRARIES} ${X11_Xft_LIB}) +endif() + +if(NANA_ENABLE_JPEG) + target_link_libraries(unofficial::nana::nana INTERFACE ${JPEG_LIBRARIES}) +endif() diff --git a/vcpkg/ports/nana/fix-build-error.patch b/vcpkg/ports/nana/fix-build-error.patch new file mode 100644 index 0000000..d007143 --- /dev/null +++ b/vcpkg/ports/nana/fix-build-error.patch @@ -0,0 +1,13 @@ +diff --git a/source/system/split_string.cpp b/source/system/split_string.cpp +index 8269db6..c40016b 100644 +--- a/source/system/split_string.cpp ++++ b/source/system/split_string.cpp +@@ -18,7 +18,7 @@ std::vector<split_string_type> split_string (const split_string_type& text, char + sep_pos = text.find(sep, sep_pos); + sep_pos = (text.npos == sep_pos ? text.size() : sep_pos); + const std::size_t end = sep_pos; +- while (sep_pos < text.size() and sep == text[sep_pos]) { ++ while (sep_pos < text.size() && sep == text[sep_pos]) { + ++sep_pos; + } + diff --git a/vcpkg/ports/nana/portfile.cmake b/vcpkg/ports/nana/portfile.cmake new file mode 100644 index 0000000..56fdf93 --- /dev/null +++ b/vcpkg/ports/nana/portfile.cmake @@ -0,0 +1,34 @@ +vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
+
+if(NOT VCPKG_TARGET_IS_WINDOWS)
+ message(WARNING "You will need to install Xorg dependencies to use nana:\napt install libx11-dev libxft-dev libxcursor-dev\n")
+endif()
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO cnjinhao/nana
+ REF 554c4fe87fc31b8ee104228e9117d545d34855b5 # v1.7.4
+ SHA512 d9db8ea1bd47fe663b8e2443a1a3e279760dbd11ef6bc78d9dc8f6fd12f9736b8c8315dfc84d21325e02ad6b2dc3a429593ac80e7610097ddc7253668c383178
+ HEAD_REF develop
+ PATCHES
+ fix-build-error.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_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DNANA_ENABLE_PNG=ON
+ -DNANA_ENABLE_JPEG=ON
+ OPTIONS_DEBUG
+ -DNANA_INSTALL_HEADERS=OFF)
+
+vcpkg_cmake_install()
+
+vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-nana)
+
+vcpkg_copy_pdbs()
+
+file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
\ No newline at end of file diff --git a/vcpkg/ports/nana/vcpkg.json b/vcpkg/ports/nana/vcpkg.json new file mode 100644 index 0000000..6984de0 --- /dev/null +++ b/vcpkg/ports/nana/vcpkg.json @@ -0,0 +1,28 @@ +{ + "name": "nana", + "version": "1.7.4", + "port-version": 5, + "description": "Cross-platform library for GUI programming in modern C++ style.", + "homepage": "https://github.com/cnjinhao/nana", + "supports": "!uwp", + "dependencies": [ + { + "name": "fontconfig", + "platform": "!uwp & !windows & !mingw" + }, + { + "name": "freetype", + "platform": "!uwp & !windows & !mingw" + }, + "libjpeg-turbo", + "libpng", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} |