From 7450e6a25770dfefaf9630561938cc596f91b084 Mon Sep 17 00:00:00 2001 From: Samadi van Koten Date: Fri, 2 Oct 2020 00:05:01 +0100 Subject: [PATCH] New package: msdfgen-1.7.1 --- srcpkgs/msdfgen/patches/cmake-install.diff | 274 +++++++++++++++++++++ srcpkgs/msdfgen/template | 13 + 2 files changed, 287 insertions(+) create mode 100644 srcpkgs/msdfgen/patches/cmake-install.diff create mode 100644 srcpkgs/msdfgen/template diff --git a/srcpkgs/msdfgen/patches/cmake-install.diff b/srcpkgs/msdfgen/patches/cmake-install.diff new file mode 100644 index 00000000000..bb6d17657ed --- /dev/null +++ b/srcpkgs/msdfgen/patches/cmake-install.diff @@ -0,0 +1,274 @@ +commit 31dda2d47417b8999b9c873d642fba9a30cd2f9d +Author: Guillaume Racicot +Date: Wed Apr 15 15:23:45 2020 -0400 + + Modernize cmake and allow installation (#104) + +diff --git CMakeLists.txt CMakeLists.txt +index 1838e4e..cd29260 100644 +--- CMakeLists.txt ++++ CMakeLists.txt +@@ -1,80 +1,167 @@ +-cmake_minimum_required(VERSION 2.8.12) ++cmake_minimum_required(VERSION 3.10) + +-project(msdfgen) ++project(msdfgen VERSION 1.7.1 LANGUAGES CXX) ++option(MSDFGEN_BUILD_MSDFGEN_STANDALONE "Build the msdfgen standalone executable" ON) ++option(MSDFGEN_USE_OPENMP "Build with OpenMP support for multithreaded code" OFF) ++option(MSDFGEN_USE_CPP11 "Build with C++11 enabled" ON) ++ ++list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + + find_package(Freetype REQUIRED) + +-include(CheckCXXCompilerFlag) +-CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) +-if (COMPILER_SUPPORTS_CXX11) +- add_definitions(-DMSDFGEN_USE_CPP11) +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") +-endif() ++#---------------------------------------------------------------- ++# Gathering File ++#---------------------------------------------------------------- + +-# Make release mode default (turn on optimizations) +-if(NOT CMAKE_BUILD_TYPE) +- set(CMAKE_BUILD_TYPE Release) +-endif() ++file(GLOB_RECURSE msdfgen_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ++ "core/*.h" ++ "core/*.hpp" ++) ++ ++file(GLOB_RECURSE msdfgen_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ++ "core/*.cpp" ++) ++ ++file(GLOB_RECURSE msdfgen-ext_PUBLIC_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ++ "ext/*.h" ++ "ext/*.hpp" ++) + ++file(GLOB_RECURSE msdfgen-ext_PRIVATE_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ++ "include/*.h" ++) ++ ++file(GLOB_RECURSE msdfgen-ext_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ++ "ext/*.cpp" ++ "lib/*.cpp" ++ "lib/*.cpp" ++) + +-# Note: Clang doesn't support openMP by default... +-#find_package(OpenMP) +-#if (OPENMP_FOUND) +-# set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") +-# set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") +-#endif() ++# Build the library (aliased name because it's the same target name the exe) ++include(folderize) ++folderize_sources(msdfgen_HEADERS ${CMAKE_SOURCE_DIR}) ++folderize_sources(msdfgen_SOURCES ${CMAKE_SOURCE_DIR}) ++folderize_sources(msdfgen-ext_PUBLIC_HEADERS ${CMAKE_SOURCE_DIR}) ++folderize_sources(msdfgen-ext_PRIVATE_HEADERS ${CMAKE_SOURCE_DIR}) ++folderize_sources(msdfgen-ext_SOURCES ${CMAKE_SOURCE_DIR}) + + #---------------------------------------------------------------- +-# Support Functions ++# Target configuration + #---------------------------------------------------------------- + +-# Mirror the folder structure for sources inside the IDE... +-function(folderize_sources sources prefix) +- foreach(FILE ${${sources}}) +- get_filename_component(PARENT_DIR "${FILE}" PATH) ++add_library(msdfgen ${msdfgen_SOURCES} ${msdfgen_HEADERS} "./msdfgen.h") ++add_library(msdfgen::msdfgen ALIAS msdfgen) ++set_target_properties(msdfgen PROPERTIES PUBLIC_HEADER "${msdfgen_HEADERS}") ++target_include_directories(msdfgen INTERFACE ++ $ ++ $ ++) + +- # skip src or include and changes /'s to \\'s +- string(REPLACE "${prefix}" "" GROUP "${PARENT_DIR}") +- string(REPLACE "/" "\\" GROUP "${GROUP}") ++if(MSDFGEN_USE_CPP11) ++ target_compile_features(msdfgen PUBLIC cxx_std_11) ++ target_compile_definitions(msdfgen PUBLIC MSDFGEN_USE_CPP11) ++endif() + +- # If it's got a path, then append a "\\" separator (otherwise leave it blank) +- if ("${GROUP}" MATCHES ".+") +- set(GROUP "\\${GROUP}") +- endif() ++if(MSDFGEN_USE_OPENMP) ++ # Note: Clang doesn't support OpenMP by default... ++ find_package(OpenMP REQUIRED COMPONENTS CXX) ++ target_link_libraries(msdfgen PRIVATE OpenMP::OpenMP_CXX) ++ target_compile_definitions(msdfgen PRIVATE MSDFGEN_USE_OPENMP) ++endif() + +- source_group("${GROUP}" FILES "${FILE}") +- endforeach() +-endfunction(folderize_sources) ++add_library(msdfgen-ext ${msdfgen-ext_SOURCES} ${msdfgen-ext_PUBLIC_HEADERS} ${msdfgen-ext_PRIVATE_HEADERS} "./msdfgen-ext.h") ++add_library(msdfgen::msdfgen-ext ALIAS msdfgen-ext) ++set_target_properties(msdfgen-ext PROPERTIES ++ PUBLIC_HEADER "${msdfgen-ext_PUBLIC_HEADERS}" ++) ++target_link_libraries(msdfgen-ext PUBLIC msdfgen::msdfgen Freetype::Freetype) ++target_include_directories(msdfgen-ext ++PUBLIC ++ $ ++ $ ++ ++PRIVATE ++ ${CMAKE_CURRENT_SOURCE_DIR}/include ++) + ++if(MSDFGEN_USE_CPP11) ++ target_compile_features(msdfgen-ext PUBLIC cxx_std_11) ++ target_compile_definitions(msdfgen-ext PUBLIC MSDFGEN_USE_CPP11) ++endif() + ++# Build the executable if requested ++if(MSDFGEN_BUILD_MSDFGEN_STANDALONE) ++ add_executable(msdfgen-standalone main.cpp) ++ set_target_properties(msdfgen-standalone PROPERTIES OUTPUT_NAME msdfgen) ++ target_compile_definitions(msdfgen-standalone PRIVATE MSDFGEN_STANDALONE) ++ target_link_libraries(msdfgen-standalone PRIVATE msdfgen::msdfgen msdfgen::msdfgen-ext) ++endif() + +-file(GLOB_RECURSE msdfgen_HEADERS +- "core/*.h" +- "core/*.hpp" +- "lib/*.h" +- "ext/*.h" +- "include/*.h" ++#---------------------------------------------------------------- ++# Installation and exportation of the libraries ++#---------------------------------------------------------------- ++ ++include(CMakePackageConfigHelpers) ++set(MSDFGEN_CONFIG_PATH "lib/cmake/msdfgen") ++ ++# install tree package config ++write_basic_package_version_file( ++ "${CMAKE_CURRENT_BINARY_DIR}/msdfgenConfigVersion.cmake" ++ VERSION ${PROJECT_VERSION} ++ COMPATIBILITY SameMajorVersion + ) + +-file(GLOB_RECURSE msdfgen_SOURCES +- "core/*.cpp" +- "lib/*.cpp" +- "ext/*.cpp" ++configure_package_config_file( ++ cmake/msdfgenConfig.cmake.in ++ ${MSDFGEN_CONFIG_PATH}/msdfgenConfig.cmake ++ INSTALL_DESTINATION ${MSDFGEN_CONFIG_PATH} ++ NO_CHECK_REQUIRED_COMPONENTS_MACRO + ) + +-include_directories(${FREETYPE_INCLUDE_DIRS}) +-include_directories("include") ++# build tree package config ++configure_file( ++ cmake/msdfgenConfig.cmake.in ++ msdfgenConfig.cmake ++ @ONLY ++) + +-# Build the library (aliased name because it's the same target name the exe) +-folderize_sources(msdfgen_HEADERS ${CMAKE_SOURCE_DIR}) +-folderize_sources(msdfgen_SOURCES ${CMAKE_SOURCE_DIR}) ++install(TARGETS msdfgen EXPORT msdfgenTargets ++ RUNTIME DESTINATION bin ++ LIBRARY DESTINATION lib ++ ARCHIVE DESTINATION lib ++ FRAMEWORK DESTINATION lib ++ PUBLIC_HEADER DESTINATION include/msdfgen/core ++) + +-add_library(lib_msdfgen ${msdfgen_SOURCES} ${msdfgen_HEADERS}) +-set_target_properties(lib_msdfgen PROPERTIES OUTPUT_NAME msdfgen) +-target_link_libraries(lib_msdfgen ${FREETYPE_LIBRARIES}) ++install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/msdfgen.h" "${CMAKE_CURRENT_SOURCE_DIR}/msdfgen-ext.h" DESTINATION include/msdfgen) + +-# Build the executable ++install(TARGETS msdfgen-ext EXPORT msdfgenTargets ++ RUNTIME DESTINATION bin ++ LIBRARY DESTINATION lib ++ ARCHIVE DESTINATION lib ++ FRAMEWORK DESTINATION lib ++ PUBLIC_HEADER DESTINATION include/msdfgen/ext ++) + +-add_executable(msdfgen main.cpp msdfgen.h msdfgen-ext.h) +-target_compile_definitions(msdfgen PRIVATE MSDFGEN_STANDALONE) +-target_link_libraries(msdfgen lib_msdfgen) ++if(MSDFGEN_BUILD_MSDFGEN_STANDALONE) ++ install(TARGETS msdfgen-standalone EXPORT msdfgenTargets RUNTIME DESTINATION bin) ++endif() ++ ++install( ++ FILES ++ "${CMAKE_CURRENT_BINARY_DIR}/${MSDFGEN_CONFIG_PATH}/msdfgenConfig.cmake" ++ "${CMAKE_CURRENT_BINARY_DIR}/msdfgenConfigVersion.cmake" ++ DESTINATION ${MSDFGEN_CONFIG_PATH} ++) ++ ++export( ++ EXPORT msdfgenTargets ++ NAMESPACE msdfgen:: ++ FILE "${CMAKE_CURRENT_BINARY_DIR}/msdfgenTargets.cmake" ++) ++ ++install( ++ EXPORT msdfgenTargets FILE msdfgenTargets.cmake ++ NAMESPACE msdfgen:: ++ DESTINATION ${MSDFGEN_CONFIG_PATH} ++) +diff --git cmake/folderize.cmake cmake/folderize.cmake +new file mode 100644 +index 0000000..93e08ad +--- /dev/null ++++ cmake/folderize.cmake +@@ -0,0 +1,17 @@ ++# Mirror the folder structure for sources inside the IDE... ++function(folderize_sources sources prefix) ++ foreach(FILE ${${sources}}) ++ get_filename_component(PARENT_DIR "${FILE}" PATH) ++ ++ # skip src or include and changes /'s to \\'s ++ string(REPLACE "${prefix}" "" GROUP "${PARENT_DIR}") ++ string(REPLACE "/" "\\" GROUP "${GROUP}") ++ ++ # If it's got a path, then append a "\\" separator (otherwise leave it blank) ++ if ("${GROUP}" MATCHES ".+") ++ set(GROUP "\\${GROUP}") ++ endif() ++ ++ source_group("${GROUP}" FILES "${FILE}") ++ endforeach() ++endfunction(folderize_sources) +diff --git cmake/msdfgenConfig.cmake.in cmake/msdfgenConfig.cmake.in +new file mode 100644 +index 0000000..15a571f +--- /dev/null ++++ cmake/msdfgenConfig.cmake.in +@@ -0,0 +1,12 @@ ++include(CMakeFindDependencyMacro) ++ ++find_dependency(Freetype REQUIRED) ++ ++set(MSDFGEN_USE_OPENMP "@MSDFGEN_USE_OPENMP@") ++if(MSDFGEN_USE_OPENMP) ++ find_dependency(OpenMP REQUIRED COMPONENTS CXX) ++endif() ++ ++include("${CMAKE_CURRENT_LIST_DIR}/msdfgenTargets.cmake") ++ ++unset(MSDFGEN_USE_OPENMP) diff --git a/srcpkgs/msdfgen/template b/srcpkgs/msdfgen/template new file mode 100644 index 00000000000..aee4e2f0ead --- /dev/null +++ b/srcpkgs/msdfgen/template @@ -0,0 +1,13 @@ +# Template file for 'msdfgen' +pkgname=msdfgen +version=1.7.1 +revision=1 +archs="i686 x86_64" +build_style=cmake +makedepends="freetype-devel" +short_desc="Multi-channel signed distance field generator" +maintainer="Samadi van Koten " +license="MIT" +homepage="https://github.com/Chlumsky/msdfgen/" +distfiles="https://github.com/Chlumsky/msdfgen/archive/v1.7.1.tar.gz" +checksum=14d19b646aca433c0037fc8eed5ecbe861725833f3347e453b24ef3e21501293