mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-31 14:56:38 +00:00 
			
		
		
		
	Add a tool to load and print information about all bullet objects in all cells See merge request OpenMW/openmw!1627
		
			
				
	
	
		
			481 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			481 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| project (Components)
 | |
| 
 | |
| # Version file
 | |
| set (VERSION_IN_FILE "${OpenMW_SOURCE_DIR}/files/version.in")
 | |
| set (VERSION_FILE_PATH_BASE "${OpenMW_BINARY_DIR}")
 | |
| set (VERSION_FILE_PATH_RELATIVE resources/version)
 | |
| if (GIT_CHECKOUT)
 | |
|     get_generator_is_multi_config(multi_config)
 | |
|     add_custom_target (git-version
 | |
|        COMMAND ${CMAKE_COMMAND}
 | |
|             -DGIT_EXECUTABLE=${GIT_EXECUTABLE}
 | |
|             -DPROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR}
 | |
|             -DVERSION_IN_FILE=${VERSION_IN_FILE}
 | |
|             -DVERSION_FILE_PATH_BASE=${VERSION_FILE_PATH_BASE}
 | |
|             -DVERSION_FILE_PATH_RELATIVE=${VERSION_FILE_PATH_RELATIVE}
 | |
|             -DOPENMW_VERSION_MAJOR=${OPENMW_VERSION_MAJOR}
 | |
|             -DOPENMW_VERSION_MINOR=${OPENMW_VERSION_MINOR}
 | |
|             -DOPENMW_VERSION_RELEASE=${OPENMW_VERSION_RELEASE}
 | |
|             -DOPENMW_VERSION=${OPENMW_VERSION}
 | |
|             -DMACROSFILE=${CMAKE_SOURCE_DIR}/cmake/OpenMWMacros.cmake
 | |
|             "-DCMAKE_CONFIGURATION_TYPES=${CMAKE_CONFIGURATION_TYPES}"
 | |
|             -Dgenerator_is_multi_config_var=${multi_config}
 | |
|             -P ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/GitVersion.cmake
 | |
|             VERBATIM)
 | |
| else (GIT_CHECKOUT)
 | |
|     configure_resource_file(${VERSION_IN_FILE} ${VERSION_FILE_PATH_BASE} ${VERSION_FILE_PATH_RELATIVE})
 | |
| endif (GIT_CHECKOUT)
 | |
| 
 | |
| # source files
 | |
| 
 | |
| add_component_dir (lua
 | |
|     luastate scriptscontainer utilpackage serialization configuration i18n storage
 | |
|     )
 | |
| 
 | |
| add_component_dir (settings
 | |
|     settings parser
 | |
|     )
 | |
| 
 | |
| add_component_dir (bsa
 | |
|     bsa_file compressedbsafile
 | |
|     )
 | |
| 
 | |
| add_component_dir (vfs
 | |
|     manager archive bsaarchive filesystemarchive registerarchives
 | |
|     )
 | |
| 
 | |
| add_component_dir (resource
 | |
|     scenemanager keyframemanager imagemanager bulletshapemanager bulletshape niffilemanager objectcache multiobjectcache resourcesystem
 | |
|     resourcemanager stats animation foreachbulletobject
 | |
|     )
 | |
| 
 | |
| add_component_dir (shader
 | |
|     shadermanager shadervisitor removedalphafunc
 | |
|     )
 | |
| 
 | |
| add_component_dir (sceneutil
 | |
|     clone attach visitor util statesetupdater controller skeleton riggeometry morphgeometry lightcontroller
 | |
|     lightmanager lightutil positionattitudetransform workqueue pathgridutil waterutil writescene serialize optimizer
 | |
|     actorutil detourdebugdraw navmesh agentpath shadow mwshadowtechnique recastmesh shadowsbin osgacontroller rtt
 | |
|     screencapture depth
 | |
|     )
 | |
| 
 | |
| add_component_dir (nif
 | |
|     controlled effect niftypes record controller extra node record_ptr data niffile property nifkey base nifstream physics
 | |
|     )
 | |
| 
 | |
| add_component_dir (nifosg
 | |
|     nifloader controller particle matrixtransform
 | |
|     )
 | |
| 
 | |
| add_component_dir (nifbullet
 | |
|     bulletnifloader
 | |
|     )
 | |
| 
 | |
| add_component_dir (to_utf8
 | |
|     to_utf8
 | |
|     )
 | |
