From 5bdbcc17fb526a62c0fdfbb7856a4eacee7ecdad Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Tue, 18 Feb 2020 03:14:21 +0000 Subject: [PATCH] glm: hack install solution --- packages/graphics/glm/config/glm.pc | 7 ++ packages/graphics/glm/config/glmConfig.cmake | 20 ++++ .../glm/config/glmConfigVersion.cmake | 31 +++++ packages/graphics/glm/config/glmTargets.cmake | 107 ++++++++++++++++++ packages/graphics/glm/package.mk | 16 +++ 5 files changed, 181 insertions(+) create mode 100644 packages/graphics/glm/config/glm.pc create mode 100644 packages/graphics/glm/config/glmConfig.cmake create mode 100644 packages/graphics/glm/config/glmConfigVersion.cmake create mode 100644 packages/graphics/glm/config/glmTargets.cmake diff --git a/packages/graphics/glm/config/glm.pc b/packages/graphics/glm/config/glm.pc new file mode 100644 index 0000000000..337af88dad --- /dev/null +++ b/packages/graphics/glm/config/glm.pc @@ -0,0 +1,7 @@ +prefix=/usr +includedir=${prefix}/include + +Name: GLM +Description: OpenGL Mathematics +Version: @@VERSION@@ +Cflags: -I${includedir} diff --git a/packages/graphics/glm/config/glmConfig.cmake b/packages/graphics/glm/config/glmConfig.cmake new file mode 100644 index 0000000000..cc25e3a129 --- /dev/null +++ b/packages/graphics/glm/config/glmConfig.cmake @@ -0,0 +1,20 @@ +set(GLM_VERSION "@@VERSION@@") + + +####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() ####### +get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE) + +macro(set_and_check _var _file) + set(${_var} "${_file}") + if(NOT EXISTS "${_file}") + message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !") + endif() +endmacro() + +#################################################################################### + +set_and_check(GLM_INCLUDE_DIRS "${PACKAGE_PREFIX_DIR}/include") + +if (NOT CMAKE_VERSION VERSION_LESS "3.0") + include("${CMAKE_CURRENT_LIST_DIR}/glmTargets.cmake") +endif() diff --git a/packages/graphics/glm/config/glmConfigVersion.cmake b/packages/graphics/glm/config/glmConfigVersion.cmake new file mode 100644 index 0000000000..3673ca6273 --- /dev/null +++ b/packages/graphics/glm/config/glmConfigVersion.cmake @@ -0,0 +1,31 @@ +# This is a basic version file for the Config-mode of find_package(). +# It is used by write_basic_package_version_file() as input file for configure_file() +# to create a version-file which can be installed along a config.cmake file. +# +# The created file sets PACKAGE_VERSION_EXACT if the current version string and +# the requested version string are exactly the same and it sets +# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version. +# The variable CVF_VERSION must be set before calling configure_file(). + +set(PACKAGE_VERSION "@@VERSION@@") + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() + +# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: +if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@@VOID_SIZE@@" STREQUAL "") + return() +endif() + +# check that the installed version has the same 32/64bit-ness as the one which is currently searching: +if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "@@VOID_SIZE@@") + math(EXPR installedBits "@@VOID_SIZE@@ * 8") + set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)") + set(PACKAGE_VERSION_UNSUITABLE FALSE) +endif() diff --git a/packages/graphics/glm/config/glmTargets.cmake b/packages/graphics/glm/config/glmTargets.cmake new file mode 100644 index 0000000000..905b67731b --- /dev/null +++ b/packages/graphics/glm/config/glmTargets.cmake @@ -0,0 +1,107 @@ +# Generated by CMake + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) + message(FATAL_ERROR "CMake >= 2.6.0 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.6) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_targetsDefined) +set(_targetsNotDefined) +set(_expectedTargets) +foreach(_expectedTarget glm) + list(APPEND _expectedTargets ${_expectedTarget}) + if(NOT TARGET ${_expectedTarget}) + list(APPEND _targetsNotDefined ${_expectedTarget}) + endif() + if(TARGET ${_expectedTarget}) + list(APPEND _targetsDefined ${_expectedTarget}) + endif() +endforeach() +if("${_targetsDefined}" STREQUAL "${_expectedTargets}") + unset(_targetsDefined) + unset(_targetsNotDefined) + unset(_expectedTargets) + set(CMAKE_IMPORT_FILE_VERSION) + cmake_policy(POP) + return() +endif() +if(NOT "${_targetsDefined}" STREQUAL "") + message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") +endif() +unset(_targetsDefined) +unset(_targetsNotDefined) +unset(_expectedTargets) + + +# Compute the installation prefix relative to this file. +get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) +# Use original install prefix when loaded through a +# cross-prefix symbolic link such as /lib -> /usr/lib. +get_filename_component(_realCurr "${_IMPORT_PREFIX}" REALPATH) +get_filename_component(_realOrig "/usr/lib/cmake/glm" REALPATH) +if(_realCurr STREQUAL _realOrig) + set(_IMPORT_PREFIX "/usr/lib/cmake/glm") +endif() +unset(_realOrig) +unset(_realCurr) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +if(_IMPORT_PREFIX STREQUAL "/") + set(_IMPORT_PREFIX "") +endif() + +# Create imported target glm +add_library(glm INTERFACE IMPORTED) + +set_target_properties(glm PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" +) + +if(CMAKE_VERSION VERSION_LESS 3.0.0) + message(FATAL_ERROR "This file relies on consumers using CMake 3.0.0 or greater.") +endif() + +# Load information for each installed configuration. +get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +file(GLOB CONFIG_FILES "${_DIR}/glmTargets-*.cmake") +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() + +# Cleanup temporary variables. +set(_IMPORT_PREFIX) + +# Loop over all imported files and verify that they actually exist +foreach(target ${_IMPORT_CHECK_TARGETS} ) + foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) + if(NOT EXISTS "${file}" ) + message(FATAL_ERROR "The imported target \"${target}\" references the file + \"${file}\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") + endif() + endforeach() + unset(_IMPORT_CHECK_FILES_FOR_${target}) +endforeach() +unset(_IMPORT_CHECK_TARGETS) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) diff --git a/packages/graphics/glm/package.mk b/packages/graphics/glm/package.mk index a594285d04..2666c22fbd 100644 --- a/packages/graphics/glm/package.mk +++ b/packages/graphics/glm/package.mk @@ -10,3 +10,19 @@ PKG_URL="https://github.com/g-truc/glm/releases/download/$PKG_VERSION/glm-$PKG_V PKG_SOURCE_DIR="glm" PKG_DEPENDS_TARGET="toolchain" PKG_LONGDESC="OpenGL Mathematics (GLM)" + +# Hack install solution until cmake install restored in upstream package +makeinstall_target() { + target_has_feature 32bit && PKG_VOID_SIZE=4 || PKG_VOID_SIZE=8 + + for _dir in ${SYSROOT_PREFIX} ${INSTALL}; do + mkdir -p ${_dir}/usr/include ${_dir}/usr/lib/pkgconfig ${_dir}/usr/lib/cmake/glm + cp -r ${PKG_BUILD}/glm ${_dir}/usr/include + cp ${PKG_DIR}/config/glm.pc ${_dir}/usr/lib/pkgconfig + cp ${PKG_DIR}/config/*.cmake ${_dir}/usr/lib/cmake/glm + + sed -e "s/@@VERSION@@/${PKG_VERSION}/g" \ + -e "s/@@VOID_SIZE@@/${PKG_VOID_SIZE}/g" \ + -i ${_dir}/usr/lib/pkgconfig/glm.pc ${_dir}/usr/lib/cmake/glm/*.cmake + done +}