9fc45e598f
Sink all Qt classes into the specific libraries, so the main objects don’t need the includes available.
138 lines
No EOL
3.5 KiB
CMake
138 lines
No EOL
3.5 KiB
CMake
function(setup_fgfs_libraries target)
|
|
if(RTI_FOUND)
|
|
set(HLA_LIBRARIES ${RTI_LDFLAGS})
|
|
else()
|
|
set(HLA_LIBRARIES "")
|
|
endif()
|
|
|
|
if(ENABLE_JSBSIM)
|
|
target_link_libraries(${target} JSBSim)
|
|
endif()
|
|
|
|
if(ENABLE_IAX)
|
|
target_link_libraries(${target} iaxclient_lib)
|
|
endif()
|
|
|
|
if(HAVE_DBUS)
|
|
# ALIAS doesn't work with CMake 3.10, so we need
|
|
# variable to store the target name
|
|
target_link_libraries(${target} ${dbus_target})
|
|
endif()
|
|
|
|
if(X11_FOUND)
|
|
target_link_libraries(${target} ${X11_LIBRARIES})
|
|
endif()
|
|
|
|
target_link_libraries(${target} fgsqlite3 fgvoicesynth fgembeddedresources)
|
|
|
|
target_link_libraries(${target}
|
|
SimGearCore
|
|
SimGearScene
|
|
Boost::boost
|
|
${EVENT_INPUT_LIBRARIES}
|
|
${HLA_LIBRARIES}
|
|
${OPENGL_LIBRARIES}
|
|
${OPENSCENEGRAPH_LIBRARIES}
|
|
${PLATFORM_LIBS}
|
|
${PLIB_LIBRARIES}
|
|
)
|
|
|
|
if (ENABLE_SWIFT)
|
|
# ALIAS doesn't work with CMake 3.10, so we need
|
|
# variable to store the target name
|
|
target_link_libraries(${target} ${dbus_target} ${libEvent_target})
|
|
endif()
|
|
|
|
if (ENABLE_PLIB_JOYSTICK)
|
|
target_link_libraries(${target} PLIBJoystick)
|
|
endif()
|
|
|
|
target_link_libraries(${target} PLIBFont)
|
|
|
|
if (HAVE_QT)
|
|
target_link_libraries(${target} fglauncher fgqmlui)
|
|
endif()
|
|
|
|
if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
|
target_link_libraries(${target} execinfo)
|
|
endif()
|
|
|
|
if(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
|
|
target_link_libraries(${target} execinfo)
|
|
endif()
|
|
|
|
if (TARGET sentry::sentry)
|
|
target_link_libraries(${target} sentry::sentry)
|
|
endif()
|
|
endfunction()
|
|
|
|
|
|
# CMake < 3.12 can't define a link to an OBJECT library to specify its include
|
|
# paths, so we have to essentially duplicate the above and configure the paths manually.
|
|
# Once we require CMake 3.12, delete all this and use the function above.
|
|
|
|
function (_apply_target_includes dest target)
|
|
if (NOT TARGET ${target})
|
|
return()
|
|
endif()
|
|
|
|
# retrieve the list of includes from the target
|
|
get_target_property(includes ${target} INTERFACE_INCLUDE_DIRECTORIES)
|
|
|
|
foreach(i ${includes})
|
|
# skip any invalid includes
|
|
if (NOT i)
|
|
return()
|
|
endif()
|
|
|
|
target_include_directories(${dest} PUBLIC ${i})
|
|
endforeach()
|
|
endfunction()
|
|
|
|
function (_apply_all_target_includes dest)
|
|
foreach(arg IN LISTS ARGN)
|
|
_apply_target_includes(${dest} ${arg})
|
|
endforeach()
|
|
endfunction()
|
|
|
|
function (setup_fgfs_library_includes target)
|
|
|
|
_apply_all_target_includes(${target}
|
|
SimGearCore
|
|
SimGearScene
|
|
Boost::boost
|
|
${EVENT_INPUT_LIBRARIES}
|
|
${HLA_LIBRARIES}
|
|
${OPENGL_LIBRARIES}
|
|
${OPENSCENEGRAPH_LIBRARIES}
|
|
${PLATFORM_LIBS}
|
|
${PLIB_LIBRARIES}
|
|
)
|
|
|
|
if(ENABLE_JSBSIM)
|
|
_apply_target_includes(${target} JSBSim)
|
|
endif()
|
|
|
|
_apply_target_includes(${target} fgsqlite3)
|
|
_apply_target_includes(${target} fgvoicesynth)
|
|
_apply_target_includes(${target} fgembeddedresources)
|
|
|
|
if(ENABLE_IAX)
|
|
_apply_target_includes(${target} iaxclient_lib)
|
|
endif()
|
|
|
|
if (ENABLE_SWIFT)
|
|
_apply_all_target_includes(${target} ${dbus_target})
|
|
endif()
|
|
|
|
if (ENABLE_PLIB_JOYSTICK)
|
|
_apply_target_includes(${target} PLIBJoystick)
|
|
endif()
|
|
|
|
_apply_target_includes(${target} PLIBFont)
|
|
|
|
if (TARGET sentry::sentry)
|
|
_apply_target_includes(${target} sentry::sentry)
|
|
endif()
|
|
|
|
endfunction() |