| 
 | |
| add_component_dir(esm attr common defs esmcommon reader records util luascripts)
 | |
| 
 | |
| add_component_dir (esm3
 | |
|     esmreader esmwriter loadacti loadalch loadappa loadarmo loadbody loadbook loadbsgn loadcell
 | |
|     loadclas loadclot loadcont loadcrea loaddial loaddoor loadench loadfact loadglob loadgmst
 | |
|     loadinfo loadingr loadland loadlevlist loadligh loadlock loadprob loadrepa loadltex loadmgef loadmisc
 | |
|     loadnpc loadpgrd loadrace loadregn loadscpt loadskil loadsndg loadsoun loadspel loadsscr loadstat
 | |
|     loadweap aipackage effectlist spelllist variant variantimp loadtes3 cellref filter
 | |
|     savedgame journalentry queststate locals globalscript player objectstate cellid cellstate globalmap
 | |
|     inventorystate containerstate npcstate creaturestate dialoguestate statstate npcstats creaturestats
 | |
|     weatherstate quickkeys fogstate spellstate activespells creaturelevliststate doorstate projectilestate debugprofile
 | |
|     aisequence magiceffects custommarkerstate stolenitems transport animationstate controlsstate mappings
 | |
|     )
 | |
| 
 | |
| add_component_dir (esm3terrain
 | |
|     storage
 | |
|     )
 | |
| 
 | |
| add_component_dir (esm4
 | |
|     acti
 | |
|     actor
 | |
|     common
 | |
|     dialogue
 | |
|     effect
 | |
|     formid
 | |
|     inventory
 | |
|     lighting
 | |
|     loadachr
 | |
|     loadacre
 | |
|     loadacti
 | |
|     loadalch
 | |
|     loadaloc
 | |
|     loadammo
 | |
|     loadanio
 | |
|     loadappa
 | |
|     loadarma
 | |
|     loadarmo
 | |
|     loadaspc
 | |
|     loadbook
 | |
|     loadbptd
 | |
|     loadcell
 | |
|     loadclas
 | |
|     loadclfm
 | |
|     loadclot
 | |
|     loadcont
 | |
|     loadcrea
 | |
|     loaddial
 | |
|     loaddobj
 | |
|     loaddoor
 | |
|     loadeyes
 | |
|     loadflor
 | |
|     loadflst
 | |
|     loadfurn
 | |
|     loadglob
 | |
|     loadgras
 | |
|     loadgrup
 | |
|     loadhair
 | |
|     loadhdpt
 | |
|     loadidle
 | |
|     loadidlm
 | |
|     loadimod
 | |
|     loadinfo
 | |
|     loadingr
 | |
|     loadkeym
 | |
|     loadland
 | |
|     loadlgtm
 | |
|     loadligh
 | |
|     loadltex
 | |
|     loadlvlc
 | |
|     loadlvli
 | |
|     loadlvln
 | |
|     loadmato
 | |
|     loadmisc
 | |
|     loadmset
 | |
|     loadmstt
 | |
|     loadmusc
 | |
|     loadnavi
 | |
|     loadnavm
 | |
|     loadnote
 | |
|     loadnpc
 | |
|     loadotft
 | |
|     loadpack
 | |
|     loadpgrd
 | |
|     loadpgre
 | |
|     loadpwat
 | |
|     loadqust
 | |
|     loadrace
 | |
|     loadrefr
 | |
|     loadregn
 | |
|     loadroad
 | |
|     loadsbsp
 | |
|     loadscol
 | |
|     loadscpt
 | |
|     loadscrl
 | |
|     loadsgst
 | |
|     loadslgm
 | |
|     loadsndr
 | |
|     loadsoun
 | |
|     loadstat
 | |
|     loadtact
 | |
|     loadterm
 | |
|     loadtes4
 | |
|     loadtree
 | |
|     loadtxst
 | |
|     loadweap
 | |
|     loadwrld
 | |
|     reader
 | |
|     reference
 | |
|     script
 | |
| )
 | |
| 
 | |
| add_component_dir (misc
 | |
|     constants utf8stream stringops resourcehelpers rng messageformatparser weakcache thread
 | |
|     compression osguservalues errorMarker color
 | |
|     )
 | |
| 
 | |
| add_component_dir (debug
 | |
|     debugging debuglog gldebug
 | |
|     )
 | |
