X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=CMakeModules%2FFindSimGear.cmake;h=56f230a881c61681a329ab45e60ba32d1293961e;hb=4d4e1a237165768e9abcf98a4251a9cefacb5093;hp=4fd1550215f463439aa529eb578f1c6aaba61d81;hpb=e3ad3d3a07c472ca4c2b18cd240c986499bb2128;p=flightgear.git diff --git a/CMakeModules/FindSimGear.cmake b/CMakeModules/FindSimGear.cmake index 4fd155021..56f230a88 100644 --- a/CMakeModules/FindSimGear.cmake +++ b/CMakeModules/FindSimGear.cmake @@ -38,18 +38,14 @@ macro(find_sg_library libName varName libs) HINTS $ENV{SIMGEAR_DIR} PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR} libs64 libs libs/Win32 libs/Win64 PATHS - /usr/local - /usr - /opt + ${ADDITIONAL_LIBRARY_PATHS} ) FIND_LIBRARY(${libVarName}_RELEASE NAMES ${libName}${CMAKE_RELEASE_POSTFIX} HINTS $ENV{SIMGEAR_DIR} PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR} libs64 libs libs/Win32 libs/Win64 PATHS - /usr/local - /usr - /opt + ${ADDITIONAL_LIBRARY_PATHS} ) # message(STATUS "before: Simgear ${${libVarName}_RELEASE} ") @@ -75,22 +71,11 @@ macro(find_sg_library libName varName libs) endif() endmacro() -macro(find_sg_component comp libs) - set(compLib "sg${comp}") - string(TOUPPER "SIMGEAR_${comp}" libVar) - - find_sg_library(${compLib} ${libVar} ${libs}) -endmacro() - FIND_PATH(SIMGEAR_INCLUDE_DIR simgear/math/SGMath.hxx HINTS $ENV{SIMGEAR_DIR} PATH_SUFFIXES include PATHS - ~/Library/Frameworks - /Library/Frameworks - /usr/local - /usr - /opt + ${ADDITIONAL_LIBRARY_PATHS} ) # make sure the simgear include directory exists @@ -102,19 +87,28 @@ endif() message(STATUS "SimGear include directory: ${SIMGEAR_INCLUDE_DIR}") +# read the simgear version header file, get the version +file(READ ${SIMGEAR_INCLUDE_DIR}/simgear/version.h SG_VERSION_FILE) + # make sure the simgear/version.h header exists -if (NOT EXISTS ${SIMGEAR_INCLUDE_DIR}/simgear/version.h) +if (NOT SG_VERSION_FILE) message(FATAL_ERROR "Found SimGear, but it does not contain a simgear/version.h include! " - "SimGear installation is incomplete.") + "SimGear installation is incomplete or mismatching.") +endif() + +string(STRIP "${SG_VERSION_FILE}" SIMGEAR_DEFINE) +string(REPLACE "#define SIMGEAR_VERSION " "" SIMGEAR_VERSION "${SIMGEAR_DEFINE}") + +if(NOT SIMGEAR_VERSION) + message(FATAL_ERROR "Unable to find SimGear or simgear/version.h does not exist/is invalid. " + "Make sure you have installed the SimGear ${SimGear_FIND_VERSION} includes. " + "When using non-standard locations, please use 'SIMGEAR_DIR' " + "to select the SimGear library location to be used.") endif() -# read the simgear version header file, get the version -file(READ ${SIMGEAR_INCLUDE_DIR}/simgear/version.h sgVersionFile) -string(STRIP ${sgVersionFile} SIMGEAR_DEFINE) -string(REPLACE "#define SIMGEAR_VERSION " "" SIMGEAR_VERSION ${SIMGEAR_DEFINE}) message(STATUS "found SimGear version: ${SIMGEAR_VERSION} (needed ${SimGear_FIND_VERSION})") -if(NOT ${SIMGEAR_VERSION} EQUAL ${SimGear_FIND_VERSION}) +if(NOT "${SIMGEAR_VERSION}" EQUAL "${SimGear_FIND_VERSION}") message(FATAL_ERROR "You have installed a mismatching SimGear version ${SIMGEAR_VERSION} " "instead of ${SimGear_FIND_VERSION} as required by FlightGear. " "When using multiple SimGear installations, please use 'SIMGEAR_DIR' " @@ -130,7 +124,6 @@ if(SIMGEAR_SHARED) find_sg_library(SimGearCore SIMGEAR_CORE SIMGEAR_CORE_LIBRARIES) find_sg_library(SimGearScene SIMGEAR_SCENE SIMGEAR_LIBRARIES) - list(APPEND SIMGEAR_LIBRARIES ${SIMGEAR_CORE_LIBRARIES}) set(SIMGEAR_CORE_LIBRARY_DEPENDENCIES "") @@ -144,60 +137,25 @@ else(SIMGEAR_SHARED) set(SIMGEAR_CORE_LIBRARIES "") # clear value message(STATUS "looking for static SimGear libraries") - # note the order here affects the order Simgear libraries are - # linked in, and hence ability to link when using a traditional - # linker such as GNU ld on Linux - set(comps - environment - nasal - tsync - bvh - bucket - io - serial - math - props - structure - timing - xml - misc - threads - debug - magvar - ) - - set(scene_comps - ephem - sky - material - tgdb - model - screen - util - sound) - - foreach(component ${comps}) - find_sg_component(${component} SIMGEAR_CORE_LIBRARIES) - endforeach() - - foreach(component ${scene_comps}) - find_sg_component(${component} SIMGEAR_LIBRARIES) - endforeach() + find_sg_library(SimGearCore SIMGEAR_CORE SIMGEAR_CORE_LIBRARIES) + find_sg_library(SimGearScene SIMGEAR_SCENE SIMGEAR_LIBRARIES) # again link order matters - scene libraries depend on core ones list(APPEND SIMGEAR_LIBRARIES ${SIMGEAR_CORE_LIBRARIES}) - - #message(STATUS "all libs ${SIMGEAR_LIBRARIES}") set(SIMGEAR_CORE_LIBRARY_DEPENDENCIES ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARY} - ${LIBSVN_LIBRARIES} ${WINMM_LIBRARY}) set(SIMGEAR_SCENE_LIBRARY_DEPENDENCIES ${OPENAL_LIBRARY}) + if(APPLE) + find_library(COCOA_LIBRARY Cocoa) + list(APPEND SIMGEAR_CORE_LIBRARY_DEPENDENCIES ${COCOA_LIBRARY}) + endif() + if(WIN32) list(APPEND SIMGEAR_CORE_LIBRARY_DEPENDENCIES ws2_32.lib) endif(WIN32) @@ -211,7 +169,7 @@ else(SIMGEAR_SHARED) endif(NOT MSVC) endif(SIMGEAR_SHARED) -if((NOT SIMGEAR_CORE_LIBRARIES)OR(NOT SIMGEAR_LIBRARIES)) +if((NOT SIMGEAR_CORE_LIBRARIES) OR (NOT SIMGEAR_LIBRARIES)) message(FATAL_ERROR "Cannot find SimGear libraries! (Forgot 'make install' for SimGear?) " "Compile & INSTALL SimGear before configuring FlightGear. " "When using non-standard locations, use 'SIMGEAR_DIR' to configure the SimGear location.")