diff --git a/ports/libpng/portfile.cmake b/ports/libpng/portfile.cmake index 0c9f8ab0b..521dfb8bf 100644 --- a/ports/libpng/portfile.cmake +++ b/ports/libpng/portfile.cmake @@ -57,3 +57,7 @@ file(RENAME ${CURRENT_PACKAGES_DIR}/share/libpng/LICENSE ${CURRENT_PACKAGES_DIR} vcpkg_copy_pdbs() file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}) + +if(VCPKG_CMAKE_SYSTEM_NAME AND NOT VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") + file(COPY ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/png) +endif() diff --git a/ports/libpng/vcpkg-cmake-wrapper.cmake b/ports/libpng/vcpkg-cmake-wrapper.cmake new file mode 100644 index 000000000..88813d68c --- /dev/null +++ b/ports/libpng/vcpkg-cmake-wrapper.cmake @@ -0,0 +1,4 @@ +if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/../../lib/libpng16.a") + set(PNG_LIBRARY_RELEASE "${CMAKE_CURRENT_LIST_DIR}/../../lib/libpng16.a" CACHE FILEPATH "") +endif() +_find_package(${ARGS}) diff --git a/ports/nana/CMakeLists.txt b/ports/nana/CMakeLists.txt new file mode 100644 index 000000000..7cd9865dc --- /dev/null +++ b/ports/nana/CMakeLists.txt @@ -0,0 +1,86 @@ +cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +project(nana VERSION 1.5.5 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 + $ + $) + +target_compile_features(nana PUBLIC cxx_std_14) + +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_library(FONTCONFIG_LIB NAMES fontconfig) + target_link_libraries(nana PUBLIC ${FONTCONFIG_LIB}) +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 $) + 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/ports/nana/CONTROL b/ports/nana/CONTROL index 41d7188b9..70e6d2743 100644 --- a/ports/nana/CONTROL +++ b/ports/nana/CONTROL @@ -1,4 +1,4 @@ Source: nana Version: 1.5.5 Description: Cross-platform library for GUI programming in modern C++ style. -Build-Depends: libpng, libjpeg-turbo +Build-Depends: libpng, libjpeg-turbo, freetype (!uwp&&!windows), fontconfig (!uwp&&!windows) diff --git a/ports/nana/config.cmake.in b/ports/nana/config.cmake.in new file mode 100644 index 000000000..8a18bbdf4 --- /dev/null +++ b/ports/nana/config.cmake.in @@ -0,0 +1,26 @@ +@PACKAGE_INIT@ + +if(UNIX) + find_package(Threads REQUIRED) + find_package(Freetype REQUIRED) + find_package(X11 REQUIRED) + find_library(FONTCONFIG_LIB NAMES fontconfig) +endif() + +if(@NANA_ENABLE_PNG@) + find_package(PNG REQUIRED) +endif() + +if(@NANA_ENABLE_JPEG@) + find_package(JPEG REQUIRED) +endif() + +include("${CMAKE_CURRENT_LIST_DIR}/unofficial-nana-targets.cmake") + +if(UNIX) + target_link_libraries(unofficial::nana::nana INTERFACE ${FONTCONFIG_LIB} ${X11_LIBRARIES} ${X11_Xft_LIB}) +endif() + +if(@NANA_ENABLE_JPEG@) + target_link_libraries(unofficial::nana::nana INTERFACE ${JPEG_LIBRARIES}) +endif() diff --git a/ports/nana/portfile.cmake b/ports/nana/portfile.cmake index fc492ee44..ecd99c868 100644 --- a/ports/nana/portfile.cmake +++ b/ports/nana/portfile.cmake @@ -3,6 +3,10 @@ if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) set(VCPKG_LIBRARY_LINKAGE static) endif() +if(VCPKG_CMAKE_SYSTEM_NAME AND NOT VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") + message(WARNING "You will need to install Xorg dependencies to use nana:\napt install libx11-dev libxft-dev\n") +endif() + include(vcpkg_common_functions) vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH @@ -12,17 +16,22 @@ vcpkg_from_github( HEAD_REF develop ) +file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) +file(COPY ${CMAKE_CURRENT_LIST_DIR}/config.cmake.in DESTINATION ${SOURCE_PATH}) + vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} PREFER_NINJA OPTIONS - -DMSVC_USE_STATIC_RUNTIME=OFF # dont override our settings - -DNANA_CMAKE_ENABLE_PNG=ON - -DNANA_CMAKE_ENABLE_JPEG=ON + -DNANA_ENABLE_PNG=ON + -DNANA_ENABLE_JPEG=ON OPTIONS_DEBUG - -DNANA_CMAKE_INSTALL_INCLUDES=OFF) + -DNANA_INSTALL_HEADERS=OFF) vcpkg_install_cmake() + +vcpkg_fixup_cmake_targets(CONFIG_PATH share/unofficial-nana TARGET_PATH share/unofficial-nana) + vcpkg_copy_pdbs() file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/nana)