| 
 | |
| IF(NOT WIN32 AND NOT APPLE)
 | |
|     add_definitions(-DGLOBAL_DATA_PATH="${GLOBAL_DATA_PATH}")
 | |
|     add_definitions(-DGLOBAL_CONFIG_PATH="${GLOBAL_CONFIG_PATH}")
 | |
| ENDIF()
 | |
| add_component_dir (files
 | |
|     linuxpath androidpath windowspath macospath fixedpath multidircollection collections configurationmanager
 | |
|     lowlevelfile constrainedfilestream memorystream hash configfileparser
 | |
|     )
 | |
| 
 | |
| add_component_dir (compiler
 | |
|     context controlparser errorhandler exception exprparser extensions fileparser generator
 | |
|     lineparser literals locals output parser scanner scriptparser skipparser streamerrorhandler
 | |
|     stringparser tokenloc nullerrorhandler opcodes extensions0 declarationparser
 | |
|     quickfileparser discardparser junkparser
 | |
|     )
 | |
| 
 | |
| add_component_dir (interpreter
 | |
|     context controlopcodes genericopcodes installopcodes interpreter localopcodes mathopcodes
 | |
|     miscopcodes opcodes runtime types defines
 | |
|     )
 | |
| 
 | |
| add_component_dir (translation
 | |
|     translation
 | |
|     )
 | |
| 
 | |
| add_component_dir (terrain
 | |
|     storage world buffercache defs terraingrid material terraindrawable texturemanager chunkmanager compositemaprenderer quadtreeworld quadtreenode viewdata cellborder
 | |
|     )
 | |
| 
 | |
| add_component_dir (loadinglistener
 | |
|     loadinglistener
 | |
|     )
 | |
| 
 | |
| add_component_dir (myguiplatform
 | |
|     myguirendermanager myguidatamanager myguiplatform myguitexture myguiloglistener additivelayer scalinglayer
 | |
|     )
 | |
| 
 | |
| add_component_dir (widgets
 | |
|     box fontwrapper imagebutton tags list numericeditbox sharedstatebutton windowcaption widgets
 | |
|     )
 | |
| 
 | |
| add_component_dir (fontloader
 | |
|     fontloader
 | |
|     )
 | |
| 
 | |
| add_component_dir (sdlutil
 | |
|     gl4es_init sdlgraphicswindow imagetosurface sdlinputwrapper sdlvideowrapper events sdlcursormanager sdlmappings
 | |
|     )
 | |
| 
 | |
| add_component_dir (version
 | |
|     version
 | |
|     )
 | |
| 
 | |
| add_component_dir (fallback
 | |
|     fallback validate
 | |
|     )
 | |
| 
 | |
| add_component_dir (queries
 | |
|     query luabindings
 | |
|     )
 | |
|     
 | |
| add_component_dir (lua_ui
 | |
|     registerscriptsettings scriptsettings
 | |
|     properties widget element util layers content alignment
 | |
|     adapter text textedit window image container
 | |
|     )
 | |
| 
 | |
| 
 | |
| if(WIN32)
 | |
|     add_component_dir (crashcatcher
 | |
|         windows_crashcatcher
 | |
|         windows_crashmonitor
 | |
|         windows_crashshm
 | |
|     )
 | |
| elseif(NOT ANDROID)
 | |
|     add_component_dir (crashcatcher
 | |
|         crashcatcher
 | |
|     )
 | |
| endif()
 | |
| 
 | |
| add_component_dir(detournavigator
 | |
|     debug
 | |
|     makenavmesh
 | |
|     findsmoothpath
 | |
|     recastmeshbuilder
 | |
|     recastmeshmanager
 | |
|     cachedrecastmeshmanager
 | |
|     navmeshmanager
 | |
|     navigatorimpl
 | |
|     asyncnavmeshupdater
 | |
|     recastmesh
 | |
|     tilecachedrecastmeshmanager
 | |
|     recastmeshobject
 | |
|     navmeshtilescache
 | |
|     settings
 | |
|     navigator
 | |
|     findrandompointaroundcircle
 | |
|     raycast
 | |
|     navmeshtileview
 | |
|     oscillatingrecastmeshobject
 | |
|     offmeshconnectionsmanager
 | |
|     preparednavmeshdata
 | |
|     navmeshcacheitem
 | |
|     navigatorutils
 | |
|     generatenavmeshtile
 | |
|     navmeshdb
 | |
|     serialization
 | |
|     navmeshdbutils
 | |
|     recast
 | |
|     gettilespositions
 | |
|     )
 | |
