diff --git a/.gitignore b/.gitignore index 9f77c41..886c5df 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ /glm-0.9.8.5.zip /glm-0.9.9.0.zip /glm-0.9.9.2.zip +/glm-0.9.9.6.zip diff --git a/glm-0.9.9.6-install.patch b/glm-0.9.9.6-install.patch new file mode 100644 index 0000000..1b144da --- /dev/null +++ b/glm-0.9.9.6-install.patch @@ -0,0 +1,628 @@ +From 09e1b48278a00f273cba0f021c1d8a840747fe90 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Joonas=20Saraj=C3=A4rvi?= +Date: Sat, 23 Nov 2019 14:55:45 +0200 +Subject: [PATCH] Revert "Removed CMake install and uninstall scripts" + +This reverts commit 5f352ecce21bb1ab37fa56fac0f383c779b351a3. + +CMake installation support was removed by the upstream project, but +it should still work with GLM 0.9.9.6. + +Some work is happening upstream [1, 2, 3] to make available a working +setup, but 0.9.9.6 did not ship with installation support. + +[1] https://github.com/g-truc/glm/issues/961 +[2] https://github.com/g-truc/glm/pull/966 +[3] https://github.com/g-truc/glm/pull/968 +--- + CMakeLists.txt | 64 ++++++++ + cmake/CMakePackageConfigHelpers.cmake | 227 ++++++++++++++++++++++++++ + cmake/GNUInstallDirs.cmake | 188 +++++++++++++++++++++ + cmake/glm.pc.in | 7 + + cmake/glmBuildConfig.cmake.in | 6 + + cmake/glmConfig.cmake.in | 9 + + cmake_uninstall.cmake.in | 26 +++ + readme.md | 3 - + 8 files changed, 527 insertions(+), 3 deletions(-) + create mode 100644 cmake/CMakePackageConfigHelpers.cmake + create mode 100644 cmake/GNUInstallDirs.cmake + create mode 100644 cmake/glm.pc.in + create mode 100644 cmake/glmBuildConfig.cmake.in + create mode 100644 cmake/glmConfig.cmake.in + create mode 100644 cmake_uninstall.cmake.in + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b8c328a0..2325ebf8 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -4,6 +4,11 @@ cmake_policy(VERSION 3.2) + 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 @@ include_directories("${PROJECT_SOURCE_DIR}") + 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 --git a/cmake/CMakePackageConfigHelpers.cmake b/cmake/CMakePackageConfigHelpers.cmake +new file mode 100644 +index 00000000..d5bf4a2f +--- /dev/null ++++ b/cmake/CMakePackageConfigHelpers.cmake +@@ -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 --git a/cmake/GNUInstallDirs.cmake b/cmake/GNUInstallDirs.cmake +new file mode 100644 +index 00000000..4dc2d68a +--- /dev/null ++++ b/cmake/GNUInstallDirs.cmake +@@ -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 --git a/cmake/glm.pc.in b/cmake/glm.pc.in +new file mode 100644 +index 00000000..fc5c7bb7 +--- /dev/null ++++ b/cmake/glm.pc.in +@@ -0,0 +1,7 @@ ++prefix=@CMAKE_INSTALL_PREFIX@ ++includedir=${prefix}/include ++ ++Name: GLM ++Description: OpenGL Mathematics ++Version: @GLM_VERSION@ ++Cflags: -I${includedir} +diff --git a/cmake/glmBuildConfig.cmake.in b/cmake/glmBuildConfig.cmake.in +new file mode 100644 +index 00000000..1258dea1 +--- /dev/null ++++ b/cmake/glmBuildConfig.cmake.in +@@ -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 --git a/cmake/glmConfig.cmake.in b/cmake/glmConfig.cmake.in +new file mode 100644 +index 00000000..37d5ad81 +--- /dev/null ++++ b/cmake/glmConfig.cmake.in +@@ -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 --git a/cmake_uninstall.cmake.in b/cmake_uninstall.cmake.in +new file mode 100644 +index 00000000..d00a5166 +--- /dev/null ++++ b/cmake_uninstall.cmake.in +@@ -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) +diff --git a/readme.md b/readme.md +index 73e16c91..2f41abdc 100644 +--- a/readme.md ++++ b/readme.md +@@ -77,9 +77,6 @@ glm::mat4 camera(float Translate, glm::vec2 const& Rotate) + - Fixed Clang or GCC build due to wrong GLM_HAS_IF_CONSTEXPR definition #907 + - Fixed CUDA 9 build #910 + +-#### Deprecation: +- - Removed CMake install and uninstall scripts +- + ### [GLM 0.9.9.5](https://github.com/g-truc/glm/releases/tag/0.9.9.5) - 2019-04-01 + #### Fixes: + - Fixed build errors when defining GLM_ENABLE_EXPERIMENTAL #884 #883 +-- +2.21.0 + diff --git a/glm.spec b/glm.spec index 478a366..e508ddf 100644 --- a/glm.spec +++ b/glm.spec @@ -2,13 +2,14 @@ %global debug_package %{nil} Name: glm -Version: 0.9.9.2 -Release: 3%{?dist} +Version: 0.9.9.6 +Release: 1%{?dist} Summary: C++ mathematics library for graphics programming License: MIT URL: http://glm.g-truc.net/ Source0: https://github.com/g-truc/glm/releases/download/%{version}/%{name}-%{version}.zip +Patch0: glm-0.9.9.6-install.patch BuildRequires: gcc BuildRequires: gcc-c++ @@ -59,7 +60,7 @@ a programming manual for the %{name}-devel package. # Also it looks like some versions get shipped with a common # directory in archive root, but with an unusual name for the # directory. In this case, use the -n option of the setup macro. -%setup -q +%setup -q -n glm # A couple of files had CRLF line-ends in them. # Check with rpmlint after updating the package that we are not @@ -68,6 +69,7 @@ a programming manual for the %{name}-devel package. # This release of glm seems to have shipped with no CRLF file # endings at all, so these are commented out. sed -i 's/\r//' readme.md +sed -i 's/\r//' CMakeLists.txt sed -i 's/\r//' doc/api/doxygen.css sed -i 's/\r//' doc/api/dynsections.js sed -i 's/\r//' doc/api/jquery.js @@ -79,6 +81,7 @@ sed -i 's/\r//' glm/detail/setup.hpp sed -i 's/\r//' glm/simd/platform.h sed -i 's/\r//' test/core/core_setup_message.cpp +%patch0 -p1 %build mkdir build @@ -123,6 +126,9 @@ rmdir $RPM_BUILD_ROOT%{_libdir} %doc doc/api/ %changelog +* Sat Nov 23 2019 Joonas Sarajärvi - 0.9.9.6-1 +- New upstream release + * Thu Jul 25 2019 Fedora Release Engineering - 0.9.9.2-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild diff --git a/sources b/sources index 124ba28..d2fb6a0 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (glm-0.9.9.2.zip) = b63c95dab1f19b39e1f5cc938d73b1a199a287007c63445377bba558c4a09b3b804a9a654553471e2acecbf8b73f44c0fe8ec4d6cd9a5880390ff8f7128e3879 +SHA512 (glm-0.9.9.6.zip) = dbc3485fc983f5ef86461d9556a5a129c5d9e3be306be1aebe7ed34d2409658559112607a78d7f43513944d7f526b35605f43c31c605aa0f7a55cb3975aeab73