diff --git a/CMakeLists.txt b/CMakeLists.txt index e9287c9f7..7136b5269 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -59,7 +59,17 @@ else(EVENT_INPUT) endif(EVENT_INPUT) # check required dependencies -find_package(Boost REQUIRED) +if (MSVC) + # on MSVC, Olaf reports that the serialization library is required at + # link time. No one has you explained why, unfortunately. + set(Boost_USE_STATIC_LIBS ON) + set(Boost_USE_MULTITHREADED ON) + set(Boost_USE_STATIC_RUNTIME OFF) + find_package(Boost REQUIRED COMPONENTS serialization) +else (MSVC) + find_package(Boost REQUIRED) +endif (MSVC) + find_package(ZLIB REQUIRED) find_package(Threads REQUIRED) find_package(OpenGL REQUIRED) @@ -130,8 +140,8 @@ if(WIN32) set(NOMINMAX 1) endif(WIN32) -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_FLAGS} ${MSVC_FLAGS}") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WARNING_FLAGS} ${MSVC_FLAGS}") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_FLAGS} ${MSVC_FLAGS} -D_REENTRANT") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WARNING_FLAGS} ${MSVC_FLAGS} -D_REENTRANT") include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} diff --git a/CMakeModules/FindSimGear.cmake b/CMakeModules/FindSimGear.cmake index b4ac321fb..d6a4b7ba9 100644 --- a/CMakeModules/FindSimGear.cmake +++ b/CMakeModules/FindSimGear.cmake @@ -62,59 +62,66 @@ FIND_LIBRARY(SIMGEAR_LIBRARIES ) macro(find_sg_component comp libs) - set(compLib "sg${comp}") - string(TOUPPER "SIMGEAR_${comp}_LIBRARY" compLibName) - - FIND_LIBRARY(${compLibName} - NAMES ${compLib} - HINTS $ENV{SIMGEAR_DIR} - PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64 - PATHS - /usr/local - /usr - /opt - ) - - set(componentLib ${${compLibName}}) - if (NOT ${componentLib} STREQUAL "componentLib-NOTFOUND") - #message(STATUS "found ${componentLib}") - list(APPEND ${libs} ${componentLib}) - endif() + set(compLib "sg${comp}") + string(TOUPPER "SIMGEAR_${comp}_LIBRARY" compLibName) + + FIND_LIBRARY(${compLibName} + NAMES ${compLib} + HINTS $ENV{SIMGEAR_DIR} + PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64 + PATHS + /usr/local + /usr + /opt + ) + + set(componentLib ${${compLibName}}) + if (NOT ${componentLib} STREQUAL "componentLib-NOTFOUND") + #message(STATUS "found ${componentLib}") + list(APPEND ${libs} ${componentLib}) + endif() endmacro() -if(${SIMGEAR_LIBRARIES} STREQUAL "SIMGEAR_LIBRARIES-NOTFOUND") - set(SIMGEAR_LIBRARIES "") # clear value - + +if(${SIMGEAR_LIBRARIES} STREQUAL "SIMGEAR_LIBRARIES-NOTFOUND") + set(SIMGEAR_LIBRARIES "") # clear value + + if(NOT MSVC) + # Olaf indicates that linking the threads libs causes failures + # on MSVC builds + set(thread_lib threads) + endif(NOT MSVC) + # 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 - ephemeris - environment - nasal - sky - material tgdb - model - screen - bucket - bvh - util route - timing - threads - io - serial - sound - structure - props - xml - debug - misc - magvar - math) - - foreach(component ${comps}) - find_sg_component(${component} SIMGEAR_LIBRARIES) - endforeach() + set(comps + ephemeris + environment + nasal + sky + material tgdb + model + screen + bucket + bvh + util route + timing + ${thread_lib} + io + serial + sound + structure + props + xml + debug + misc + magvar + math) + + foreach(component ${comps}) + find_sg_component(${component} SIMGEAR_LIBRARIES) + endforeach() endif() # now we've found SimGear, check its version @@ -132,30 +139,30 @@ check_cxx_source_runs( #define xstr(s) str(s) #define str(s) #s - #define MIN_MAJOR ${SimGear_FIND_VERSION_MAJOR} - #define MIN_MINOR ${SimGear_FIND_VERSION_MINOR} - #define MIN_MICRO ${SimGear_FIND_VERSION_PATCH} - - int main() { - int major, minor, micro; + #define MIN_MAJOR ${SimGear_FIND_VERSION_MAJOR} + #define MIN_MINOR ${SimGear_FIND_VERSION_MINOR} + #define MIN_MICRO ${SimGear_FIND_VERSION_PATCH} + + int main() { + int major, minor, micro; - /* printf(%d.%d.%d or greater, , MIN_MAJOR, MIN_MINOR, MIN_MICRO); */ - printf(\"found %s ... \", xstr(SIMGEAR_VERSION)); + /* printf(%d.%d.%d or greater, , MIN_MAJOR, MIN_MINOR, MIN_MICRO); */ + printf(\"found %s ... \", xstr(SIMGEAR_VERSION)); - sscanf( xstr(SIMGEAR_VERSION), \"%d.%d.%d\", &major, &minor, µ ); + sscanf( xstr(SIMGEAR_VERSION), \"%d.%d.%d\", &major, &minor, µ ); - if ( (major < MIN_MAJOR) || - (major == MIN_MAJOR && minor < MIN_MINOR) || - (major == MIN_MAJOR && minor == MIN_MINOR && micro < MIN_MICRO) ) { - return -1; - } + if ( (major < MIN_MAJOR) || + (major == MIN_MAJOR && minor < MIN_MINOR) || + (major == MIN_MAJOR && minor == MIN_MINOR && micro < MIN_MICRO) ) { + return -1; + } - return 0; - } + return 0; + } " SIMGEAR_VERSION_OK) include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(SimGear DEFAULT_MSG - SIMGEAR_LIBRARIES SIMGEAR_INCLUDE_DIR SIMGEAR_VERSION_OK) + SIMGEAR_LIBRARIES SIMGEAR_INCLUDE_DIR SIMGEAR_VERSION_OK) diff --git a/src/Input/CMakeLists.txt b/src/Input/CMakeLists.txt index fcf154871..e0d6abd30 100644 --- a/src/Input/CMakeLists.txt +++ b/src/Input/CMakeLists.txt @@ -28,7 +28,12 @@ set(FGJS_SOURCES add_executable(fgjs ${FGJS_SOURCES}) +if(WIN32) + set(SOCKETS_LIBRARY wsock32.lib) +endif(WIN32) + target_link_libraries(fgjs + ${SOCKETS_LIBRARY} ${SIMGEAR_LIBRARIES} ${PLIB_LIBRARIES} ${ZLIB_LIBRARY}) diff --git a/src/Main/CMakeLists.txt b/src/Main/CMakeLists.txt index ffc87c857..6eb4513c0 100644 --- a/src/Main/CMakeLists.txt +++ b/src/Main/CMakeLists.txt @@ -39,6 +39,7 @@ target_link_libraries(fgfs ${ALUT_LIBRARY} ${ZLIB_LIBRARIES} ${PLIB_LIBRARIES} - ${RT_LIBRARY}) + ${RT_LIBRARY} + ${Boost_SERIALIZATION_LIBRARY}) install(TARGETS fgfs RUNTIME DESTINATION bin)