| 
 | |
| add_component_dir(loadinglistener
 | |
|     reporter
 | |
|     )
 | |
| 
 | |
| add_component_dir(sqlite3
 | |
|     db
 | |
|     statement
 | |
|     transaction
 | |
| )
 | |
| 
 | |
| add_component_dir(esmloader
 | |
|     load
 | |
|     esmdata
 | |
| )
 | |
| 
 | |
| set (ESM_UI ${CMAKE_SOURCE_DIR}/files/ui/contentselector.ui
 | |
|     )
 | |
| 
 | |
| if (USE_QT)
 | |
|     add_component_qt_dir (contentselector
 | |
|         model/modelitem model/esmfile
 | |
|         model/naturalsort model/contentmodel
 | |
|         model/loadordererror
 | |
|         view/combobox view/contentselector
 | |
|         )
 | |
|     add_component_qt_dir (config
 | |
|         gamesettings
 | |
|         launchersettings
 | |
|         settingsbase
 | |
|         )
 | |
| 
 | |
|     add_component_qt_dir (process
 | |
|         processinvoker
 | |
|         )
 | |
| 
 | |
|     add_component_qt_dir (misc
 | |
|         helpviewer
 | |
|         )
 | |
| 
 | |
|     QT5_WRAP_UI(ESM_UI_HDR ${ESM_UI})
 | |
| endif()
 | |
| 
 | |
| if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
 | |
|     if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64" AND NOT APPLE)
 | |
|         add_definitions(-fPIC)
 | |
|     endif()
 | |
| endif ()
 | |
| 
 | |
| include_directories(${BULLET_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR})
 | |
| 
 | |
| find_package(SQLite3 REQUIRED)
 | |
| 
 | |
| add_library(components STATIC ${COMPONENT_FILES})
 | |
| 
 | |
| target_link_libraries(components
 | |
|     # CMake's built-in OSG finder does not use pkgconfig, so we have to
 | |
|     # manually ensure the order is correct for inter-library dependencies.
 | |
|     # This only makes a difference with `-DOPENMW_USE_SYSTEM_OSG=ON -DOSG_STATIC=ON`.
 | |
|     # https://gitlab.kitware.com/cmake/cmake/-/issues/21701
 | |
|     ${OSGPARTICLE_LIBRARIES}
 | |
|     ${OSGVIEWER_LIBRARIES}
 | |
|     ${OSGSHADOW_LIBRARIES}
 | |
|     ${OSGANIMATION_LIBRARIES}
 | |
|     ${OSGGA_LIBRARIES}
 | |
|     ${OSGTEXT_LIBRARIES}
 | |
|     ${OSGDB_LIBRARIES}
 | |
|     ${OSGUTIL_LIBRARIES}
 | |
|     ${OSG_LIBRARIES}
 | |
|     ${OPENTHREADS_LIBRARIES}
 | |
| 
 | |
|     ${Boost_SYSTEM_LIBRARY}
 | |
|     ${Boost_FILESYSTEM_LIBRARY}
 | |
|     ${Boost_PROGRAM_OPTIONS_LIBRARY}
 | |
|     ${Boost_IOSTREAMS_LIBRARY}
 | |
| 
 | |
|     ${SDL2_LIBRARIES}
 | |
|     ${OPENGL_gl_LIBRARY}
 | |
|     ${MyGUI_LIBRARIES}
 | |
|     ${LUA_LIBRARIES}
 | |
|     LZ4::LZ4
 | |
|     RecastNavigation::DebugUtils
 | |
|     RecastNavigation::Detour
 | |
|     RecastNavigation::Recast
 | |
| 
 | |
|     Base64
 | |
|     SQLite::SQLite3
 | |
|     smhasher
 | |
|     )
 | |
| 
 | |
| target_link_libraries(components ${BULLET_LIBRARIES})
 | |
| 
 | |
| if (WIN32)
 | |
|     target_link_libraries(components
 | |
|     ${Boost_LOCALE_LIBRARY}
 | |
|     ${Boost_ZLIB_LIBRARY})
 | |
| endif()
 | |
| 
 | |
| if (USE_QT)
 | |
|     add_library(components_qt STATIC ${COMPONENT_QT_FILES} ${ESM_UI_HDR})
 | |
