1
0
Fork 0

Initial work on CMake build files, with considerable help from Olaf Flebbe.

This commit is contained in:
James Turner 2010-11-30 10:08:30 +00:00
parent c396fae4a7
commit a91ec5f9f9
35 changed files with 1294 additions and 0 deletions

114
CMakeLists.txt Normal file
View file

@ -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)

View file

@ -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)

144
CMakeModules/FindPLIB.cmake Normal file
View file

@ -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)

View file

@ -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 <cstdio>
#include <simgear/version.h>
#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, &micro );
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)

View file

@ -0,0 +1,3 @@
# Find Subversion client libraries, and dependencies
# including APR (Apache Portable Runtime)

View file

@ -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()

View file

@ -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}")

9
src/ATC/CMakeLists.txt Normal file
View file

@ -0,0 +1,9 @@
include(FlightGearComponent)
set(SOURCES
atcutils.cxx
atis.cxx
trafficcontrol.cxx
)
flightgear_component(ATC "${SOURCES}")

View file

@ -0,0 +1,8 @@
include(FlightGearComponent)
set(SOURCES
controls.cxx
replay.cxx
)
flightgear_component(Aircraft "${SOURCES}")

View file

@ -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}")

View file

@ -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}")

33
src/CMakeLists.txt Normal file
View file

@ -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 )

View file

@ -0,0 +1,9 @@
include(FlightGearComponent)
set(SOURCES
panel.cxx
panel_io.cxx
built_in/FGMagRibbon.cxx
)
flightgear_component(Cockpit "${SOURCES}")

View file

@ -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}")

163
src/FDM/CMakeLists.txt Normal file
View file

@ -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()

View file

@ -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}")

View file

@ -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)

19
src/GUI/CMakeLists.txt Normal file
View file

@ -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}")

View file

@ -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"

45
src/Input/CMakeLists.txt Normal file
View file

@ -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)

View file

@ -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}")

45
src/Main/CMakeLists.txt Normal file
View file

@ -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)

10
src/Model/CMakeLists.txt Normal file
View file

@ -0,0 +1,10 @@
include(FlightGearComponent)
set(SOURCES
acmodel.cxx
model_panel.cxx
modelmgr.cxx
panelnode.cxx
)
flightgear_component(Model "${SOURCES}")

View file

@ -0,0 +1,8 @@
include(FlightGearComponent)
set(SOURCES
multiplaymgr.cxx
tiny_xdr.cxx
)
flightgear_component(MultiPlayer "${SOURCES}")

View file

@ -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}")

View file

@ -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}")

View file

@ -0,0 +1,11 @@
include(FlightGearComponent)
set(SOURCES
SceneryPager.cxx
redout.cxx
scenery.cxx
tilemgr.cxx
)
flightgear_component(Scenery "${SOURCES}")

View file

@ -0,0 +1,9 @@
include(FlightGearComponent)
set(SOURCES
NasalSys.cxx
nasal-props.cxx
)
flightgear_component(Scripting "${SOURCES}")

11
src/Sound/CMakeLists.txt Normal file
View file

@ -0,0 +1,11 @@
include(FlightGearComponent)
set(SOURCES
beacon.cxx
fg_fx.cxx
morse.cxx
sample_queue.cxx
voice.cxx
)
flightgear_component(Sound "${SOURCES}")

View file

@ -0,0 +1,11 @@
include(FlightGearComponent)
set(SOURCES
electrical.cxx
pitot.cxx
static.cxx
system_mgr.cxx
vacuum.cxx
)
flightgear_component(Systems "${SOURCES}")

9
src/Time/CMakeLists.txt Normal file
View file

@ -0,0 +1,9 @@
include(FlightGearComponent)
set(SOURCES
TimeManager.cxx
light.cxx
sunsolver.cxx
)
flightgear_component(Time "${SOURCES}")

View file

@ -0,0 +1,9 @@
include(FlightGearComponent)
set(SOURCES
SchedFlight.cxx
Schedule.cxx
TrafficMgr.cxx
)
flightgear_component(Traffic "${SOURCES}")

3
utils/CMakeLists.txt Normal file
View file

@ -0,0 +1,3 @@
add_subdirectory(TerraSync)
add_subdirectory(fgviewer)

View file

@ -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)

View file

@ -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)