diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..1d924e399 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,114 @@ +cmake_minimum_required (VERSION 2.6) + +include (CheckFunctionExists) +include (CheckCSourceCompiles) +include (CPack) + +project(FlightGear) + +file(READ version FLIGHTGEAR_VERSION) + +#packaging +SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/COPYING") +SET(CPACK_RESOURCE_FILE_README "${PROJECT_SOURCE_DIR}/README") + +# We have some custom .cmake scripts not in the official distribution. +set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/CMakeModules;${CMAKE_MODULE_PATH}") + +# autoconf compatibility +set(PKGLIBDIR "foo") + +option(LOGGING "Set to OFF to build FlightGear without logging" ON) + +option(SP_FDMS "Set to ON to build FlightGear with special-purpose FDMs" OFF) +option(ENABLE_UIUC_MODEL "Set to ON to build FlightGear with UIUCModel FDM" ON) +option(ENABLE_LARCSIM "Set to ON to build FlightGear with LaRCsim FDM" ON) +option(ENABLE_YASIM "Set to ON to build FlightGear with YASIM FDM" ON) +option(ENABLE_JSBSIM "Set to ON to build FlightGear with JSBSim FDM" ON) + +option(ATCDCL "Set to ON to build FlightGear with Dave Luff's ATC code" OFF) +option(EVENT_INPUT "Set to ON to build FlightGear with event-based Input support" OFF) + +if(LOGGING) + # nothing +else() + set(FG_NDEBUG 1) +endif() + +if(${SP_FDMS}) + set(ENABLE_SP_FDM 1) +endif() + +if(ATCDCL) + set(ENABLE_ATCDCL 1) +endif() + +if(EVENT_INPUT) + message(STATUS "checking event-based Input") + IF(APPLE) + + elseif(CMAKE_SYSTEM_NAME MATCHES "Linux") + + else() + message(WARNING "event input is not supported on this platform yet") + endif() +else(EVENT_INPUT) + set(ENABLE_PLIB_JOYSTICK 1) +endif(EVENT_INPUT) + +# check required dependencies +find_package(Boost REQUIRED) +find_package(ZLIB REQUIRED) +find_package(Threads REQUIRED) +find_package(OpenGL REQUIRED) +find_package(OpenAL REQUIRED) +find_package(ALUT REQUIRED) +find_package(OpenSceneGraph 2.8.2 REQUIRED osgText osgSim osgDB osgParticle osgFX osgUtil osgViewer osgGA) +find_package(PLIB REQUIRED pu puaux js fnt) +find_package(SimGear 2.0.0 REQUIRED) + +find_path (HAVE_SYS_TIME_H sys/time.h ) + +if(CMAKE_COMPILER_IS_GNUCXX) + set(WARNING_FLAGS -Wall) +endif(CMAKE_COMPILER_IS_GNUCXX) + +if(WIN32) + + if(MSVC) + # turn off various warnings + # foreach(warning 4244 4251 4267 4275 4290 4786 4305 4996) + # SET(WARNING_FLAGS "${WARNING_FLAGS} /wd${warning}") + # endforeach(warning) + + set(MSVC_FLAGS "-DNOMINMAX -D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -D__CRT_NONSTDC_NO_WARNINGS") + endif(MSVC) + + 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}") + +include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS} + ${Boost_INCLUDE_DIRS} + ${ZLIB_INCLUDE_DIR} + ${ALUT_INCLUDE_DIR} + ${OPENAL_INCLUDE_DIR} + ${SIMGEAR_INCLUDE_DIR} + ${PLIB_INCLUDE_DIR} ) + +include_directories(${PROJECT_SOURCE_DIR}/src) +include_directories(${PROJECT_BINARY_DIR}/src/Include) + +add_definitions(-DHAVE_CONFIG_H) + +# configure a header file to pass some of the CMake settings +# to the source code +configure_file ( + "${PROJECT_SOURCE_DIR}/src/Include/config_cmake.h.in" + "${PROJECT_BINARY_DIR}/src/Include/config.h" + ) + +add_subdirectory(src) +add_subdirectory(utils) diff --git a/CMakeModules/FindALUT.cmake b/CMakeModules/FindALUT.cmake new file mode 100644 index 000000000..08d920b5a --- /dev/null +++ b/CMakeModules/FindALUT.cmake @@ -0,0 +1,67 @@ +# Locate ALUT +# This module defines +# ALUT_LIBRARY +# ALUT_FOUND, if false, do not try to link to ALUT +# ALUT_INCLUDE_DIR, where to find the headers +# +# $ALUTDIR is an environment variable that would +# correspond to the ./configure --prefix=$ALUTDIR +# used in building ALUT. +# +# Created by James Turner. This was influenced by the FindOpenAL.cmake module. + +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# Per my request, CMake should search for frameworks first in +# the following order: +# ~/Library/Frameworks/OpenAL.framework/Headers +# /Library/Frameworks/OpenAL.framework/Headers +# /System/Library/Frameworks/OpenAL.framework/Headers +# +# On OS X, this will prefer the Framework version (if found) over others. +# People will have to manually change the cache values of +# OPENAL_LIBRARY to override this selection or set the CMake environment +# CMAKE_INCLUDE_PATH to modify the search paths. + +FIND_PATH(ALUT_INCLUDE_DIR alut.h + HINTS + $ENV{ALUTDIR} + PATH_SUFFIXES include/AL include/ALUT include + PATHS + ~/Library/Frameworks + /Library/Frameworks + /usr/local + /usr + /opt +) + +FIND_LIBRARY(ALUT_LIBRARY + NAMES ALUT alut + HINTS + $ENV{ALUTDIR} + PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64 + PATHS + ~/Library/Frameworks + /Library/Frameworks + /usr/local + /usr + /opt +) + + +SET(ALUT_FOUND "NO") +IF(ALUT_LIBRARY AND ALUT_INCLUDE_DIR) + SET(ALUT_FOUND "YES") +ENDIF(ALUT_LIBRARY AND ALUT_INCLUDE_DIR) + diff --git a/CMakeModules/FindPLIB.cmake b/CMakeModules/FindPLIB.cmake new file mode 100644 index 000000000..5fadcaf79 --- /dev/null +++ b/CMakeModules/FindPLIB.cmake @@ -0,0 +1,144 @@ +# Locate PLIB +# This module defines +# PLIB_LIBRARIES +# PLIB_FOUND, if false, do not try to link to PLIB +# PLIB_INCLUDE_DIR, where to find the headers +# +# $PLIBDIR is an environment variable that would +# correspond to the ./configure --prefix=$PLIBDIR +# used in building PLIB. +# +# Created by James Turner. This was influenced by the FindOpenAL.cmake module. + +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# Per my request, CMake should search for frameworks first in +# the following order: +# ~/Library/Frameworks/OpenAL.framework/Headers +# /Library/Frameworks/OpenAL.framework/Headers +# /System/Library/Frameworks/OpenAL.framework/Headers +# +# On OS X, this will prefer the Framework version (if found) over others. +# People will have to manually change the cache values of +# OPENAL_LIBRARY to override this selection or set the CMake environment +# CMAKE_INCLUDE_PATH to modify the search paths. + +set(save_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK}) +set(CMAKE_FIND_FRAMEWORK ONLY) +FIND_PATH(PLIB_INCLUDE_DIR ul.h + PATH_SUFFIXES include/plib include + PATHS + ~/Library/Frameworks + /Library/Frameworks +) +set(CMAKE_FIND_FRAMEWORK ${save_FIND_FRAMEWORK}) + +if(NOT PLIB_INCLUDE_DIR) + FIND_PATH(PLIB_INCLUDE_DIR plib/ul.h + PATH_SUFFIXES include + HINTS $ENV{PLIBDIR} + PATHS + /usr/local + /opt/local + /usr + ) +endif() + +message(STATUS ${PLIB_INCLUDE_DIR}) + +# check for dynamic framework on Mac () +FIND_LIBRARY(PLIB_LIBRARIES + NAMES plib PLIB + HINTS + $ENV{PLIBDIR} + PATHS + ~/Library/Frameworks + /Library/Frameworks +) + +macro(find_static_component comp libs) + set(compLib "plib${comp}") + string(TOUPPER "PLIB_${comp}_LIBRARY" compLibName) + + FIND_LIBRARY(${compLibName} + NAMES ${compLib} + HINTS $ENV{PLIBDIR} + 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}) + #set(PLIB_LIBRARIES "${PLIB_LIBRARIES} ${componentLib}" PARENT_SCOPE) + endif() +endmacro() + +if(${PLIB_LIBRARIES} STREQUAL "PLIB_LIBRARIES-NOTFOUND") + set(PLIB_LIBRARIES "") # clear value + +# based on the contents of deps, add other required PLIB +# static library dependencies. Eg PUI requires SSG and FNT + set(outDeps ${PLIB_FIND_COMPONENTS}) + + foreach(c ${PLIB_FIND_COMPONENTS}) + if (${c} STREQUAL "pu") + list(APPEND outDeps "fnt" "ssg" "sg") + elseif (${c} STREQUAL "puaux") + list(APPEND outDeps "pu" "fnt" "ssg" "sg") + elseif (${c} STREQUAL "ssg") + list(APPEND outDeps "sg") + endif() + endforeach() + + list(APPEND outDeps "ul") # everything needs ul + list(REMOVE_DUPLICATES outDeps) # clean up + + # look for traditional static libraries + foreach(component ${outDeps}) + find_static_component(${component} PLIB_LIBRARIES) + endforeach() +endif() + +list(FIND outDeps "js" haveJs) +if(${haveJs} GREATER -1) + message(STATUS "adding runtime JS dependencies") + if(APPLE) + # resolve frameworks to full paths + find_library(IOKIT_LIBRARY IOKit) + find_library(CF_LIBRARY CoreFoundation) + set(JS_LIBS ${IOKIT_LIBRARY} ${CF_LIBRARY}) + elseif(WIN32) + find_library(WINMM_LIBRARY winmm) + set(JS_LIBS ${WINMM_LIBRARY}) + elseif(CMAKE_SYSTEM_NAME MATCHES "Linux") + # anything needed here? + elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") + find_library(USBHID_LIBRARY usbhid) + # check_function_exists(hidinit) + set(JS_LIBS ${USBHID_LIBRARY}) + else() + message(WARNING "Unsupported platform for PLIB JS libs") + endif() + + list(APPEND PLIB_LIBRARIES ${JS_LIBS}) +endif() + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(PLIB DEFAULT_MSG PLIB_LIBRARIES PLIB_INCLUDE_DIR) + diff --git a/CMakeModules/FindSimGear.cmake b/CMakeModules/FindSimGear.cmake new file mode 100644 index 000000000..3d833b424 --- /dev/null +++ b/CMakeModules/FindSimGear.cmake @@ -0,0 +1,161 @@ +# Locate SimGear +# This module defines +# SIMGEAR_LIBRARIES +# SIMGEAR_FOUND, if false, do not try to link to SimGear +# SIMGEAR_INCLUDE_DIR, where to find the headers +# +# $SIMGEAR_DIR is an environment variable that would +# correspond to the ./configure --prefix=$SIMGEAR_DIR +# used in building SimGear. +# +# Created by James Turner. This was influenced by the FindOpenAL.cmake module. + +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# Per my request, CMake should search for frameworks first in +# the following order: +# ~/Library/Frameworks/SimGear.framework/Headers +# /Library/Frameworks/SimGear.framework/Headers +# /System/Library/Frameworks/SimGear.framework/Headers +# +# On OS X, this will prefer the Framework version (if found) over others. +# People will have to manually change the cache values of +# SimGear_LIBRARIES to override this selection or set the CMake environment +# CMAKE_INCLUDE_PATH to modify the search paths. + +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 +) + +message(STATUS ${SIMGEAR_INCLUDE_DIR}) + +# check for dynamic framework/library +FIND_LIBRARY(SIMGEAR_LIBRARIES + NAMES simgear SimGear + HINTS + $ENV{SIMGEAR_DIR} + PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64 + PATHS + ~/Library/Frameworks + /Library/Frameworks + /usr/local + /usr + /opt +) + +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() +endmacro() + +if(${SIMGEAR_LIBRARIES} STREQUAL "SIMGEAR_LIBRARIES-NOTFOUND") + set(SIMGEAR_LIBRARIES "") # clear value + + # 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 + bucket + environment + nasal + props + xml + debug + sky + material tgdb + model + screen + bvh + structure + util route + timing + threads + io + serial + sound + misc + magvar + math) + + foreach(component ${comps}) + find_sg_component(${component} SIMGEAR_LIBRARIES) + endforeach() +endif() + +# now we've found SimGear, check its version + +include(CheckCXXSourceRuns) + +message(STATUS "looking for version: ${SimGear_FIND_VERSION}") + +SET(CMAKE_REQUIRED_INCLUDES ${SIMGEAR_INCLUDE_DIR}) + +check_cxx_source_runs( + "#include + #include + + #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; + + /* 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, µ ); + + if ( (major < MIN_MAJOR) || + (major == MIN_MAJOR && minor < MIN_MINOR) || + (major == MIN_MAJOR && minor == MIN_MINOR && micro < MIN_MICRO) ) { + return -1; + } + + return 0; + } + " + SIMGEAR_VERSION_OK) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(SimGear DEFAULT_MSG + SIMGEAR_LIBRARIES SIMGEAR_INCLUDE_DIR SIMGEAR_VERSION_OK) + diff --git a/CMakeModules/FindSvnClient.cmake b/CMakeModules/FindSvnClient.cmake new file mode 100644 index 000000000..383ef6f6d --- /dev/null +++ b/CMakeModules/FindSvnClient.cmake @@ -0,0 +1,3 @@ +# Find Subversion client libraries, and dependencies +# including APR (Apache Portable Runtime) + diff --git a/CMakeModules/FlightGearComponent.cmake b/CMakeModules/FlightGearComponent.cmake new file mode 100644 index 000000000..7de5743b6 --- /dev/null +++ b/CMakeModules/FlightGearComponent.cmake @@ -0,0 +1,9 @@ + +macro(flightgear_component name sources) + + set(libName "fg${name}") + add_library(${libName} STATIC ${sources} ) + + set_property(GLOBAL APPEND PROPERTY FG_LIBS ${libName}) + +endmacro() diff --git a/src/AIModel/CMakeLists.txt b/src/AIModel/CMakeLists.txt new file mode 100644 index 000000000..8cc8f74d2 --- /dev/null +++ b/src/AIModel/CMakeLists.txt @@ -0,0 +1,28 @@ +include(FlightGearComponent) + +set(SOURCES + AIAircraft.cxx + AIBallistic.cxx + AIBase.cxx + AICarrier.cxx + AIEscort.cxx + AIFlightPlan.cxx + AIFlightPlanCreate.cxx + AIFlightPlanCreateCruise.cxx + AIFlightPlanCreatePushBack.cxx + AIGroundVehicle.cxx + AIManager.cxx + AIMultiplayer.cxx + AIShip.cxx + AIStatic.cxx + AIStorm.cxx + AITanker.cxx + AIThermal.cxx + AIWingman.cxx + performancedata.cxx + performancedb.cxx + submodel.cxx + ) + +flightgear_component(AIModel "${SOURCES}") + \ No newline at end of file diff --git a/src/ATC/CMakeLists.txt b/src/ATC/CMakeLists.txt new file mode 100644 index 000000000..43cb8d3b1 --- /dev/null +++ b/src/ATC/CMakeLists.txt @@ -0,0 +1,9 @@ +include(FlightGearComponent) + +set(SOURCES + atcutils.cxx + atis.cxx + trafficcontrol.cxx + ) + +flightgear_component(ATC "${SOURCES}") \ No newline at end of file diff --git a/src/Aircraft/CMakeLists.txt b/src/Aircraft/CMakeLists.txt new file mode 100644 index 000000000..da519fb27 --- /dev/null +++ b/src/Aircraft/CMakeLists.txt @@ -0,0 +1,8 @@ +include(FlightGearComponent) + +set(SOURCES + controls.cxx + replay.cxx + ) + +flightgear_component(Aircraft "${SOURCES}") \ No newline at end of file diff --git a/src/Airports/CMakeLists.txt b/src/Airports/CMakeLists.txt new file mode 100644 index 000000000..5be24c7df --- /dev/null +++ b/src/Airports/CMakeLists.txt @@ -0,0 +1,21 @@ +include(FlightGearComponent) + +set(SOURCES + apt_loader.cxx + calc_loc.cxx + dynamicloader.cxx + dynamics.cxx + gnnode.cxx + groundnetwork.cxx + parking.cxx + pavement.cxx + runwaybase.cxx + runwayprefloader.cxx + runwayprefs.cxx + runways.cxx + sidstar.cxx + simple.cxx + xmlloader.cxx + ) + +flightgear_component(Airports "${SOURCES}") \ No newline at end of file diff --git a/src/Autopilot/CMakeLists.txt b/src/Autopilot/CMakeLists.txt new file mode 100644 index 000000000..23f297d2a --- /dev/null +++ b/src/Autopilot/CMakeLists.txt @@ -0,0 +1,19 @@ +include(FlightGearComponent) + +set(SOURCES + analogcomponent.cxx + autopilot.cxx + autopilotgroup.cxx + component.cxx + digitalcomponent.cxx + digitalfilter.cxx + flipflop.cxx + inputvalue.cxx + logic.cxx + pidcontroller.cxx + pisimplecontroller.cxx + predictor.cxx + route_mgr.cxx + ) + +flightgear_component(Autopilot "${SOURCES}") \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 000000000..f7613b6cf --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,33 @@ + +include_directories(${PROJECT_SOURCE_DIR}) + +# note order here affects link order, and hence linking correctness +# on systems with a traditional ld (eg, GNU ld on Linux) +foreach( mylibfolder + Airports + Aircraft + ATC + Autopilot + Cockpit + Environment + GUI + Input + Instrumentation + Model + MultiPlayer + AIModel + Navaids + Network + Scenery + Scripting + Sound + Systems + Time + Traffic + FDM + Main + ) + + add_subdirectory(${mylibfolder}) +endforeach( mylibfolder ) + diff --git a/src/Cockpit/CMakeLists.txt b/src/Cockpit/CMakeLists.txt new file mode 100644 index 000000000..a9a070d74 --- /dev/null +++ b/src/Cockpit/CMakeLists.txt @@ -0,0 +1,9 @@ +include(FlightGearComponent) + +set(SOURCES + panel.cxx + panel_io.cxx + built_in/FGMagRibbon.cxx + ) + +flightgear_component(Cockpit "${SOURCES}") \ No newline at end of file diff --git a/src/Environment/CMakeLists.txt b/src/Environment/CMakeLists.txt new file mode 100644 index 000000000..8d9c64d44 --- /dev/null +++ b/src/Environment/CMakeLists.txt @@ -0,0 +1,20 @@ +include(FlightGearComponent) + +set(SOURCES + atmosphere.cxx + environment.cxx + environment_ctrl.cxx + environment_mgr.cxx + ephemeris.cxx + fgclouds.cxx + fgmetar.cxx + fgwind.cxx + metarairportfilter.cxx + metarproperties.cxx + precipitation_mgr.cxx + realwx_ctrl.cxx + ridge_lift.cxx + terrainsampler.cxx + ) + +flightgear_component(Environment "${SOURCES}") \ No newline at end of file diff --git a/src/FDM/CMakeLists.txt b/src/FDM/CMakeLists.txt new file mode 100644 index 000000000..3dd1225c9 --- /dev/null +++ b/src/FDM/CMakeLists.txt @@ -0,0 +1,163 @@ +include(FlightGearComponent) + +if(SP_FDMS) +set(SP_FDM_SOURCES + SP/ACMS.cxx + SP/ADA.cxx + SP/Balloon.cxx + SP/MagicCarpet.cxx + ) +endif() + +set(UIUC_SOURCES + uiuc_1DdataFileReader.cpp + uiuc_1Dinterpolation.cpp + uiuc_2DdataFileReader.cpp + uiuc_2Dinterpolation.cpp + uiuc_3Dinterpolation.cpp + uiuc_aerodeflections.cpp + uiuc_alh_ap.cpp + uiuc_auto_pilot.cpp + uiuc_betaprobe.cpp + uiuc_coef_drag.cpp + uiuc_coef_lift.cpp + uiuc_coef_pitch.cpp + uiuc_coef_roll.cpp + uiuc_coef_sideforce.cpp + uiuc_coef_yaw.cpp + uiuc_coefficients.cpp + uiuc_controlInput.cpp + uiuc_convert.cpp + uiuc_engine.cpp + uiuc_find_position.cpp + uiuc_flapdata.cpp + uiuc_fog.cpp + uiuc_gear.cpp + uiuc_get_flapper.cpp + uiuc_getwind.cpp + uiuc_hh_ap.cpp + uiuc_ice.cpp + uiuc_iceboot.cpp + uiuc_iced_nonlin.cpp + uiuc_icing_demo.cpp + uiuc_initializemaps.cpp + uiuc_map_CD.cpp + uiuc_map_CL.cpp + uiuc_map_CY.cpp + uiuc_map_Cm.cpp + uiuc_map_Cn.cpp + uiuc_map_Croll.cpp + uiuc_map_controlSurface.cpp + uiuc_map_engine.cpp + uiuc_map_fog.cpp + uiuc_map_gear.cpp + uiuc_map_geometry.cpp + uiuc_map_ice.cpp + uiuc_map_init.cpp + uiuc_map_keyword.cpp + uiuc_map_mass.cpp + uiuc_map_misc.cpp + uiuc_map_record1.cpp + uiuc_map_record2.cpp + uiuc_map_record3.cpp + uiuc_map_record4.cpp + uiuc_map_record5.cpp + uiuc_map_record6.cpp + uiuc_menu.cpp + uiuc_menu_CD.cpp + uiuc_menu_CL.cpp + uiuc_menu_CY.cpp + uiuc_menu_Cm.cpp + uiuc_menu_Cn.cpp + uiuc_menu_Croll.cpp + uiuc_menu_controlSurface.cpp + uiuc_menu_engine.cpp + uiuc_menu_fog.cpp + uiuc_menu_functions.cpp + uiuc_menu_gear.cpp + uiuc_menu_geometry.cpp + uiuc_menu_ice.cpp + uiuc_menu_init.cpp + uiuc_menu_mass.cpp + uiuc_menu_misc.cpp + uiuc_menu_record.cpp + uiuc_pah_ap.cpp + uiuc_parsefile.cpp + uiuc_rah_ap.cpp + uiuc_recorder.cpp + uiuc_warnings_errors.cpp + uiuc_wrapper.cpp + ) + +set(LARCSIM_SOURCES + atmos_62.c + basic_aero.c + basic_engine.c + basic_gear.c + basic_init.c + c172_aero.c + c172_engine.c + c172_gear.c + c172_init.c + cherokee_aero.c + cherokee_engine.c + cherokee_gear.c + cherokee_init.c + default_model_routines.c + ls_accel.c + ls_aux.c + ls_geodesy.c + ls_gravity.c + ls_init.c + ls_interface.c + ls_matrix.c + ls_model.c + ls_step.c + ls_trim.c + navion_aero.c + navion_engine.c + navion_gear.c + navion_init.c + uiuc_aero.c + IO360.cxx + LaRCsim.cxx + LaRCsimIC.cxx + ) + +set(SOURCES + NullFDM.cxx + UFO.cxx + fdm_shell.cxx + flight.cxx + flightProperties.cxx + groundcache.cxx + ${SP_FDM_SOURCES} + ExternalNet/ExternalNet.cxx + ExternalPipe/ExternalPipe.cxx + ) + +if(ENABLE_YASIM) + add_subdirectory(YASim) +endif() + +if(ENABLE_UIUC_MODEL) + foreach(component ${UIUC_SOURCES}) + list(APPEND SOURCES "UIUCModel/${component}") + endforeach() +endif() + +if(ENABLE_LARCSIM) + foreach(component ${LARCSIM_SOURCES}) + list(APPEND SOURCES "LaRCsim/${component}") + endforeach() +endif() + +flightgear_component(FDM "${SOURCES}") + +if(ENABLE_JSBSIM) + add_subdirectory(JSBSim) + + # FIXME - push this down once JSBSim doesn't expose private headers + include_directories(${PROJECT_SOURCE_DIR}/src/FDM/JSBSim) +endif() + diff --git a/src/FDM/JSBSim/CMakeLists.txt b/src/FDM/JSBSim/CMakeLists.txt new file mode 100644 index 000000000..afc377ddd --- /dev/null +++ b/src/FDM/JSBSim/CMakeLists.txt @@ -0,0 +1,79 @@ +include(FlightGearComponent) + +set(SOURCES + FGFDMExec.cpp + FGJSBBase.cpp + JSBSim.cxx + initialization/FGInitialCondition.cpp + initialization/FGTrim.cpp + initialization/FGTrimAxis.cpp + input_output/FGGroundCallback.cpp + input_output/FGPropertyManager.cpp + input_output/FGScript.cpp + input_output/FGXMLElement.cpp + input_output/FGXMLParse.cpp + input_output/FGfdmSocket.cpp + math/FGColumnVector3.cpp + math/FGCondition.cpp + math/FGFunction.cpp + math/FGLocation.cpp + math/FGMatrix33.cpp + math/FGModelFunctions.cpp + math/FGPropertyValue.cpp + math/FGQuaternion.cpp + math/FGRealValue.cpp + math/FGRungeKutta.cpp + math/FGTable.cpp + models/FGAerodynamics.cpp + models/FGAircraft.cpp + models/FGAtmosphere.cpp + models/FGAuxiliary.cpp + models/FGBuoyantForces.cpp + models/FGExternalForce.cpp + models/FGExternalReactions.cpp + models/FGFCS.cpp + models/FGGasCell.cpp + models/FGGroundReactions.cpp + models/FGInertial.cpp + models/FGInput.cpp + models/FGLGear.cpp + models/FGMassBalance.cpp + models/FGModel.cpp + models/FGOutput.cpp + models/FGPropagate.cpp + models/FGPropulsion.cpp + models/atmosphere/FGMSIS.cpp + models/atmosphere/FGMSISData.cpp + models/atmosphere/FGMars.cpp + models/flight_control/FGAccelerometer.cpp + models/flight_control/FGActuator.cpp + models/flight_control/FGDeadBand.cpp + models/flight_control/FGFCSComponent.cpp + models/flight_control/FGFCSFunction.cpp + models/flight_control/FGFilter.cpp + models/flight_control/FGGain.cpp + models/flight_control/FGGradient.cpp + models/flight_control/FGGyro.cpp + models/flight_control/FGKinemat.cpp + models/flight_control/FGMagnetometer.cpp + models/flight_control/FGPID.cpp + models/flight_control/FGSensor.cpp + models/flight_control/FGSummer.cpp + models/flight_control/FGSwitch.cpp + models/propulsion/FGElectric.cpp + models/propulsion/FGEngine.cpp + models/propulsion/FGForce.cpp + models/propulsion/FGNozzle.cpp + models/propulsion/FGPiston.cpp + models/propulsion/FGPropeller.cpp + models/propulsion/FGRocket.cpp + models/propulsion/FGRotor.cpp + models/propulsion/FGTank.cpp + models/propulsion/FGThruster.cpp + models/propulsion/FGTurbine.cpp + models/propulsion/FGTurboProp.cpp + ) + +include_directories(${PROJECT_SOURCE_DIR}/src/FDM/JSBSim) + +flightgear_component(JSBSim "${SOURCES}") diff --git a/src/FDM/YASim/CMakeLists.txt b/src/FDM/YASim/CMakeLists.txt new file mode 100644 index 000000000..2118993a5 --- /dev/null +++ b/src/FDM/YASim/CMakeLists.txt @@ -0,0 +1,45 @@ +include(FlightGearComponent) + +set(SOURCES + Airplane.cpp + Atmosphere.cpp + ControlMap.cpp + FGFDM.cpp + FGGround.cpp + Gear.cpp + Glue.cpp + Ground.cpp + Hitch.cpp + Hook.cpp + Integrator.cpp + Jet.cpp + Launchbar.cpp + Math.cpp + Model.cpp + PistonEngine.cpp + PropEngine.cpp + Propeller.cpp + RigidBody.cpp + Rotor.cpp + Rotorpart.cpp + SimpleJet.cpp + Surface.cpp + Thruster.cpp + TurbineEngine.cpp + Turbulence.cpp + Wing.cpp + YASim.cxx + ) + +flightgear_component(YASim "${SOURCES}") + +add_executable(yasim yasim-test.cpp) + +target_link_libraries(yasim + fgYASim + ${SIMGEAR_LIBRARIES} + ${ZLIB_LIBRARIES}) + +install(TARGETS yasim RUNTIME DESTINATION bin) + + diff --git a/src/GUI/CMakeLists.txt b/src/GUI/CMakeLists.txt new file mode 100644 index 000000000..706219c74 --- /dev/null +++ b/src/GUI/CMakeLists.txt @@ -0,0 +1,19 @@ +include(FlightGearComponent) + +set(SOURCES + AirportList.cxx + MapWidget.cxx + SafeTexFont.cxx + WaypointList.cxx + dialog.cxx + fonts.cxx + gui.cxx + gui_funcs.cxx + layout-props.cxx + layout.cxx + menubar.cxx + new_gui.cxx + property_list.cxx + ) + +flightgear_component(GUI "${SOURCES}") diff --git a/src/Include/config_cmake.h.in b/src/Include/config_cmake.h.in new file mode 100644 index 000000000..e9589fbc0 --- /dev/null +++ b/src/Include/config_cmake.h.in @@ -0,0 +1,29 @@ + + +#cmakedefine FG_NDEBUG +#cmakedefine ENABLE_ATCDCL +#cmakedefine ENABLE_SP_FDM + +// JSBSim needs this, to switch from standalone to in-FG mode +#define FGFS + +#define PU_USE_NONE // PLIB needs this to avoid linking to GLUT + +#cmakedefine ENABLE_PLIB_JOYSTICK + +// threads are required (used to be optional) +#define ENABLE_THREADS 1 + +// audio support is assumed +#define ENABLE_AUDIO_SUPPORT 1 + +#cmakedefine HAVE_SYS_TIME_H + +#define VERSION "@FLIGHTGEAR_VERSION" + +#cmakedefine ENABLE_UIUC_MODEL +#cmakedefine ENABLE_LARCSIM +#cmakedefine ENABLE_YASIM +#cmakedefine ENABLE_JSBSIM + +#define PKGLIBDIR "@PKGLIBDIR" diff --git a/src/Input/CMakeLists.txt b/src/Input/CMakeLists.txt new file mode 100644 index 000000000..fcf154871 --- /dev/null +++ b/src/Input/CMakeLists.txt @@ -0,0 +1,45 @@ +include(FlightGearComponent) + +set(EVENT_INPUT_SOURCES + FGLinuxEventInput.cxx + FGMacOSXEventInput.cxx + ) + +set(SOURCES + FGButton.cxx + FGCommonInput.cxx + FGDeviceConfigurationMap.cxx + FGEventInput.cxx + FGJoystickInput.cxx + FGKeyboardInput.cxx + FGMouseInput.cxx + input.cxx + ) + +if(EVENT_INPUT) + list(APPEND SOURCES ${EVENT_INPUT_SOURCES}) +endif() + +set(FGJS_SOURCES + fgjs.cxx + jsinput.cxx + jssuper.cxx + ) + +add_executable(fgjs ${FGJS_SOURCES}) + +target_link_libraries(fgjs + ${SIMGEAR_LIBRARIES} + ${PLIB_LIBRARIES} + ${ZLIB_LIBRARY}) + +add_executable(js_demo js_demo.cxx) + +target_link_libraries(js_demo + ${SIMGEAR_LIBRARIES} + ${PLIB_LIBRARIES} + ${ZLIB_LIBRARY}) + +flightgear_component(Input "${SOURCES}") + +install(TARGETS fgjs js_demo RUNTIME DESTINATION bin) diff --git a/src/Instrumentation/CMakeLists.txt b/src/Instrumentation/CMakeLists.txt new file mode 100644 index 000000000..0481fbe87 --- /dev/null +++ b/src/Instrumentation/CMakeLists.txt @@ -0,0 +1,67 @@ +include(FlightGearComponent) + +set(SOURCES + adf.cxx + agradar.cxx + airspeed_indicator.cxx + altimeter.cxx + attitude_indicator.cxx + clock.cxx + dclgps.cxx + dme.cxx + gps.cxx + groundradar.cxx + gsdi.cxx + gyro.cxx + heading_indicator.cxx + heading_indicator_dg.cxx + heading_indicator_fg.cxx + inst_vertical_speed_indicator.cxx + instrument_mgr.cxx + kr_87.cxx + kt_70.cxx + mag_compass.cxx + marker_beacon.cxx + mk_viii.cxx + mrg.cxx + navradio.cxx + od_gauge.cxx + rad_alt.cxx + render_area_2d.cxx + rnav_waypt_controller.cxx + slip_skid_ball.cxx + tacan.cxx + transponder.cxx + turn_indicator.cxx + vertical_speed_indicator.cxx + wxradar.cxx + HUD/HUD.cxx + HUD/HUD_dial.cxx + HUD/HUD_gauge.cxx + HUD/HUD_instrument.cxx + HUD/HUD_label.cxx + HUD/HUD_ladder.cxx + HUD/HUD_misc.cxx + HUD/HUD_runway.cxx + HUD/HUD_scale.cxx + HUD/HUD_tape.cxx + HUD/HUD_tbi.cxx + KLN89/kln89.cxx + KLN89/kln89_page.cxx + KLN89/kln89_page_act.cxx + KLN89/kln89_page_apt.cxx + KLN89/kln89_page_cal.cxx + KLN89/kln89_page_dir.cxx + KLN89/kln89_page_fpl.cxx + KLN89/kln89_page_int.cxx + KLN89/kln89_page_nav.cxx + KLN89/kln89_page_ndb.cxx + KLN89/kln89_page_nrst.cxx + KLN89/kln89_page_oth.cxx + KLN89/kln89_page_set.cxx + KLN89/kln89_page_usr.cxx + KLN89/kln89_page_vor.cxx + ) + + +flightgear_component(Instruments "${SOURCES}") \ No newline at end of file diff --git a/src/Main/CMakeLists.txt b/src/Main/CMakeLists.txt new file mode 100644 index 000000000..0f791dc0e --- /dev/null +++ b/src/Main/CMakeLists.txt @@ -0,0 +1,45 @@ + +set(SOURCES + CameraGroup.cxx + FGEventHandler.cxx + WindowBuilder.cxx + WindowSystemAdapter.cxx + bootstrap.cxx + fg_commands.cxx + fg_init.cxx + fg_io.cxx + fg_os_common.cxx + fg_os_osgviewer.cxx + fg_props.cxx + fgviewer.cxx + globals.cxx + logger.cxx + main.cxx + options.cxx + renderer.cxx + splash.cxx + util.cxx + viewer.cxx + viewmgr.cxx + ) + +add_executable(fgfs ${SOURCES}) + +get_property(FG_LIBS GLOBAL PROPERTY FG_LIBS) +#message(STATUS "fg libs ${FG_LIBS}") +#message(STATUS "OSG libs ${OPENSCENEGRAPH_LIBRARIES}") +#message(STATUS "SG libs ${SIMGEAR_LIBRARIES}") + +target_link_libraries(fgfs + ${FG_LIBS} + ${SIMGEAR_LIBRARIES} + ${OPENSCENEGRAPH_LIBRARIES} + ${OPENAL_LIBRARY} + ${OPENGL_LIBRARIES} + ${ALUT_LIBRARY} + ${ZLIB_LIBRARIES} + ${PLIB_LIBRARIES}) + +install(TARGETS fgfs RUNTIME DESTINATION bin) + + \ No newline at end of file diff --git a/src/Model/CMakeLists.txt b/src/Model/CMakeLists.txt new file mode 100644 index 000000000..abfbee589 --- /dev/null +++ b/src/Model/CMakeLists.txt @@ -0,0 +1,10 @@ +include(FlightGearComponent) + +set(SOURCES + acmodel.cxx + model_panel.cxx + modelmgr.cxx + panelnode.cxx + ) + +flightgear_component(Model "${SOURCES}") \ No newline at end of file diff --git a/src/MultiPlayer/CMakeLists.txt b/src/MultiPlayer/CMakeLists.txt new file mode 100644 index 000000000..3b2f42f53 --- /dev/null +++ b/src/MultiPlayer/CMakeLists.txt @@ -0,0 +1,8 @@ +include(FlightGearComponent) + +set(SOURCES + multiplaymgr.cxx + tiny_xdr.cxx + ) + +flightgear_component(MultiPlayer "${SOURCES}") \ No newline at end of file diff --git a/src/Navaids/CMakeLists.txt b/src/Navaids/CMakeLists.txt new file mode 100644 index 000000000..cf8ce4ad7 --- /dev/null +++ b/src/Navaids/CMakeLists.txt @@ -0,0 +1,18 @@ +include(FlightGearComponent) + +set(SOURCES + airways.cxx + awynet.cxx + fixlist.cxx + markerbeacon.cxx + navdb.cxx + navlist.cxx + navrecord.cxx + positioned.cxx + procedure.cxx + route.cxx + routePath.cxx + waypoint.cxx + ) + +flightgear_component(Navaids "${SOURCES}") \ No newline at end of file diff --git a/src/Network/CMakeLists.txt b/src/Network/CMakeLists.txt new file mode 100644 index 000000000..c74044e14 --- /dev/null +++ b/src/Network/CMakeLists.txt @@ -0,0 +1,32 @@ +include(FlightGearComponent) + +set(SOURCES + ATC-Inputs.cxx + ATC-Main.cxx + ATC-Outputs.cxx + AV400.cxx + AV400Sim.cxx + atlas.cxx + garmin.cxx + generic.cxx + httpd.cxx + joyclient.cxx + jpg-httpd.cxx + jsclient.cxx + lfsglass.cxx + multiplay.cxx + native.cxx + native_ctrls.cxx + native_fdm.cxx + native_gui.cxx + nmea.cxx + opengc.cxx + props.cxx + protocol.cxx + pve.cxx + ray.cxx + rul.cxx + ) + +flightgear_component(Network "${SOURCES}") + diff --git a/src/Scenery/CMakeLists.txt b/src/Scenery/CMakeLists.txt new file mode 100644 index 000000000..162ab197e --- /dev/null +++ b/src/Scenery/CMakeLists.txt @@ -0,0 +1,11 @@ +include(FlightGearComponent) + +set(SOURCES + SceneryPager.cxx + redout.cxx + scenery.cxx + tilemgr.cxx + ) + +flightgear_component(Scenery "${SOURCES}") + diff --git a/src/Scripting/CMakeLists.txt b/src/Scripting/CMakeLists.txt new file mode 100644 index 000000000..42f0dcfe8 --- /dev/null +++ b/src/Scripting/CMakeLists.txt @@ -0,0 +1,9 @@ +include(FlightGearComponent) + +set(SOURCES + NasalSys.cxx + nasal-props.cxx + ) + +flightgear_component(Scripting "${SOURCES}") + diff --git a/src/Sound/CMakeLists.txt b/src/Sound/CMakeLists.txt new file mode 100644 index 000000000..5d498c24d --- /dev/null +++ b/src/Sound/CMakeLists.txt @@ -0,0 +1,11 @@ +include(FlightGearComponent) + +set(SOURCES + beacon.cxx + fg_fx.cxx + morse.cxx + sample_queue.cxx + voice.cxx + ) + +flightgear_component(Sound "${SOURCES}") \ No newline at end of file diff --git a/src/Systems/CMakeLists.txt b/src/Systems/CMakeLists.txt new file mode 100644 index 000000000..dde27f258 --- /dev/null +++ b/src/Systems/CMakeLists.txt @@ -0,0 +1,11 @@ +include(FlightGearComponent) + +set(SOURCES + electrical.cxx + pitot.cxx + static.cxx + system_mgr.cxx + vacuum.cxx + ) + +flightgear_component(Systems "${SOURCES}") \ No newline at end of file diff --git a/src/Time/CMakeLists.txt b/src/Time/CMakeLists.txt new file mode 100644 index 000000000..f50c7a7ef --- /dev/null +++ b/src/Time/CMakeLists.txt @@ -0,0 +1,9 @@ +include(FlightGearComponent) + +set(SOURCES + TimeManager.cxx + light.cxx + sunsolver.cxx + ) + +flightgear_component(Time "${SOURCES}") \ No newline at end of file diff --git a/src/Traffic/CMakeLists.txt b/src/Traffic/CMakeLists.txt new file mode 100644 index 000000000..6b6bfc88a --- /dev/null +++ b/src/Traffic/CMakeLists.txt @@ -0,0 +1,9 @@ +include(FlightGearComponent) + +set(SOURCES + SchedFlight.cxx + Schedule.cxx + TrafficMgr.cxx + ) + +flightgear_component(Traffic "${SOURCES}") \ No newline at end of file diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt new file mode 100644 index 000000000..f7fad8a71 --- /dev/null +++ b/utils/CMakeLists.txt @@ -0,0 +1,3 @@ +add_subdirectory(TerraSync) +add_subdirectory(fgviewer) + diff --git a/utils/TerraSync/CMakeLists.txt b/utils/TerraSync/CMakeLists.txt new file mode 100644 index 000000000..ae3af2f99 --- /dev/null +++ b/utils/TerraSync/CMakeLists.txt @@ -0,0 +1,15 @@ + +find_package(SvnClient) + +add_executable(terrasync terrasync.cxx) + +target_link_libraries(terrasync + ${SIMGEAR_LIBRARIES} + ${ZLIB_LIBRARIES}) + +if(HAVE_SVN_CLIENT) + target_link_libraries(terrasync ${SVN_CLIENT_LIBRARIES}) +endif() + + +install(TARGETS terrasync RUNTIME DESTINATION bin) diff --git a/utils/fgviewer/CMakeLists.txt b/utils/fgviewer/CMakeLists.txt new file mode 100644 index 000000000..f6654788b --- /dev/null +++ b/utils/fgviewer/CMakeLists.txt @@ -0,0 +1,11 @@ + +add_executable(fgviewer fgviewer.cxx) + +target_link_libraries(fgviewer + ${SIMGEAR_LIBRARIES} + ${OPENSCENEGRAPH_LIBRARIES} + ${OPENGL_LIBRARIES} + ${ZLIB_LIBRARIES} + ${PLIB_LIBRARIES}) + +install(TARGETS fgviewer RUNTIME DESTINATION bin)