1find_path( GLM_INCLUDE_DIR glm/glm.hpp 2 PATHS ${GLM_ROOT_DIR} $ENV{GLM_ROOT_DIR} 3 DOC "GLM library header path." 4 ) 5 6if( NOT ${GLM_INCLUDE_DIR} STREQUAL "GLM_INCLUDE_DIR-NOTFOUND" ) 7 8 # attempt to extract the GLM Version information from setup.hpp 9 find_file( GLM_SETUP setup.hpp 10 PATHS ${GLM_INCLUDE_DIR} 11 PATH_SUFFIXES glm/core glm/detail 12 NO_DEFAULT_PATH ) 13 14 if( NOT ${GLM_SETUP} STREQUAL "GLM_SETUP-NOTFOUND" ) 15 16 # extract the "#define GLM_VERSION*" lines 17 file( STRINGS ${GLM_SETUP} _version REGEX "^#define.*GLM_VERSION.*" ) 18 19 foreach( SVAR ${_version} ) 20 string( REGEX MATCH GLM_VERSION_[M,A,J,O,R,I,N,P,T,C,H,E,V,I,S]* _VARNAME ${SVAR} ) 21 string( REGEX MATCH [0-9]+ _VALUE ${SVAR} ) 22 23 if( NOT ${_VARNAME} STREQUAL "" AND NOT ${_VALUE} STREQUAL "" ) 24 set( _${_VARNAME} ${_VALUE} ) 25 endif() 26 27 endforeach() 28 29 #ensure that NOT GLM_VERSION* will evaluate to '0' 30 if( NOT _GLM_VERSION_MAJOR ) 31 set( _GLM_VERSION_MAJOR 0 ) 32 endif() 33 34 if( NOT _GLM_VERSION_MINOR ) 35 set( _GLM_VERSION_MINOR 0 ) 36 endif() 37 38 if( NOT _GLM_VERSION_PATCH ) 39 set( _GLM_VERSION_PATCH 0 ) 40 endif() 41 42 if( NOT _GLM_VERSION_REVISION ) 43 set( _GLM_VERSION_REVISION 0 ) 44 endif() 45 46 set( GLM_VERSION ${_GLM_VERSION_MAJOR}.${_GLM_VERSION_MINOR}.${_GLM_VERSION_PATCH}.${_GLM_VERSION_REVISION} ) 47 unset( GLM_SETUP CACHE ) 48 49 endif() 50endif() 51 52 53include( FindPackageHandleStandardArgs ) 54FIND_PACKAGE_HANDLE_STANDARD_ARGS( GLM 55 REQUIRED_VARS 56 GLM_INCLUDE_DIR 57 GLM_VERSION 58 VERSION_VAR GLM_VERSION ) 59 60 61mark_as_advanced( GLM_INCLUDE_DIR ) 62set( GLM_VERSION_MAJOR ${_GLM_VERSION_MAJOR} CACHE INTERNAL "" ) 63set( GLM_VERSION_MINOR ${_GLM_VERSION_MINOR} CACHE INTERNAL "" ) 64set( GLM_VERSION_PATCH ${_GLM_VERSION_PATCH} CACHE INTERNAL "" ) 65set( GLM_VERSION_TWEAK ${_GLM_VERSION_REVISION} CACHE INTERNAL "" ) 66