• GorgonConfig.cmake.in
  • # - Config file for the Gorgon package
    # It defines the following variables
    #  GORGON_INCLUDE_DIRS - include directories for Gorgon Library
    #  GORGON_LIBRARIES    - libraries to link against
     
    include("${CMAKE_CURRENT_LIST_DIR}/GorgonTargets.cmake")
    
    # Compute paths
    get_filename_component(GORGON_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
    set(GORGON_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@")
    
    # These are IMPORTED targets created by GorgonTargets.cmake
    set(GORGON_LIBRARIES Gorgon)
    set(GORGON_EXECUTABLE )
    
    MACRO(compilersetup)
    
    	if(UNIX) 
    		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DLINUX -Werror=return-type")
    	else()
    		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4800")
    	endif()
    
    	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGLM_SWIZZLE -DGLM_FORCE_RADIANS")
    
    	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DOPENGL @ADDITIONAL_CLIENT_FLAGS@")
    
    	#compiler check
    	IF(CMAKE_COMPILER_IS_GNUCXX)
    		EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
    		
    		IF(GCC_VERSION VERSION_LESS 4.8)
    			IF(IGNORE_COMPILER_VERSION)
    				MESSAGE(STATUS "Gorgon Library requires GCC 4.8+")
    			ELSE()
    				MESSAGE(STATUS "use cmake -DIGNORE_COMPILER_VERSION=ON to continue anyway")
    				MESSAGE(FATAL_ERROR "Gorgon Library requires GCC 4.8+")
    			ENDIF()
    		ENDIF()
    	ELSEIF(MSVC)
    		IF(MSVC_VERSION VERSION_LESS 14)
    			IF(IGNORE_COMPILER_VERSION)
    				MESSAGE(STATUS "Gorgon Library requires Visual Studio 2015+")
    			ELSE()
    				MESSAGE(STATUS "use cmake -DIGNORE_COMPILER_VERSION=ON to continue anyway")
    				MESSAGE(FATAL_ERROR "Gorgon Library requires Visual Studio 2015+")
    			ENDIF()
    		ENDIF()
    	ELSE()
    		IF(IGNORE_COMPILER_VENDOR)
    			MESSAGE(STATUS "Unsupported compiler! Gorgon Library requires GCC 4.8+ OR Visual Studio 2015+")
    			MESSAGE(STATUS "You may need to manually activate C++14 features")
    		ELSE()
    			MESSAGE(STATUS "use cmake -DIGNORE_COMPILER_VENDOR=ON to continue anyway")
    			MESSAGE(FATAL_ERROR "Unsupported compiler! Gorgon Library requires GCC 4.8+ OR Visual Studio 2015+")
    		ENDIF()
    	ENDIF()
    
    	OPTION(FORCE_32_BIT "Force 32 bit compilation" OFF)
    
    	#enable C++11 and 32-bit compilation
    	INCLUDE(CheckCXXCompilerFlag)
    	IF(CMAKE_COMPILER_IS_GNUCXX)
    		IF(${FORCE_32_BIT})
    			SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -m32")
    			SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
    		ELSE()
    			SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
    		ENDIF()
    	ENDIF()
    
    	IF(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
    		IF(${FORCE_32_BIT})
    			SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -m32")
    			SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
    		ELSE()
    			SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
    		ENDIF()
    	ENDIF()
    
    	#MACRO(FixProject) 
    	#ENDMACRO()
    
    	IF(MSVC)
    		ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
    	
    		ADD_DEFINITIONS(-DUNICODE)
    		ADD_DEFINITIONS(-D_UNICODE)
    		
    		SET(configs
    		CMAKE_C_FLAGS_DEBUG
    		CMAKE_C_FLAGS_MINSIZEREL
    		CMAKE_C_FLAGS_RELEASE
    		CMAKE_C_FLAGS_RELWITHDEBINFO
    		CMAKE_CXX_FLAGS_DEBUG
    		CMAKE_CXX_FLAGS_MINSIZEREL
    		CMAKE_CXX_FLAGS_RELEASE
    		CMAKE_CXX_FLAGS_RELWITHDEBINFO
    		)
    		
    		FOREACH(config ${configs})
    		IF(${config} MATCHES "/MD")
    			STRING(REGEX REPLACE "/MD" "/MT" ${config} "${${config}}")
    		ENDIF()
    		ENDFOREACH()
    		
    		IF(${CMAKE_CL_64} AND ${FORCE_32_BIT})
    			MESSAGE(FATAL_ERROR "Gorgon Library forced to work with 32 bit compilation")
    		ENDIF()
    	ENDIF()
    ENDMACRO()
    
    MACRO(linkgorgon target)
    	compilersetup()
    	target_link_libraries(${target} Gorgon)
    	
    	target_include_directories(${target} SYSTEM PRIVATE ${GORGON_INCLUDE_DIRS})
    	
        if("@FREETYPE@" STREQUAL "SYSTEM" OR "@FREETYPE@" STREQUAL "BUILTIN")
            set(FREETYPE_INCLUDE_DIRS "@FREETYPE_INCLUDE_DIRS@")
        endif()
    ENDMACRO()