aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2018-06-14 14:56:43 -0700
committerRobert Schumacher <roschuma@microsoft.com>2018-06-15 14:51:57 -0700
commitee3183c58aff16b954ca5d609821a7b67a0a363b (patch)
tree98dc94f14df9edc25469579e11cf5e48c6332785
parentcd8813fb9c87d23cda095dd2e13a37d3f4addf47 (diff)
downloadvcpkg-ee3183c58aff16b954ca5d609821a7b67a0a363b.tar.gz
vcpkg-ee3183c58aff16b954ca5d609821a7b67a0a363b.zip
[nana] Fix linux builds; install cmake targets
-rw-r--r--ports/libpng/portfile.cmake4
-rw-r--r--ports/libpng/vcpkg-cmake-wrapper.cmake4
-rw-r--r--ports/nana/CMakeLists.txt86
-rw-r--r--ports/nana/CONTROL2
-rw-r--r--ports/nana/config.cmake.in26
-rw-r--r--ports/nana/portfile.cmake17
6 files changed, 134 insertions, 5 deletions
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
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+ $<INSTALL_INTERFACE:include>)
+
+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 $<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/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)