diff --git a/gnu/local.mk b/gnu/local.mk index 8e535e208b..043469b716 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -895,6 +895,7 @@ dist_patch_DATA = \ %D%/packages/patches/glibc-versioned-locpath.patch \ %D%/packages/patches/glibc-2.27-git-fixes.patch \ %D%/packages/patches/glibc-2.28-git-fixes.patch \ + %D%/packages/patches/glm-restore-install-target.patch \ %D%/packages/patches/glusterfs-use-PATH-instead-of-hardcodes.patch \ %D%/packages/patches/gmp-arm-asm-nothumb.patch \ %D%/packages/patches/gmp-faulty-test.patch \ diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 47026ec41b..2e0883a724 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -3543,15 +3543,15 @@ Failure to do so will result in a library with poor performance.") (define-public glm (package (name "glm") - (version "0.9.9.5") + (version "0.9.9.6") (source (origin (method url-fetch) (uri (string-append "https://github.com/g-truc/glm/releases/download/" version "/glm-" version ".zip")) (sha256 - (base32 - "1vmg7hb4xvsa77zpbwiw6lqc7pyaj56dihx6xriny5b9rrh4iqsg")))) + (base32 "1l0pi1qi37mk6s0yrkrw07lspv4gcqnr9ryg3521hrl77ff37dwx")) + (patches (search-patches "glm-restore-install-target.patch")))) (build-system cmake-build-system) (native-inputs `(("unzip" ,unzip))) diff --git a/gnu/packages/patches/glm-restore-install-target.patch b/gnu/packages/patches/glm-restore-install-target.patch new file mode 100644 index 0000000000..a628030f6f --- /dev/null +++ b/gnu/packages/patches/glm-restore-install-target.patch @@ -0,0 +1,574 @@ +From: Tobias Geerinckx-Rice +Date: Mon, 23 Sep 2019 22:01:17 +0200 +Subject: [PATCH] gnu: glm: Restore ‘install’ target. + +It was removed in 0.9.9.6, making installation a tedious manual process +for no clear reason[0]. Restore it for now. + +[0]: https://github.com/g-truc/glm/issues/947 + +diff -Naur glm/cmake/CMakePackageConfigHelpers.cmake glmn/cmake/CMakePackageConfigHelpers.cmake +--- glm/cmake/CMakePackageConfigHelpers.cmake 1970-01-01 01:00:00.000000000 +0100 ++++ glmn/cmake/CMakePackageConfigHelpers.cmake 2019-09-23 00:11:21.418152249 +0200 +@@ -0,0 +1,227 @@ ++# - CONFIGURE_PACKAGE_CONFIG_FILE(), WRITE_BASIC_PACKAGE_VERSION_FILE() ++# ++# CONFIGURE_PACKAGE_CONFIG_FILE( INSTALL_DESTINATION ++# [PATH_VARS ... ] ++# [NO_SET_AND_CHECK_MACRO] ++# [NO_CHECK_REQUIRED_COMPONENTS_MACRO]) ++# ++# CONFIGURE_PACKAGE_CONFIG_FILE() should be used instead of the plain ++# CONFIGURE_FILE() command when creating the Config.cmake or -config.cmake ++# file for installing a project or library. It helps making the resulting package ++# relocatable by avoiding hardcoded paths in the installed Config.cmake file. ++# ++# In a FooConfig.cmake file there may be code like this to make the ++# install destinations know to the using project: ++# set(FOO_INCLUDE_DIR "@CMAKE_INSTALL_FULL_INCLUDEDIR@" ) ++# set(FOO_DATA_DIR "@CMAKE_INSTALL_PREFIX@/@RELATIVE_DATA_INSTALL_DIR@" ) ++# set(FOO_ICONS_DIR "@CMAKE_INSTALL_PREFIX@/share/icons" ) ++# ...logic to determine installedPrefix from the own location... ++# set(FOO_CONFIG_DIR "${installedPrefix}/@CONFIG_INSTALL_DIR@" ) ++# All 4 options shown above are not sufficient, since the first 3 hardcode ++# the absolute directory locations, and the 4th case works only if the logic ++# to determine the installedPrefix is correct, and if CONFIG_INSTALL_DIR contains ++# a relative path, which in general cannot be guaranteed. ++# This has the effect that the resulting FooConfig.cmake file would work poorly ++# under Windows and OSX, where users are used to choose the install location ++# of a binary package at install time, independent from how CMAKE_INSTALL_PREFIX ++# was set at build/cmake time. ++# ++# Using CONFIGURE_PACKAGE_CONFIG_FILE() helps. If used correctly, it makes the ++# resulting FooConfig.cmake file relocatable. ++# Usage: ++# 1. write a FooConfig.cmake.in file as you are used to ++# 2. insert a line containing only the string "@PACKAGE_INIT@" ++# 3. instead of SET(FOO_DIR "@SOME_INSTALL_DIR@"), use SET(FOO_DIR "@PACKAGE_SOME_INSTALL_DIR@") ++# (this must be after the @PACKAGE_INIT@ line) ++# 4. instead of using the normal CONFIGURE_FILE(), use CONFIGURE_PACKAGE_CONFIG_FILE() ++# ++# The and arguments are the input and output file, the same way ++# as in CONFIGURE_FILE(). ++# ++# The given to INSTALL_DESTINATION must be the destination where the FooConfig.cmake ++# file will be installed to. This can either be a relative or absolute path, both work. ++# ++# The variables to given as PATH_VARS are the variables which contain ++# install destinations. For each of them the macro will create a helper variable ++# PACKAGE_. These helper variables must be used ++# in the FooConfig.cmake.in file for setting the installed location. They are calculated ++# by CONFIGURE_PACKAGE_CONFIG_FILE() so that they are always relative to the ++# installed location of the package. This works both for relative and also for absolute locations. ++# For absolute locations it works only if the absolute location is a subdirectory ++# of CMAKE_INSTALL_PREFIX. ++# ++# By default configure_package_config_file() also generates two helper macros, ++# set_and_check() and check_required_components() into the FooConfig.cmake file. ++# ++# set_and_check() should be used instead of the normal set() ++# command for setting directories and file locations. Additionally to setting the ++# variable it also checks that the referenced file or directory actually exists ++# and fails with a FATAL_ERROR otherwise. This makes sure that the created ++# FooConfig.cmake file does not contain wrong references. ++# When using the NO_SET_AND_CHECK_MACRO, this macro is not generated into the ++# FooConfig.cmake file. ++# ++# check_required_components() should be called at the end of the ++# FooConfig.cmake file if the package supports components. ++# This macro checks whether all requested, non-optional components have been found, ++# and if this is not the case, sets the Foo_FOUND variable to FALSE, so that the package ++# is considered to be not found. ++# It does that by testing the Foo__FOUND variables for all requested ++# required components. ++# When using the NO_CHECK_REQUIRED_COMPONENTS option, this macro is not generated ++# into the FooConfig.cmake file. ++# ++# For an example see below the documentation for WRITE_BASIC_PACKAGE_VERSION_FILE(). ++# ++# ++# WRITE_BASIC_PACKAGE_VERSION_FILE( filename VERSION major.minor.patch COMPATIBILITY (AnyNewerVersion|SameMajorVersion|ExactVersion) ) ++# ++# Writes a file for use as ConfigVersion.cmake file to . ++# See the documentation of FIND_PACKAGE() for details on this. ++# filename is the output filename, it should be in the build tree. ++# major.minor.patch is the version number of the project to be installed ++# The COMPATIBILITY mode AnyNewerVersion means that the installed package version ++# will be considered compatible if it is newer or exactly the same as the requested version. ++# This mode should be used for packages which are fully backward compatible, ++# also across major versions. ++# If SameMajorVersion is used instead, then the behaviour differs from AnyNewerVersion ++# in that the major version number must be the same as requested, e.g. version 2.0 will ++# not be considered compatible if 1.0 is requested. ++# This mode should be used for packages which guarantee backward compatibility within the ++# same major version. ++# If ExactVersion is used, then the package is only considered compatible if the requested ++# version matches exactly its own version number (not considering the tweak version). ++# For example, version 1.2.3 of a package is only considered compatible to requested version 1.2.3. ++# This mode is for packages without compatibility guarantees. ++# If your project has more elaborated version matching rules, you will need to write your ++# own custom ConfigVersion.cmake file instead of using this macro. ++# ++# Internally, this macro executes configure_file() to create the resulting ++# version file. Depending on the COMPATIBILITY, either the file ++# BasicConfigVersion-SameMajorVersion.cmake.in or BasicConfigVersion-AnyNewerVersion.cmake.in ++# is used. Please note that these two files are internal to CMake and you should ++# not call configure_file() on them yourself, but they can be used as starting ++# point to create more sophisticted custom ConfigVersion.cmake files. ++# ++# ++# Example using both configure_package_config_file() and write_basic_package_version_file(): ++# CMakeLists.txt: ++# set(INCLUDE_INSTALL_DIR include/ ... CACHE ) ++# set(LIB_INSTALL_DIR lib/ ... CACHE ) ++# set(SYSCONFIG_INSTALL_DIR etc/foo/ ... CACHE ) ++# ... ++# include(CMakePackageConfigHelpers) ++# configure_package_config_file(FooConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FooConfig.cmake ++# INSTALL_DESTINATION ${LIB_INSTALL_DIR}/Foo/cmake ++# PATH_VARS INCLUDE_INSTALL_DIR SYSCONFIG_INSTALL_DIR) ++# write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/FooConfigVersion.cmake ++# VERSION 1.2.3 ++# COMPATIBILITY SameMajorVersion ) ++# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/FooConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/FooConfigVersion.cmake ++# DESTINATION ${LIB_INSTALL_DIR}/Foo/cmake ) ++# ++# With a FooConfig.cmake.in: ++# set(FOO_VERSION x.y.z) ++# ... ++# @PACKAGE_INIT@ ++# ... ++# set_and_check(FOO_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@") ++# set_and_check(FOO_SYSCONFIG_DIR "@PACKAGE_SYSCONFIG_INSTALL_DIR@") ++# ++# check_required_components(Foo) ++ ++ ++#============================================================================= ++# Copyright 2012 Alexander Neundorf ++# ++# Distributed under the OSI-approved BSD License (the "License"); ++# see accompanying file Copyright.txt for details. ++# ++# This software is distributed WITHOUT ANY WARRANTY; without even the ++# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++# See the License for more information. ++#============================================================================= ++# (To distribute this file outside of CMake, substitute the full ++# License text for the above reference.) ++ ++include(CMakeParseArguments) ++ ++include(WriteBasicConfigVersionFile) ++ ++macro(WRITE_BASIC_PACKAGE_VERSION_FILE) ++ write_basic_config_version_file(${ARGN}) ++endmacro() ++ ++ ++function(CONFIGURE_PACKAGE_CONFIG_FILE _inputFile _outputFile) ++ set(options NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO) ++ set(oneValueArgs INSTALL_DESTINATION ) ++ set(multiValueArgs PATH_VARS ) ++ ++ cmake_parse_arguments(CCF "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) ++ ++ if(CCF_UNPARSED_ARGUMENTS) ++ message(FATAL_ERROR "Unknown keywords given to CONFIGURE_PACKAGE_CONFIG_FILE(): \"${CCF_UNPARSED_ARGUMENTS}\"") ++ endif() ++ ++ if(NOT CCF_INSTALL_DESTINATION) ++ message(FATAL_ERROR "No INSTALL_DESTINATION given to CONFIGURE_PACKAGE_CONFIG_FILE()") ++ endif() ++ ++ if(IS_ABSOLUTE "${CCF_INSTALL_DESTINATION}") ++ set(absInstallDir "${CCF_INSTALL_DESTINATION}") ++ else() ++ set(absInstallDir "${CMAKE_INSTALL_PREFIX}/${CCF_INSTALL_DESTINATION}") ++ endif() ++ file(RELATIVE_PATH PACKAGE_RELATIVE_PATH "${absInstallDir}" "${CMAKE_INSTALL_PREFIX}" ) ++ ++ foreach(var ${CCF_PATH_VARS}) ++ if(NOT DEFINED ${var}) ++ message(FATAL_ERROR "Variable ${var} does not exist") ++ else() ++ if(IS_ABSOLUTE "${${var}}") ++ string(REPLACE "${CMAKE_INSTALL_PREFIX}" "\${PACKAGE_PREFIX_DIR}" ++ PACKAGE_${var} "${${var}}") ++ else() ++ set(PACKAGE_${var} "\${PACKAGE_PREFIX_DIR}/${${var}}") ++ endif() ++ endif() ++ endforeach() ++ ++ set(PACKAGE_INIT " ++####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() ####### ++get_filename_component(PACKAGE_PREFIX_DIR \"\${CMAKE_CURRENT_LIST_DIR}/${PACKAGE_RELATIVE_PATH}\" ABSOLUTE) ++") ++ ++ if(NOT CCF_NO_SET_AND_CHECK_MACRO) ++ set(PACKAGE_INIT "${PACKAGE_INIT} ++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() ++") ++ endif() ++ ++ ++ if(NOT CCF_NO_CHECK_REQUIRED_COMPONENTS_MACRO) ++ set(PACKAGE_INIT "${PACKAGE_INIT} ++macro(check_required_components _NAME) ++ foreach(comp \${\${_NAME}_FIND_COMPONENTS}) ++ if(NOT \${_NAME}_\${comp}_FOUND) ++ if(\${_NAME}_FIND_REQUIRED_\${comp}) ++ set(\${_NAME}_FOUND FALSE) ++ endif() ++ endif() ++ endforeach(comp) ++endmacro() ++") ++ endif() ++ ++ set(PACKAGE_INIT "${PACKAGE_INIT} ++####################################################################################") ++ ++ configure_file("${_inputFile}" "${_outputFile}" @ONLY) ++ ++endfunction() +diff -Naur glm/cmake/glmBuildConfig.cmake.in glmn/cmake/glmBuildConfig.cmake.in +--- glm/cmake/glmBuildConfig.cmake.in 1970-01-01 01:00:00.000000000 +0100 ++++ glmn/cmake/glmBuildConfig.cmake.in 2019-09-23 00:12:08.090955650 +0200 +@@ -0,0 +1,6 @@ ++set(GLM_VERSION "@GLM_VERSION@") ++set(GLM_INCLUDE_DIRS "@CMAKE_CURRENT_SOURCE_DIR@") ++ ++if (NOT CMAKE_VERSION VERSION_LESS "3.0") ++ include("${CMAKE_CURRENT_LIST_DIR}/glmTargets.cmake") ++endif() +diff -Naur glm/cmake/glmConfig.cmake.in glmn/cmake/glmConfig.cmake.in +--- glm/cmake/glmConfig.cmake.in 1970-01-01 01:00:00.000000000 +0100 ++++ glmn/cmake/glmConfig.cmake.in 2019-09-23 00:12:14.566373412 +0200 +@@ -0,0 +1,9 @@ ++set(GLM_VERSION "@GLM_VERSION@") ++ ++@PACKAGE_INIT@ ++ ++set_and_check(GLM_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") ++ ++if (NOT CMAKE_VERSION VERSION_LESS "3.0") ++ include("${CMAKE_CURRENT_LIST_DIR}/glmTargets.cmake") ++endif() +diff -Naur glm/cmake/glm.pc.in glmn/cmake/glm.pc.in +--- glm/cmake/glm.pc.in 1970-01-01 01:00:00.000000000 +0100 ++++ glmn/cmake/glm.pc.in 2019-09-23 00:11:59.695710511 +0200 +@@ -0,0 +1,7 @@ ++prefix=@CMAKE_INSTALL_PREFIX@ ++includedir=${prefix}/include ++ ++Name: GLM ++Description: OpenGL Mathematics ++Version: @GLM_VERSION@ ++Cflags: -I${includedir} +diff -Naur glm/cmake/GNUInstallDirs.cmake glmn/cmake/GNUInstallDirs.cmake +--- glm/cmake/GNUInstallDirs.cmake 1970-01-01 01:00:00.000000000 +0100 ++++ glmn/cmake/GNUInstallDirs.cmake 2019-09-23 00:11:47.363819337 +0200 +@@ -0,0 +1,188 @@ ++# - Define GNU standard installation directories ++# Provides install directory variables as defined for GNU software: ++# http://www.gnu.org/prep/standards/html_node/Directory-Variables.html ++# Inclusion of this module defines the following variables: ++# CMAKE_INSTALL_ - destination for files of a given type ++# CMAKE_INSTALL_FULL_ - corresponding absolute path ++# where is one of: ++# BINDIR - user executables (bin) ++# SBINDIR - system admin executables (sbin) ++# LIBEXECDIR - program executables (libexec) ++# SYSCONFDIR - read-only single-machine data (etc) ++# SHAREDSTATEDIR - modifiable architecture-independent data (com) ++# LOCALSTATEDIR - modifiable single-machine data (var) ++# LIBDIR - object code libraries (lib or lib64 or lib/ on Debian) ++# INCLUDEDIR - C header files (include) ++# OLDINCLUDEDIR - C header files for non-gcc (/usr/include) ++# DATAROOTDIR - read-only architecture-independent data root (share) ++# DATADIR - read-only architecture-independent data (DATAROOTDIR) ++# INFODIR - info documentation (DATAROOTDIR/info) ++# LOCALEDIR - locale-dependent data (DATAROOTDIR/locale) ++# MANDIR - man documentation (DATAROOTDIR/man) ++# DOCDIR - documentation root (DATAROOTDIR/doc/PROJECT_NAME) ++# Each CMAKE_INSTALL_ value may be passed to the DESTINATION options of ++# install() commands for the corresponding file type. If the includer does ++# not define a value the above-shown default will be used and the value will ++# appear in the cache for editing by the user. ++# Each CMAKE_INSTALL_FULL_ value contains an absolute path constructed ++# from the corresponding destination by prepending (if necessary) the value ++# of CMAKE_INSTALL_PREFIX. ++ ++#============================================================================= ++# Copyright 2011 Nikita Krupen'ko ++# Copyright 2011 Kitware, Inc. ++# ++# Distributed under the OSI-approved BSD License (the "License"); ++# see accompanying file Copyright.txt for details. ++# ++# This software is distributed WITHOUT ANY WARRANTY; without even the ++# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++# See the License for more information. ++#============================================================================= ++# (To distribute this file outside of CMake, substitute the full ++# License text for the above reference.) ++ ++# Installation directories ++# ++if(NOT DEFINED CMAKE_INSTALL_BINDIR) ++ set(CMAKE_INSTALL_BINDIR "bin" CACHE PATH "user executables (bin)") ++endif() ++ ++if(NOT DEFINED CMAKE_INSTALL_SBINDIR) ++ set(CMAKE_INSTALL_SBINDIR "sbin" CACHE PATH "system admin executables (sbin)") ++endif() ++ ++if(NOT DEFINED CMAKE_INSTALL_LIBEXECDIR) ++ set(CMAKE_INSTALL_LIBEXECDIR "libexec" CACHE PATH "program executables (libexec)") ++endif() ++ ++if(NOT DEFINED CMAKE_INSTALL_SYSCONFDIR) ++ set(CMAKE_INSTALL_SYSCONFDIR "etc" CACHE PATH "read-only single-machine data (etc)") ++endif() ++ ++if(NOT DEFINED CMAKE_INSTALL_SHAREDSTATEDIR) ++ set(CMAKE_INSTALL_SHAREDSTATEDIR "com" CACHE PATH "modifiable architecture-independent data (com)") ++endif() ++ ++if(NOT DEFINED CMAKE_INSTALL_LOCALSTATEDIR) ++ set(CMAKE_INSTALL_LOCALSTATEDIR "var" CACHE PATH "modifiable single-machine data (var)") ++endif() ++ ++if(NOT DEFINED CMAKE_INSTALL_LIBDIR) ++ set(_LIBDIR_DEFAULT "lib") ++ # Override this default 'lib' with 'lib64' iff: ++ # - we are on Linux system but NOT cross-compiling ++ # - we are NOT on debian ++ # - we are on a 64 bits system ++ # reason is: amd64 ABI: http://www.x86-64.org/documentation/abi.pdf ++ # For Debian with multiarch, use 'lib/${CMAKE_LIBRARY_ARCHITECTURE}' if ++ # CMAKE_LIBRARY_ARCHITECTURE is set (which contains e.g. "i386-linux-gnu" ++ # See http://wiki.debian.org/Multiarch ++ if((CMAKE_SYSTEM_NAME MATCHES "Linux|kFreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "GNU") ++ AND NOT CMAKE_CROSSCOMPILING) ++ if (EXISTS "/etc/debian_version") # is this a debian system ? ++ if(CMAKE_LIBRARY_ARCHITECTURE) ++ set(_LIBDIR_DEFAULT "lib/${CMAKE_LIBRARY_ARCHITECTURE}") ++ endif() ++ else() # not debian, rely on CMAKE_SIZEOF_VOID_P: ++ if(NOT DEFINED CMAKE_SIZEOF_VOID_P) ++ message(AUTHOR_WARNING ++ "Unable to determine default CMAKE_INSTALL_LIBDIR directory because no target architecture is known. " ++ "Please enable at least one language before including GNUInstallDirs.") ++ else() ++ if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") ++ set(_LIBDIR_DEFAULT "lib64") ++ endif() ++ endif() ++ endif() ++ endif() ++ set(CMAKE_INSTALL_LIBDIR "${_LIBDIR_DEFAULT}" CACHE PATH "object code libraries (${_LIBDIR_DEFAULT})") ++endif() ++ ++if(NOT DEFINED CMAKE_INSTALL_INCLUDEDIR) ++ set(CMAKE_INSTALL_INCLUDEDIR "include" CACHE PATH "C header files (include)") ++endif() ++ ++if(NOT DEFINED CMAKE_INSTALL_OLDINCLUDEDIR) ++ set(CMAKE_INSTALL_OLDINCLUDEDIR "/usr/include" CACHE PATH "C header files for non-gcc (/usr/include)") ++endif() ++ ++if(NOT DEFINED CMAKE_INSTALL_DATAROOTDIR) ++ set(CMAKE_INSTALL_DATAROOTDIR "share" CACHE PATH "read-only architecture-independent data root (share)") ++endif() ++ ++#----------------------------------------------------------------------------- ++# Values whose defaults are relative to DATAROOTDIR. Store empty values in ++# the cache and store the defaults in local variables if the cache values are ++# not set explicitly. This auto-updates the defaults as DATAROOTDIR changes. ++ ++if(NOT CMAKE_INSTALL_DATADIR) ++ set(CMAKE_INSTALL_DATADIR "" CACHE PATH "read-only architecture-independent data (DATAROOTDIR)") ++ set(CMAKE_INSTALL_DATADIR "${CMAKE_INSTALL_DATAROOTDIR}") ++endif() ++ ++if(NOT CMAKE_INSTALL_INFODIR) ++ set(CMAKE_INSTALL_INFODIR "" CACHE PATH "info documentation (DATAROOTDIR/info)") ++ set(CMAKE_INSTALL_INFODIR "${CMAKE_INSTALL_DATAROOTDIR}/info") ++endif() ++ ++if(NOT CMAKE_INSTALL_LOCALEDIR) ++ set(CMAKE_INSTALL_LOCALEDIR "" CACHE PATH "locale-dependent data (DATAROOTDIR/locale)") ++ set(CMAKE_INSTALL_LOCALEDIR "${CMAKE_INSTALL_DATAROOTDIR}/locale") ++endif() ++ ++if(NOT CMAKE_INSTALL_MANDIR) ++ set(CMAKE_INSTALL_MANDIR "" CACHE PATH "man documentation (DATAROOTDIR/man)") ++ set(CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_DATAROOTDIR}/man") ++endif() ++ ++if(NOT CMAKE_INSTALL_DOCDIR) ++ set(CMAKE_INSTALL_DOCDIR "" CACHE PATH "documentation root (DATAROOTDIR/doc/PROJECT_NAME)") ++ set(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}") ++endif() ++ ++#----------------------------------------------------------------------------- ++ ++mark_as_advanced( ++ CMAKE_INSTALL_BINDIR ++ CMAKE_INSTALL_SBINDIR ++ CMAKE_INSTALL_LIBEXECDIR ++ CMAKE_INSTALL_SYSCONFDIR ++ CMAKE_INSTALL_SHAREDSTATEDIR ++ CMAKE_INSTALL_LOCALSTATEDIR ++ CMAKE_INSTALL_LIBDIR ++ CMAKE_INSTALL_INCLUDEDIR ++ CMAKE_INSTALL_OLDINCLUDEDIR ++ CMAKE_INSTALL_DATAROOTDIR ++ CMAKE_INSTALL_DATADIR ++ CMAKE_INSTALL_INFODIR ++ CMAKE_INSTALL_LOCALEDIR ++ CMAKE_INSTALL_MANDIR ++ CMAKE_INSTALL_DOCDIR ++ ) ++ ++# Result directories ++# ++foreach(dir ++ BINDIR ++ SBINDIR ++ LIBEXECDIR ++ SYSCONFDIR ++ SHAREDSTATEDIR ++ LOCALSTATEDIR ++ LIBDIR ++ INCLUDEDIR ++ OLDINCLUDEDIR ++ DATAROOTDIR ++ DATADIR ++ INFODIR ++ LOCALEDIR ++ MANDIR ++ DOCDIR ++ ) ++ if(NOT IS_ABSOLUTE ${CMAKE_INSTALL_${dir}}) ++ set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}") ++ else() ++ set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_${dir}}") ++ endif() ++endforeach() +diff -Naur glm/CMakeLists.txt glmn/CMakeLists.txt +--- glm/CMakeLists.txt 2019-09-07 14:10:16.000000000 +0200 ++++ glmn/CMakeLists.txt 2019-09-23 00:10:29.559815104 +0200 +@@ -4,6 +4,11 @@ + set(GLM_VERSION "0.9.9") + project(glm VERSION ${GLM_VERSION} LANGUAGES CXX) + ++list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") ++ ++include(GNUInstallDirs) ++include(CMakePackageConfigHelpers) ++ + enable_testing() + + option(GLM_QUIET "No CMake Message" OFF) +@@ -237,3 +242,62 @@ + add_subdirectory(glm) + add_subdirectory(test) + ++set(GLM_INSTALL_CONFIGDIR "${CMAKE_INSTALL_LIBDIR}/cmake/glm") ++install(DIRECTORY glm DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) ++ ++ ++# CMake automatically adds an architecture compatibility check to make sure ++# 32 and 64 bit code is not accidentally mixed. For a header-only library this ++# is not required. The check can be disabled by temporarily unsetting ++# CMAKE_SIZEOF_VOID_P. In CMake 3.14 and later this can be achieved more cleanly ++# with write_basic_package_version_file(ARCH_INDEPENDENT). ++# TODO: Use this once a newer CMake can be required. ++set(GLM_SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P}) ++unset(CMAKE_SIZEOF_VOID_P) ++write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/glmConfigVersion.cmake" VERSION ${GLM_VERSION} COMPATIBILITY AnyNewerVersion) ++set(CMAKE_SIZEOF_VOID_P ${GLM_SIZEOF_VOID_P}) ++ ++# build tree package config ++configure_file(cmake/glmBuildConfig.cmake.in glmConfig.cmake @ONLY) ++ ++# install tree package config ++configure_package_config_file( ++ cmake/glmConfig.cmake.in ++ ${GLM_INSTALL_CONFIGDIR}/glmConfig.cmake ++ INSTALL_DESTINATION ${GLM_INSTALL_CONFIGDIR} ++ PATH_VARS CMAKE_INSTALL_INCLUDEDIR ++ NO_CHECK_REQUIRED_COMPONENTS_MACRO) ++ ++install(FILES ++ "${CMAKE_CURRENT_BINARY_DIR}/${GLM_INSTALL_CONFIGDIR}/glmConfig.cmake" ++ "${CMAKE_CURRENT_BINARY_DIR}/glmConfigVersion.cmake" ++ DESTINATION ${GLM_INSTALL_CONFIGDIR}) ++ ++add_library(glm INTERFACE) ++target_include_directories(glm INTERFACE ++ $ ++ $) ++install(TARGETS glm EXPORT glmTargets) ++ ++export(EXPORT glmTargets FILE "${CMAKE_CURRENT_BINARY_DIR}/glmTargets.cmake") ++ ++install(EXPORT glmTargets FILE glmTargets.cmake DESTINATION ${GLM_INSTALL_CONFIGDIR}) ++ ++# build pkg-config file ++configure_file("./cmake/glm.pc.in" "glm.pc" @ONLY) ++ ++# install pkg-config file ++install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glm.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") ++ ++export(PACKAGE glm) ++ ++if(NOT TARGET uninstall) ++ configure_file( ++ ${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in ++ ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake ++ IMMEDIATE @ONLY) ++ ++ add_custom_target(uninstall ++ COMMAND ${CMAKE_COMMAND} -P ++ ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) ++endif() +diff -Naur glm/cmake_uninstall.cmake.in glmn/cmake_uninstall.cmake.in +--- glm/cmake_uninstall.cmake.in 1970-01-01 01:00:00.000000000 +0100 ++++ glmn/cmake_uninstall.cmake.in 2019-09-23 00:12:22.495660449 +0200 +@@ -0,0 +1,26 @@ ++if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") ++ message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") ++endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") ++ ++if (NOT DEFINED CMAKE_INSTALL_PREFIX) ++ set (CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@") ++endif () ++ message(${CMAKE_INSTALL_PREFIX}) ++ ++file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) ++string(REGEX REPLACE "\n" ";" files "${files}") ++foreach(file ${files}) ++ message(STATUS "Uninstalling $ENV{DESTDIR}${file}") ++ if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") ++ exec_program( ++ "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" ++ OUTPUT_VARIABLE rm_out ++ RETURN_VALUE rm_retval ++ ) ++ if(NOT "${rm_retval}" STREQUAL 0) ++ message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}") ++ endif(NOT "${rm_retval}" STREQUAL 0) ++ else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") ++ message(STATUS "File $ENV{DESTDIR}${file} does not exist.") ++ endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") ++endforeach(file)