Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/build_config/cmake_modules/FindFOX.cmake
169672 views
# find fox-config program (usually in Linux)
find_program(FOX_CONFIG fox-config)
# if was found, execute it and obtain the variables FOX_CXX_FLAGS and FOX_LIBRARY_RELEASE, needed for compilations
if(FOX_CONFIG)
    find_program(BASH bash)
    execute_process(COMMAND ${BASH} ${FOX_CONFIG} --cflags
        OUTPUT_VARIABLE FOX_CXX_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
    execute_process(COMMAND ${BASH} ${FOX_CONFIG} --libs
        OUTPUT_VARIABLE FOX_LIBRARY_RELEASE OUTPUT_STRIP_TRAILING_WHITESPACE)
    if (FOX_LIBRARY_RELEASE MATCHES ".*-lGLU -lGL.*")
        # remove duplicate GL linking which confuses macOS
        string(REGEX REPLACE "-lGL -lGLU " "" FOX_LIBRARY_RELEASE "${FOX_LIBRARY_RELEASE}")
    endif()
    if(FOX_CXX_FLAGS MATCHES mingw)
        get_filename_component(root_dir "${FOX_CONFIG}" DIRECTORY)
        get_filename_component(root_dir "${root_dir}" DIRECTORY)
        string(REGEX REPLACE "/mingw../" "${root_dir}/" FOX_CXX_FLAGS "${FOX_CXX_FLAGS}")
        string(REGEX REPLACE "/mingw../" "${root_dir}/" FOX_LIBRARY_RELEASE "${FOX_LIBRARY_RELEASE}")
    endif()
endif(FOX_CONFIG)

# Declare a boolean flag to note if Fox library was found
set(FOX_FOUND FALSE)

# if fox-config was executed successfully, fox was found
if(FOX_LIBRARY_RELEASE AND FOX_CXX_FLAGS)
    SET(FOX_FOUND TRUE)
else()
    # In Windows system, find the fox directory using as hint the environment variable "FOX_INCLUDE_DIR" (usually SUMOLibraries)
    find_path(FOX_INCLUDE_DIR NAMES fx.h HINTS $ENV{FOX_INCLUDE_DIR})
    # In Windows system, find the fox dll using as hint the environment variable "FOX_LIBRARY_RELEASE"
    find_library(FOX_LIBRARY_DEBUG NAMES FOXDLL-1.6d FOX-16d HINTS $ENV{FOX_LIBRARY_DEBUG})
	find_library(FOX_LIBRARY_RELEASE NAMES FOXDLL-1.6 FOX-16 HINTS $ENV{FOX_LIBRARY_RELEASE})
    # if both were found, set flag FOX_FOUND to true
    if (FOX_INCLUDE_DIR AND FOX_LIBRARY_RELEASE)
        set(FOX_FOUND TRUE)
    else (FOX_INCLUDE_DIR AND FOX_LIBRARY_RELEASE)
        if (FOX_FIND_REQUIRED)
            message(FATAL_ERROR "Could NOT find Fox. GUI and threading will not be available. If it is installed, try to set the environment variables FOX_INCLUDE_DIR and FOX_LIBRARY_RELEASE.")
        endif(FOX_FIND_REQUIRED)
        set(FOX_LIBRARY_RELEASE "")
        message(STATUS "Could NOT find Fox. GUI and threading will not be available. If it is installed, try to set the environment variables FOX_INCLUDE_DIR and FOX_LIBRARY_RELEASE.")
    endif (FOX_INCLUDE_DIR AND FOX_LIBRARY_RELEASE)
endif(FOX_LIBRARY_RELEASE AND FOX_CXX_FLAGS)

# continue if fox was found
if(FOX_FOUND)
	# show found info
	if (NOT FOX_FIND_QUIETLY)
		message(STATUS "Found Fox: ${FOX_CXX_FLAGS} ${FOX_LIBRARY_RELEASE}")
	endif()
	# if FOX_LIBRARY was not set previously in FOX_CONFIG, set it manually
    if(NOT FOX_LIBRARY)
		# only use debug if it was previously found
		if (FOX_LIBRARY_DEBUG)
			set(FOX_LIBRARY "debug;${FOX_LIBRARY_DEBUG};optimized;${FOX_LIBRARY_RELEASE}")
		else (FOX_LIBRARY_DEBUG)
			set(FOX_LIBRARY "general;${FOX_LIBRARY_RELEASE}")
		endif (FOX_LIBRARY_DEBUG)
    endif(NOT FOX_LIBRARY)
endif()