|     target_link_libraries(components_qt components Qt5::Widgets Qt5::Core)
 | |
|     target_compile_definitions(components_qt PRIVATE OPENMW_DOC_BASEURL="${OPENMW_DOC_BASEURL}")
 | |
| endif()
 | |
| 
 | |
| if (GIT_CHECKOUT)
 | |
|     add_dependencies (components git-version)
 | |
| endif (GIT_CHECKOUT)
 | |
| 
 | |
| if (OSG_STATIC AND CMAKE_SYSTEM_NAME MATCHES "Linux")
 | |
|     find_package(X11 REQUIRED COMPONENTS Xinerama Xrandr)
 | |
|     target_link_libraries(components ${CMAKE_DL_LIBS} X11::X11 X11::Xinerama X11::Xrandr)
 | |
|     find_package(Fontconfig MODULE)
 | |
|     if(Fontconfig_FOUND)
 | |
|         target_link_libraries(components Fontconfig::Fontconfig)
 | |
|     endif()
 | |
| endif()
 | |
| 
 | |
| if (WIN32)
 | |
|     target_link_libraries(components shlwapi)
 | |
| endif()
 | |
| 
 | |
| # Fix for not visible pthreads functions for linker with glibc 2.15
 | |
| if (UNIX AND NOT APPLE)
 | |
| target_link_libraries(components ${CMAKE_THREAD_LIBS_INIT})
 | |
| endif()
 | |
| 
 | |
| if (BUILD_WITH_CODE_COVERAGE)
 | |
|     add_definitions(--coverage)
 | |
|     target_link_libraries(components gcov)
 | |
| endif()
 | |
| 
 | |
| 
 | |
| # Make the variable accessible for other subdirectories
 | |
| set(COMPONENT_FILES ${COMPONENT_FILES} PARENT_SCOPE)
 | |
| 
 | |
| target_compile_definitions(components PUBLIC BT_USE_DOUBLE_PRECISION)
 | |
| 
 | |
| if(OSG_STATIC)
 | |
|     unset(_osg_plugins_static_files)
 | |
|     add_library(components_osg_plugins INTERFACE)
 | |
|     foreach(_plugin ${USED_OSG_PLUGINS})
 | |
|         string(TOUPPER ${_plugin} _plugin_uc)
 | |
|         if(OPENMW_USE_SYSTEM_OSG)
 | |
|             list(APPEND _osg_plugins_static_files ${${_plugin_uc}_LIBRARY})
 | |
|         else()
 | |
|             list(APPEND _osg_plugins_static_files $<TARGET_FILE:${${_plugin_uc}_LIBRARY}>)
 | |
|             target_link_libraries(components_osg_plugins INTERFACE $<TARGET_PROPERTY:${${_plugin_uc}_LIBRARY},LINK_LIBRARIES>)
 | |
|             add_dependencies(components_osg_plugins ${${_plugin_uc}_LIBRARY})
 | |
|         endif()
 | |
|     endforeach()
 | |
|     # We use --whole-archive because OSG plugins use registration.
 | |
|     get_whole_archive_options(_opts ${_osg_plugins_static_files})
 | |
|     target_link_options(components_osg_plugins INTERFACE ${_opts})
 | |
|     target_link_libraries(components components_osg_plugins)
 | |
| 
 | |
|     if(OPENMW_USE_SYSTEM_OSG)
 | |
|         # OSG plugin pkgconfig files are missing these dependencies.
 | |
|         # https://github.com/openscenegraph/OpenSceneGraph/issues/1052
 | |
|         find_package(Freetype REQUIRED)
 | |
|         find_package(JPEG REQUIRED)
 | |
|         find_package(PNG REQUIRED)
 | |
|         target_link_libraries(components Freetype::Freetype JPEG::JPEG PNG::PNG)
 | |
|     endif()
 | |
| endif(OSG_STATIC)
 | |
| 
 | |
| if(USE_QT)
 | |
|     set_property(TARGET components_qt PROPERTY AUTOMOC ON)
 | |
| endif(USE_QT)
 | |
| 
 | |
| if (MSVC AND CMAKE_VERSION VERSION_GREATER_EQUAL 3.16)
 | |
|     target_precompile_headers(components PRIVATE ${SOL_INCLUDE_DIR}/sol/sol.hpp)
 | |
| endif ()
 |