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