2010-07-08 20:53:14 +00:00
|
|
|
# local files
|
2014-08-26 15:31:34 +00:00
|
|
|
set(GAME
|
|
|
|
main.cpp
|
|
|
|
engine.cpp
|
2014-09-04 21:17:31 +00:00
|
|
|
|
2014-09-05 12:36:33 +00:00
|
|
|
${CMAKE_SOURCE_DIR}/files/windows/openmw.rc
|
2018-11-03 18:21:22 +00:00
|
|
|
${CMAKE_SOURCE_DIR}/files/windows/openmw.exe.manifest
|
2014-08-26 15:31:34 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
if (ANDROID)
|
2019-04-28 21:52:53 +00:00
|
|
|
set(GAME ${GAME} android_main.cpp)
|
2014-09-05 22:02:39 +00:00
|
|
|
endif()
|
2014-08-26 15:31:34 +00:00
|
|
|
|
2010-08-03 09:14:57 +00:00
|
|
|
set(GAME_HEADER
|
2011-07-08 12:39:23 +00:00
|
|
|
engine.hpp
|
2012-01-28 00:36:17 +00:00
|
|
|
)
|
2018-07-05 20:55:19 +00:00
|
|
|
|
2010-07-08 20:53:14 +00:00
|
|
|
source_group(game FILES ${GAME} ${GAME_HEADER})
|
|
|
|
|
2011-10-22 11:55:06 +00:00
|
|
|
add_openmw_dir (mwrender
|
2020-04-20 16:47:14 +00:00
|
|
|
actors objects renderingmanager animation rotatecontroller sky npcanimation vismask
|
2015-05-30 23:07:43 +00:00
|
|
|
creatureanimation effectmanager util renderinginterface pathgrid rendermode weaponanimation
|
2020-07-11 12:21:18 +00:00
|
|
|
bulletdebugdraw globalmap characterpreview camera viewovershoulder localmap water terrainstorage ripplesimulation
|
2019-06-13 13:37:00 +00:00
|
|
|
renderbin actoranimation landmanager navmesh actorspaths recastmesh fogmanager objectpaging
|
2011-01-08 14:11:37 +00:00
|
|
|
)
|
2010-07-08 20:53:14 +00:00
|
|
|
|
2015-05-03 15:24:35 +00:00
|
|
|
add_openmw_dir (mwinput
|
2020-04-17 11:21:23 +00:00
|
|
|
actions actionmanager bindingsmanager controllermanager controlswitch
|
|
|
|
inputmanagerimp mousemanager keyboardmanager sdlmappings sensormanager
|
2015-05-03 15:24:35 +00:00
|
|
|
)
|
2010-07-08 20:53:14 +00:00
|
|
|
|
2011-10-29 11:17:04 +00:00
|
|
|
add_openmw_dir (mwgui
|
2015-05-01 00:09:57 +00:00
|
|
|
layout textinput widgets race class birth review windowmanagerimp console dialogue
|
2013-05-06 13:30:23 +00:00
|
|
|
windowbase statswindow messagebox journalwindow charactercreation
|
2019-04-01 17:47:12 +00:00
|
|
|
mapwindow windowpinnablebase tooltips scrollwindow bookwindow resourceskin
|
2012-05-24 13:57:23 +00:00
|
|
|
formatting inventorywindow container hud countdialog tradewindow settingswindow
|
2012-08-26 08:52:06 +00:00
|
|
|
confirmationdialog alchemywindow referenceinterface spellwindow mainmenu quickkeysmenu
|
2012-09-22 22:36:20 +00:00
|
|
|
itemselection spellbuyingwindow loadingscreen levelupdialog waitdialog spellcreationdialog
|
2014-09-12 03:14:21 +00:00
|
|
|
enchantingdialog trainingwindow travelwindow exposedwindow cursor spellicons
|
2013-01-27 20:07:28 +00:00
|
|
|
merchantrepair repair soulgemdialog companionwindow bookpage journalviewmodel journalbooks
|
2014-10-18 17:51:07 +00:00
|
|
|
itemmodel containeritemmodel inventoryitemmodel sortfilteritemmodel itemview
|
2014-09-12 02:27:23 +00:00
|
|
|
tradeitemmodel companionitemmodel pickpocketitemmodel controllers savegamedialog
|
2014-12-15 12:13:25 +00:00
|
|
|
recharge mode videowidget backgroundimage itemwidget screenfader debugwindow spellmodel spellview
|
2020-06-05 14:22:53 +00:00
|
|
|
draganddrop timeadvancer jailscreen itemchargeview keyboardnavigation textcolours statswatcher
|
2010-07-08 20:53:14 +00:00
|
|
|
)
|
|
|
|
|
2011-10-29 11:17:04 +00:00
|
|
|
add_openmw_dir (mwdialogue
|
2014-12-13 01:47:04 +00:00
|
|
|
dialoguemanagerimp journalimp journalentry quest topic filter selectwrapper hypertextparser keywordsearch scripttest
|
2010-08-03 11:17:31 +00:00
|
|
|
)
|
2011-10-29 11:17:04 +00:00
|
|
|
|
|
|
|
add_openmw_dir (mwscript
|
2012-08-08 13:18:55 +00:00
|
|
|
locals scriptmanagerimp compilercontext interpretercontext cellextensions miscextensions
|
2011-10-29 11:17:04 +00:00
|
|
|
guiextensions soundextensions skyextensions statsextensions containerextensions
|
|
|
|
aiextensions controlextensions extensions globalscripts ref dialogueextensions
|
2014-03-16 20:39:46 +00:00
|
|
|
animationextensions transformationextensions consoleextensions userextensions
|
2010-08-03 11:17:31 +00:00
|
|
|
)
|
|
|
|
|
2011-10-29 11:17:04 +00:00
|
|
|
add_openmw_dir (mwsound
|
2017-09-12 05:17:36 +00:00
|
|
|
soundmanagerimp openal_output ffmpeg_decoder sound sound_buffer sound_decoder sound_output
|
2020-07-01 16:37:31 +00:00
|
|
|
loudness movieaudiofactory alext efx efx-presets regionsoundselector watersoundupdater volumesettings
|
2010-09-30 13:42:28 +00:00
|
|
|
)
|
2011-10-29 11:17:04 +00:00
|
|
|
|
|
|
|
add_openmw_dir (mwworld
|
2015-04-01 15:02:15 +00:00
|
|
|
refdata worldimp scene globals class action nullaction actionteleport
|
2015-12-06 17:13:04 +00:00
|
|
|
containerstore actiontalk actiontake manualref player cellvisitors failedaction
|
2018-12-03 16:21:40 +00:00
|
|
|
cells localscripts customdata inventorystore ptr actionopen actionread actionharvest
|
2012-09-13 11:02:26 +00:00
|
|
|
actionequip timestamp actionalchemy cellstore actionapply actioneat
|
2015-09-24 13:21:42 +00:00
|
|
|
store esmstore recordcmp fallback actionrepair actionsoulgem livecellref actiondoor
|
2015-06-01 19:41:13 +00:00
|
|
|
contentloader esmloader actiontrap cellreflist cellref physicssystem weather projectilemanager
|
2020-06-03 07:32:28 +00:00
|
|
|
cellpreloader datetimemanager
|
2010-07-26 10:52:32 +00:00
|
|
|
)
|
2010-07-08 20:53:14 +00:00
|
|
|
|
2015-05-09 23:09:00 +00:00
|
|
|
add_openmw_dir (mwphysics
|
2020-03-30 18:39:10 +00:00
|
|
|
physicssystem trace collisiontype actor convert object heightfield closestnotmerayresultcallback
|
2020-03-30 21:05:54 +00:00
|
|
|
contacttestresultcallback deepestnotmecontacttestresultcallback stepper movementsolver
|
2020-03-30 21:25:33 +00:00
|
|
|
closestnotmeconvexresultcallback
|
2015-05-09 23:09:00 +00:00
|
|
|
)
|
|
|
|
|
2011-10-29 11:17:04 +00:00
|
|
|
add_openmw_dir (mwclass
|
|
|
|
classes activator creature npc weapon armor potion apparatus book clothing container door
|
2016-01-01 23:49:53 +00:00
|
|
|
ingredient creaturelevlist itemlevlist light lockpick misc probe repair static actor bodypart
|
2010-07-26 09:15:38 +00:00
|
|
|
)
|
2011-10-29 11:17:04 +00:00
|
|
|
|
|
|
|
add_openmw_dir (mwmechanics
|
2015-08-21 09:12:39 +00:00
|
|
|
mechanicsmanagerimp stat creaturestats magiceffects movement actorutil
|
2017-07-25 05:51:55 +00:00
|
|
|
drawstate spells activespells npcstats aipackage aisequence aipursue alchemy aiwander aitravel aifollow aiavoiddoor aibreathe
|
2020-04-04 15:28:53 +00:00
|
|
|
aicast aiescort aiface aiactivate aicombat recharge repair enchanting pathfinding pathgrid security spellcasting spellresistance
|
2015-01-05 17:52:37 +00:00
|
|
|
disease pickpocket levelledlist combat steering obstacle autocalcspell difficultyscaling aicombataction actor summoning
|
2020-06-11 21:23:30 +00:00
|
|
|
character actors objects aistate trading weaponpriority spellpriority weapontype spellutil tickableeffects
|
2020-04-27 09:03:20 +00:00
|
|
|
spellabsorption linkedeffects
|
2010-07-26 09:15:38 +00:00
|
|
|
)
|
2010-07-08 20:53:14 +00:00
|
|
|
|
2013-11-16 09:31:46 +00:00
|
|
|
add_openmw_dir (mwstate
|
2018-01-13 01:02:43 +00:00
|
|
|
statemanagerimp charactermanager character quicksavemanager
|
2010-07-26 09:15:38 +00:00
|
|
|
)
|
2010-07-08 20:53:14 +00:00
|
|
|
|
2012-04-23 08:57:16 +00:00
|
|
|
add_openmw_dir (mwbase
|
2012-08-11 15:30:55 +00:00
|
|
|
environment world scriptmanager dialoguemanager journal soundmanager mechanicsmanager
|
2013-11-19 14:38:26 +00:00
|
|
|
inputmanager windowmanager statemanager
|
2012-04-23 08:57:16 +00:00
|
|
|
)
|
|
|
|
|
2010-07-08 20:53:14 +00:00
|
|
|
# Main executable
|
2013-02-03 12:47:55 +00:00
|
|
|
|
2020-07-13 12:55:04 +00:00
|
|
|
set(OPENMW_LINK_TARGETS
|
|
|
|
${OSG_LIBRARIES}
|
|
|
|
${OSGPARTICLE_LIBRARIES}
|
|
|
|
${OSGUTIL_LIBRARIES}
|
|
|
|
${OSGDB_LIBRARIES}
|
|
|
|
${OSGVIEWER_LIBRARIES}
|
|
|
|
${OSGGA_LIBRARIES}
|
|
|
|
${OSGSHADOW_LIBRARIES}
|
|
|
|
${Boost_SYSTEM_LIBRARY}
|
|
|
|
${Boost_THREAD_LIBRARY}
|
|
|
|
${Boost_FILESYSTEM_LIBRARY}
|
|
|
|
${Boost_PROGRAM_OPTIONS_LIBRARY}
|
|
|
|
${OPENAL_LIBRARY}
|
|
|
|
${FFmpeg_LIBRARIES}
|
|
|
|
${MyGUI_LIBRARIES}
|
|
|
|
${SDL2_LIBRARY}
|
|
|
|
${RecastNavigation_LIBRARIES}
|
|
|
|
"osg-ffmpeg-videoplayer"
|
|
|
|
"oics"
|
|
|
|
components
|
|
|
|
)
|
|
|
|
|
2020-07-20 18:41:31 +00:00
|
|
|
if (USE_SYSTEM_TINYXML)
|
|
|
|
set(OPENMW_LINK_TARGETS ${OPENMW_LINK_TARGETS}
|
|
|
|
${TinyXML_LIBRARIES})
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if (NOT UNIX)
|
|
|
|
set(OPENMW_LINK_TARGETS ${OPENMW_LINK_TARGETS}
|
|
|
|
${SDL2MAIN_LIBRARY})
|
2020-01-09 23:10:09 +00:00
|
|
|
endif()
|
|
|
|
|
2014-08-04 15:49:54 +00:00
|
|
|
if (ANDROID)
|
2015-12-02 19:40:04 +00:00
|
|
|
set (OSG_PLUGINS
|
|
|
|
-Wl,--whole-archive
|
|
|
|
)
|
2016-10-08 17:20:10 +00:00
|
|
|
foreach(PLUGIN_NAME ${USED_OSG_PLUGINS})
|
|
|
|
set(OSG_PLUGINS ${OSG_PLUGINS} ${OSG_PLUGINS_DIR}/lib${PLUGIN_NAME}.a)
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
set (OSG_PLUGINS
|
|
|
|
${OSG_PLUGINS} -Wl,--no-whole-archive
|
|
|
|
)
|
2020-07-20 18:41:31 +00:00
|
|
|
set(OPENMW_LINK_TARGETS ${OPENMW_LINK_TARGETS}
|
2014-08-06 03:59:39 +00:00
|
|
|
EGL
|
|
|
|
android
|
|
|
|
log
|
2014-09-14 09:28:28 +00:00
|
|
|
dl
|
2015-12-02 19:40:04 +00:00
|
|
|
z
|
|
|
|
${OPENSCENEGRAPH_LIBRARIES}
|
2018-01-14 23:14:30 +00:00
|
|
|
freetype
|
2015-12-02 19:40:04 +00:00
|
|
|
jpeg
|
2020-07-20 18:41:31 +00:00
|
|
|
png
|
2014-08-06 03:59:39 +00:00
|
|
|
)
|
2014-08-04 15:49:54 +00:00
|
|
|
endif (ANDROID)
|
|
|
|
|
2012-03-21 11:20:19 +00:00
|
|
|
# Fix for not visible pthreads functions for linker with glibc 2.15
|
2012-03-19 19:54:30 +00:00
|
|
|
if (UNIX AND NOT APPLE)
|
2020-07-20 18:41:31 +00:00
|
|
|
set(OPENMW_LINK_TARGETS ${OPENMW_LINK_TARGETS}
|
|
|
|
${CMAKE_THREAD_LIBS_INIT})
|
2012-03-19 19:54:30 +00:00
|
|
|
endif()
|
|
|
|
|
2012-01-28 00:36:17 +00:00
|
|
|
if(APPLE)
|
2016-10-28 13:39:27 +00:00
|
|
|
set(BUNDLE_RESOURCES_DIR "${APP_BUNDLE_DIR}/Contents/Resources")
|
|
|
|
|
|
|
|
set(OPENMW_MYGUI_FILES_ROOT ${BUNDLE_RESOURCES_DIR})
|
|
|
|
set(OPENMW_SHADERS_ROOT ${BUNDLE_RESOURCES_DIR})
|
|
|
|
|
|
|
|
add_subdirectory(../../files/ ${CMAKE_CURRENT_BINARY_DIR}/files)
|
|
|
|
|
|
|
|
configure_file("${OpenMW_BINARY_DIR}/settings-default.cfg" ${BUNDLE_RESOURCES_DIR} COPYONLY)
|
|
|
|
configure_file("${OpenMW_BINARY_DIR}/openmw.cfg" ${BUNDLE_RESOURCES_DIR} COPYONLY)
|
|
|
|
configure_file("${OpenMW_BINARY_DIR}/gamecontrollerdb.txt" ${BUNDLE_RESOURCES_DIR} COPYONLY)
|
|
|
|
|
2012-08-20 17:05:02 +00:00
|
|
|
find_library(COCOA_FRAMEWORK Cocoa)
|
|
|
|
find_library(IOKIT_FRAMEWORK IOKit)
|
2020-07-20 18:41:31 +00:00
|
|
|
|
|
|
|
set(OPENMW_LINK_TARGETS ${OPENMW_LINK_TARGETS}
|
|
|
|
${COCOA_FRAMEWORK}
|
|
|
|
${IOKIT_FRAMEWORK})
|
2013-02-07 19:40:20 +00:00
|
|
|
|
2016-05-09 14:24:17 +00:00
|
|
|
if (FFmpeg_FOUND)
|
2013-02-07 19:40:20 +00:00
|
|
|
find_library(COREVIDEO_FRAMEWORK CoreVideo)
|
|
|
|
find_library(VDA_FRAMEWORK VideoDecodeAcceleration)
|
2020-07-20 18:41:31 +00:00
|
|
|
set(OPENMW_LINK_TARGETS ${OPENMW_LINK_TARGETS}
|
|
|
|
z
|
|
|
|
${COREVIDEO_FRAMEWORK}
|
|
|
|
${VDA_FRAMEWORK})
|
2013-02-07 19:40:20 +00:00
|
|
|
endif()
|
2012-01-28 00:36:17 +00:00
|
|
|
endif(APPLE)
|
2011-01-04 19:42:09 +00:00
|
|
|
|
2012-08-19 19:23:46 +00:00
|
|
|
if (BUILD_WITH_CODE_COVERAGE)
|
2020-07-13 12:55:04 +00:00
|
|
|
add_definitions (--coverage)
|
|
|
|
target_link_libraries(openmw gcov)
|
2020-07-20 18:41:31 +00:00
|
|
|
set(OPENMW_LINK_TARGETS ${OPENMW_LINK_TARGETS}
|
|
|
|
gcov)
|
2012-08-19 19:23:46 +00:00
|
|
|
endif()
|
2014-03-05 11:11:10 +00:00
|
|
|
|
|
|
|
if (MSVC)
|
|
|
|
# Debug version needs increased number of sections beyond 2^16
|
|
|
|
if (CMAKE_CL_64)
|
|
|
|
set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /bigobj")
|
|
|
|
endif (CMAKE_CL_64)
|
|
|
|
endif (MSVC)
|
2020-07-20 18:41:31 +00:00
|
|
|
|
|
|
|
if(BUILD_OPENMW)
|
|
|
|
|
|
|
|
if (NOT ANDROID)
|
|
|
|
openmw_add_executable(openmw
|
|
|
|
${OPENMW_FILES}
|
|
|
|
${GAME} ${GAME_HEADER}
|
|
|
|
${APPLE_BUNDLE_RESOURCES}
|
|
|
|
)
|
|
|
|
else ()
|
|
|
|
add_library(openmw
|
|
|
|
SHARED
|
|
|
|
${OPENMW_FILES}
|
|
|
|
${GAME} ${GAME_HEADER}
|
|
|
|
)
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
target_link_libraries(openmw ${OPENMW_LINK_TARGETS})
|
|
|
|
|
|
|
|
if(APPLE)
|
|
|
|
add_custom_command(TARGET openmw
|
|
|
|
POST_BUILD
|
|
|
|
COMMAND cp "${OpenMW_BINARY_DIR}/resources/version" "${BUNDLE_RESOURCES_DIR}/resources")
|
|
|
|
endif(APPLE)
|
|
|
|
|
|
|
|
if (WIN32)
|
|
|
|
INSTALL(TARGETS openmw RUNTIME DESTINATION ".")
|
|
|
|
endif (WIN32)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(BUILD_VR_OPENXR)
|
|
|
|
# TODO: Move this into something akin to add_openmw_dir instead of breaking pattern.
|
|
|
|
# Later, openmw and openmw_vr should preferrably share game code as a static or shared library
|
|
|
|
# instead of being compiled separately, though for now that's not possible as i depend on
|
|
|
|
# USE_OPENXR preprocessor switches.
|
|
|
|
set(OPENMW_VR_FILES
|
|
|
|
vrengine.cpp
|
|
|
|
)
|
|
|
|
add_openmw_dir (mwvr
|
|
|
|
openxraction openxrinput openxrmanager openxrmanagerimpl openxrswapchain openxrswapchainimpl
|
|
|
|
realisticcombat
|
|
|
|
vranimation vrenvironment vrgui vrinputmanager vrinput vrsession vrframebuffer vrshadow vrtypes vrview vrviewer
|
|
|
|
)
|
2016-11-13 20:27:59 +00:00
|
|
|
|
2020-07-20 18:41:31 +00:00
|
|
|
openmw_add_executable(openmw_vr
|
|
|
|
${OPENMW_FILES}
|
|
|
|
${OPENMW_VR_FILES}
|
|
|
|
${GAME} ${GAME_HEADER}
|
|
|
|
${APPLE_BUNDLE_RESOURCES}
|
|
|
|
)
|
|
|
|
|
|
|
|
# Preprocessor variable used to control code paths to vr code
|
|
|
|
target_compile_options(openmw_vr PUBLIC -DUSE_OPENXR -DXR_USE_GRAPHICS_API_OPENGL -DXR_USE_PLATFORM_WIN32)
|
|
|
|
target_link_libraries(openmw_vr ${OPENMW_LINK_TARGETS} ${OPENXR_LIBRARY})
|
|
|
|
if(APPLE)
|
|
|
|
add_custom_command(TARGET openmw_vr
|
|
|
|
POST_BUILD
|
|
|
|
COMMAND cp "${OpenMW_BINARY_DIR}/resources/version" "${BUNDLE_RESOURCES_DIR}/resources")
|
|
|
|
endif(APPLE)
|
|
|
|
|
|
|
|
if (WIN32)
|
2020-07-13 12:55:04 +00:00
|
|
|
INSTALL(TARGETS openmw_vr RUNTIME DESTINATION ".")
|
2020-07-20 18:41:31 +00:00
|
|
|
endif (WIN32)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# Sound stuff - here so CMake doesn't stupidly recompile EVERYTHING
|
|
|
|
# when we change the backend.
|
|
|
|
include_directories(
|
|
|
|
${FFmpeg_INCLUDE_DIRS}
|
|
|
|
)
|