Serious-Engine/Sources/CMakeLists.txt

669 lines
21 KiB
CMake

cmake_minimum_required(VERSION 2.8.7)
project(SeriousEngine)
# Set @rpath for Mac OS X shared library install names.
#cmake_policy(SET CMP0042 NEW)
# Needed to find the SDL2 library files
find_package(SDL2 REQUIRED)
# Set up some sanity stuff...
if(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME MATCHES "GNU|kFreeBSD")
SET(LINUX TRUE)
endif()
if(APPLE)
SET(MACOSX TRUE)
endif()
if(MSVC)
SET(WINDOWS TRUE)
endif()
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Debug CACHE STRING "None Debug Release RelWithDebInfo MinSizeRel" FORCE)
endif()
SET(DEBUG FALSE)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
SET(DEBUG TRUE)
endif()
add_definitions(-D_REENTRANT=1)
add_definitions(-D_MT=1)
if(DEBUG)
add_definitions(-DDEBUG=1)
add_definitions(-D_DEBUG=1)
set(DEBUGSUFFIX "D")
else()
add_definitions(-DNDEBUG=1)
add_definitions(-D_NDEBUG=1)
set(DEBUGSUFFIX "")
endif()
if(WINDOWS)
add_definitions(-DPLATFORM_WIN32=1)
add_definitions(-DPRAGMA_ONCE=1)
add_definitions(-D_CRT_SECURE_NO_WARNINGS=1)
add_definitions(-D_CRT_SECURE_NO_DEPRECATE=1)
endif()
if(LINUX)
set(CMAKE_SKIP_RPATH ON CACHE BOOL "Skip RPATH" FORCE)
add_definitions(-DPLATFORM_UNIX=1)
add_definitions(-D_FILE_OFFSET_BITS=64)
add_definitions(-D_LARGEFILE_SOURCE=1)
add_definitions(-DPRAGMA_ONCE=1)
endif()
if(MACOSX)
add_definitions(-DPLATFORM_UNIX=1)
add_definitions(-DPLATFORM_MACOSX=1)
add_definitions(-DPRAGMA_ONCE=1)
endif()
if(LINUX OR MACOSX)
if(DEBUG)
add_definitions(-O0 -ggdb3)
endif(DEBUG)
add_definitions(-pthread)
add_definitions(-pipe -fsigned-char)
#CXXFLAGS += -fexceptions -frtti
endif()
if(CMAKE_COMPILER_IS_GNUCC)
# !!! FIXME: turn a bunch of these off, this is just for now. I hope. --ryan.
add_definitions(-Wno-invalid-offsetof)
endif()
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
# !!! FIXME: turn a bunch of these off, this is just for now. I hope. --ryan.
add_definitions(-Wno-unused-value)
add_definitions(-Wno-switch)
add_definitions(-Wno-tautological-undefined-compare)
add_definitions(-Wno-c++11-compat-deprecated-writable-strings)
endif()
# !!! FIXME: you currently need this, but I'd like to flip this to not use
# !!! FIXME: assembly language. And maybe delete the asm code too.
option(USE_I386_ASM "Use X86 ASM" TRUE)
if (USE_I386_ASM)
# You need the Netwide Assembler (NASM) to build this on Intel systems.
# http://nasm.sf.net/
add_definitions(-DUSE_I386_ASM=1)
if (MACOSX)
set(ASMOBJFMT "macho")
list(APPEND ASMFLAGS --prefix _)
elseif(WINDOWS)
set(ASMOBJFMT "win32")
else()
set(ASMOBJFMT "elf")
endif()
else()
add_definitions(-DUSE_PORTABLE_C=1)
endif()
option(PANDORA "Compile for Pandora" FALSE)
if (PANDORA)
add_definitions(-DPLATFORM_PANDORA=1)
endif()
option(USE_TREMOR "Use Tremor instead of Vorbis" FALSE)
if (USE_TREMOR)
add_definitions(-DUSE_TREMOR=1)
endif()
# !!! FIXME: I currently force this, but you shouldn't _have_ to.
add_definitions(-DSINGLE_THREADED=1)
include_directories(
.
External/SDL2
External/libogg/include
)
if(USE_TREMOR)
if(PANDORA)
include_directories(/mnt/utmp/codeblocks/usr/include/tremor)
else()
# !!!Do something here!
endif()
else()
include_directories(External/libvorbis/include)
endif()
# We build ECC, then use it to generate C++ code for the game entities...
macro(add_parser_and_scanner _PARSER _SCANNER)
add_custom_command(
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/${_SCANNER}.cpp"
MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/${_SCANNER}.l"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMAND flex
ARGS -o${_SCANNER}.cpp ${_SCANNER}.l
)
add_custom_command(
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/${_PARSER}.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/${_PARSER}.hpp"
MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/${_PARSER}.y"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMAND bison
ARGS -o${_PARSER}.cpp ${_PARSER}.y -d
)
add_custom_command(
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/${_PARSER}.h"
MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/${_PARSER}.hpp"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMAND ${CMAKE_COMMAND}
ARGS -E copy ${_PARSER}.hpp ${_PARSER}.h
)
endmacro()
# Build ECC from source if there wasn't a prebuilt-one specified on the command line.
# Normally we build it here, but we might need a prebuilt, native binary if
# we're cross-compiling the rest of the game.
if(NOT ECC)
add_parser_and_scanner("Ecc/Parser" "Ecc/Scanner")
add_executable(ecc Ecc/Main.cpp Ecc/Parser.cpp Ecc/Parser.h Ecc/Scanner.cpp)
set(ECC "ecc")
endif()
macro(entity _NAME)
add_custom_command(
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/${_NAME}.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/${_NAME}.h" "${CMAKE_CURRENT_SOURCE_DIR}/${_NAME}_tables.h"
MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/${_NAME}.es"
DEPENDS ${ECC}
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMAND ${ECC}
ARGS "${_NAME}.es"
)
list(APPEND ENTITIES_CPP "${CMAKE_CURRENT_SOURCE_DIR}/${_NAME}.cpp")
list(APPEND ENTITIES_H "${CMAKE_CURRENT_SOURCE_DIR}/${_NAME}.h")
list(APPEND ENTITIES_H "${CMAKE_CURRENT_SOURCE_DIR}/${_NAME}_tables.h")
endmacro()
set(ENTITIES_CPP "")
set(ENTITIES_H "")
entity(Engine/Classes/BaseEvents)
entity(Engine/Classes/MovableBrushEntity)
entity(Engine/Classes/MovableEntity)
entity(Engine/Classes/MovableModelEntity)
entity(Engine/Classes/PlayerEntity)
set(ENGINE_ENTITIES_CPP ${ENTITIES_CPP})
set(ENTITIES_CPP "")
entity(EntitiesMP/AirElemental)
entity(EntitiesMP/AirShockwave)
entity(EntitiesMP/AmmoItem)
entity(EntitiesMP/AmmoPack)
entity(EntitiesMP/AnimationChanger)
entity(EntitiesMP/AnimationHub)
entity(EntitiesMP/AreaMarker)
entity(EntitiesMP/ArmorItem)
entity(EntitiesMP/BackgroundViewer)
entity(EntitiesMP/BasicEffects)
entity(EntitiesMP/Beast)
entity(EntitiesMP/BigHead)
entity(EntitiesMP/BlendController)
entity(EntitiesMP/BloodSpray)
entity(EntitiesMP/Boneman)
entity(EntitiesMP/Bouncer)
entity(EntitiesMP/Bullet)
entity(EntitiesMP/Camera)
entity(EntitiesMP/CameraMarker)
entity(EntitiesMP/CannonBall)
entity(EntitiesMP/CannonRotating)
entity(EntitiesMP/CannonStatic)
entity(EntitiesMP/ChainsawFreak)
entity(EntitiesMP/Copier)
entity(EntitiesMP/Counter)
entity(EntitiesMP/CrateBus)
entity(EntitiesMP/CrateRider)
entity(EntitiesMP/CreditsHolder)
entity(EntitiesMP/Damager)
entity(EntitiesMP/Debris)
entity(EntitiesMP/DebugEntityStatesDisplay)
entity(EntitiesMP/Demon)
entity(EntitiesMP/DestroyableArchitecture)
entity(EntitiesMP/Devil)
entity(EntitiesMP/DevilMarker)
entity(EntitiesMP/DevilProjectile)
entity(EntitiesMP/DoorController)
entity(EntitiesMP/Dragonman)
entity(EntitiesMP/EffectMarker)
entity(EntitiesMP/Effector)
entity(EntitiesMP/Elemental)
entity(EntitiesMP/EnemyBase)
entity(EntitiesMP/EnemyCounter)
entity(EntitiesMP/EnemyDive)
entity(EntitiesMP/EnemyFly)
entity(EntitiesMP/EnemyMarker)
entity(EntitiesMP/EnemyRunInto)
entity(EntitiesMP/EnemySpawner)
entity(EntitiesMP/EnvironmentBase)
entity(EntitiesMP/EnvironmentMarker)
entity(EntitiesMP/EnvironmentParticlesHolder)
entity(EntitiesMP/Eruptor)
entity(EntitiesMP/ExotechLarva)
entity(EntitiesMP/ExotechLarvaBattery)
entity(EntitiesMP/ExotechLarvaCharger)
entity(EntitiesMP/Eyeman)
entity(EntitiesMP/Fireworks)
entity(EntitiesMP/Fish)
entity(EntitiesMP/Flame)
entity(EntitiesMP/FogMarker)
entity(EntitiesMP/Gizmo)
entity(EntitiesMP/Global)
entity(EntitiesMP/GradientMarker)
entity(EntitiesMP/GravityMarker)
entity(EntitiesMP/GravityRouter)
entity(EntitiesMP/Grunt)
entity(EntitiesMP/GruntSka)
entity(EntitiesMP/Guffy)
entity(EntitiesMP/HazeMarker)
entity(EntitiesMP/Headman)
entity(EntitiesMP/HealthItem)
entity(EntitiesMP/HudPicHolder)
entity(EntitiesMP/Item)
entity(EntitiesMP/KeyItem)
entity(EntitiesMP/LarvaOffspring)
entity(EntitiesMP/Light)
entity(EntitiesMP/Lightning)
entity(EntitiesMP/Marker)
entity(EntitiesMP/MessageHolder)
entity(EntitiesMP/MessageItem)
entity(EntitiesMP/MeteorShower)
entity(EntitiesMP/MirrorMarker)
entity(EntitiesMP/ModelDestruction)
entity(EntitiesMP/ModelHolder)
entity(EntitiesMP/ModelHolder2)
entity(EntitiesMP/ModelHolder3)
entity(EntitiesMP/MovingBrush)
entity(EntitiesMP/MovingBrushMarker)
entity(EntitiesMP/MusicChanger)
entity(EntitiesMP/MusicHolder)
entity(EntitiesMP/NavigationMarker)
entity(EntitiesMP/ParticlesHolder)
entity(EntitiesMP/Pendulum)
entity(EntitiesMP/PhotoAlbum)
entity(EntitiesMP/Pipebomb)
entity(EntitiesMP/Player)
entity(EntitiesMP/PlayerActionMarker)
entity(EntitiesMP/PlayerAnimator)
entity(EntitiesMP/PlayerMarker)
entity(EntitiesMP/PlayerView)
entity(EntitiesMP/PlayerWeapons)
entity(EntitiesMP/PlayerWeaponsEffects)
entity(EntitiesMP/PowerUpItem)
entity(EntitiesMP/Projectile)
entity(EntitiesMP/PyramidSpaceShip)
entity(EntitiesMP/PyramidSpaceShipMarker)
entity(EntitiesMP/Reminder)
entity(EntitiesMP/RollingStone)
entity(EntitiesMP/Santa)
entity(EntitiesMP/Scorpman)
entity(EntitiesMP/ScrollHolder)
entity(EntitiesMP/SeriousBomb)
entity(EntitiesMP/Ship)
entity(EntitiesMP/ShipMarker)
entity(EntitiesMP/Shooter)
entity(EntitiesMP/SoundHolder)
entity(EntitiesMP/SpawnerProjectile)
entity(EntitiesMP/Spinner)
entity(EntitiesMP/StormController)
entity(EntitiesMP/Summoner)
entity(EntitiesMP/SummonerMarker)
entity(EntitiesMP/Switch)
entity(EntitiesMP/TacticsChanger)
entity(EntitiesMP/TacticsHolder)
entity(EntitiesMP/Teleport)
entity(EntitiesMP/Terrain)
entity(EntitiesMP/TextFXHolder)
entity(EntitiesMP/TimeController)
entity(EntitiesMP/TouchField)
entity(EntitiesMP/Trigger)
entity(EntitiesMP/Twister)
entity(EntitiesMP/VoiceHolder)
entity(EntitiesMP/Walker)
entity(EntitiesMP/WatchPlayers)
entity(EntitiesMP/Watcher)
entity(EntitiesMP/Water)
entity(EntitiesMP/WeaponItem)
entity(EntitiesMP/Werebull)
entity(EntitiesMP/Woman)
entity(EntitiesMP/WorldBase)
entity(EntitiesMP/WorldLink)
entity(EntitiesMP/WorldSettingsController)
add_custom_target(ParseEntities DEPENDS ${ENTITIES_H})
set(ENTITIESMPLIB "EntitiesMP${DEBUGSUFFIX}")
add_library(${ENTITIESMPLIB} SHARED
${ENTITIES_CPP}
EntitiesMP/Common/Common.cpp
EntitiesMP/Common/Particles.cpp
EntitiesMP/Common/EmanatingParticles.cpp
EntitiesMP/Common/PathFinding.cpp
EntitiesMP/Common/HUD.cpp
)
if(MACOSX)
target_link_libraries(${ENTITIESMPLIB} "-undefined dynamic_lookup")
endif()
add_dependencies(${ENTITIESMPLIB} ParseEntities)
set(GAMEMPLIB "GameMP${DEBUGSUFFIX}")
add_library(${GAMEMPLIB} SHARED
GameMP/Camera.cpp
GameMP/CompMessage.cpp
GameMP/CompModels.cpp
GameMP/Computer.cpp
GameMP/Console.cpp
GameMP/Controls.cpp
GameMP/Game.cpp
GameMP/LCDDrawing.cpp
GameMP/LoadingHook.cpp
GameMP/Map.cpp
GameMP/SessionProperties.cpp
GameMP/WEDInterface.cpp
)
if(MACOSX)
target_link_libraries(${GAMEMPLIB} "-undefined dynamic_lookup")
endif()
add_dependencies(${GAMEMPLIB} ParseEntities)
set(SHADERSLIB "Shaders${DEBUGSUFFIX}")
add_library(${SHADERSLIB} SHARED
Shaders/AddShader.cpp
Shaders/AddShaderDS.cpp
Shaders/BaseShader.cpp
Shaders/BaseShaderDS.cpp
Shaders/BaseTransparent.cpp
Shaders/BaseTransparentDS.cpp
Shaders/ColorShader.cpp
Shaders/Common.cpp
Shaders/DetailShader.cpp
Shaders/DisplaceShader.cpp
Shaders/InvisibleShader.cpp
Shaders/MultiLayerShader.cpp
Shaders/Reflection.cpp
Shaders/ReflectionDS.cpp
Shaders/ReftectionAndSpecular.cpp
Shaders/ReftectionAndSpecularDS.cpp
Shaders/Specular.cpp
Shaders/SpecularDS.cpp
Shaders/StdH.cpp
Shaders/Translucent.cpp
)
if(MACOSX)
target_link_libraries(${SHADERSLIB} "-undefined dynamic_lookup")
endif()
add_dependencies(${SHADERSLIB} ParseEntities)
add_parser_and_scanner("Engine/Base/Parser" "Engine/Base/Scanner")
add_parser_and_scanner("Engine/Ska/smcPars" "Engine/Ska/smcScan")
if (USE_I386_ASM)
add_custom_command(
OUTPUT "SoundMixer386.o"
MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/Engine/Sound/SoundMixer386.asm"
COMMAND nasm
ARGS ${ASMFLAGS} -f ${ASMOBJFMT} -o SoundMixer386.o ${CMAKE_CURRENT_SOURCE_DIR}/Engine/Sound/SoundMixer386.asm
)
list(APPEND ADDITIONAL_ENGINE_SRCS SoundMixer386.o)
endif()
set(ENGINE_SRCS
${ENGINE_ENTITIES_CPP}
Engine/Engine.cpp
Engine/Base/Anim.cpp
Engine/Base/CRC.cpp
Engine/Base/CRCTable.cpp
Engine/Base/Changeable.cpp
Engine/Base/Console.cpp
Engine/Base/Directory.cpp
Engine/Base/ErrorReporting.cpp
Engine/Base/FileName.cpp
Engine/Base/Input.cpp
Engine/Base/Lists.cpp
Engine/Base/Memory.cpp
Engine/Base/Profiling.cpp
Engine/Base/ProgressHook.cpp
Engine/Base/Protection.cpp
Engine/Base/Relations.cpp
Engine/Base/ReplaceFile.cpp
Engine/Base/Serial.cpp
Engine/Base/Shell.cpp
Engine/Base/ShellTypes.cpp
Engine/Base/Statistics.cpp
Engine/Base/Stream.cpp
Engine/Base/Timer.cpp
Engine/Base/Translation.cpp
Engine/Base/Unzip.cpp
Engine/Base/Updateable.cpp
Engine/Base/CTString.cpp
Engine/Base/Scanner.cpp
Engine/Base/Parser.cpp
Engine/Base/Parser.h
Engine/Base/IFeel.cpp
Engine/Base/Unix/UnixFileSystem.cpp
Engine/Base/Unix/UnixDynamicLoader.cpp
Engine/Base/SDL/SDLTimer.cpp
Engine/Base/SDL/SDLInput.cpp
Engine/Base/SDL/SDLEvents.cpp
Engine/Base/NullSynchronization.cpp # single threaded.
#Engine/Base/Unix/UnixSynchronization.cpp # multithreaded Unix.
#Engine/Base/SDL/SDLThreadLocalStorage.cpp # multithreaded Unix.
#Engine/Base/Registry.cpp # Windows only.
#Engine/Base/StackDump.cpp # Windows only.
#Engine/Base/Win32/Win32Synchronization.cpp # Windows only.
Engine/Brushes/Brush.cpp
Engine/Brushes/BrushIO.cpp
Engine/Brushes/BrushShadows.cpp
Engine/Brushes/BrushTriangularize.cpp
Engine/Brushes/BrushArchive.cpp
Engine/Brushes/BrushImport.cpp
Engine/Brushes/BrushMip.cpp
Engine/Brushes/BrushPolygon.cpp
Engine/Brushes/BrushExport.cpp
Engine/Brushes/BrushSector.cpp
Engine/Entities/Entity.cpp
Engine/Entities/NearestPolygon.cpp
Engine/Entities/EntityProperties.cpp
Engine/Entities/PlayerCharacter.cpp
Engine/Entities/EntityClass.cpp
Engine/Entities/FieldBSPTesting.cpp
Engine/Entities/EntityCollision.cpp
Engine/Entities/EntityCopying.cpp
Engine/Entities/LastPositions.cpp
Engine/Math/Projection_Isometric.cpp
Engine/Math/Object3D.cpp
Engine/Math/Projection_Parallel.cpp
Engine/Math/Projection_Perspective.cpp
Engine/Math/Float.cpp
Engine/Math/Object3D_CSG.cpp
Engine/Math/Projection_Simple.cpp
Engine/Math/Projection_Simple_DOUBLE.cpp
Engine/Math/Functions.cpp
Engine/Math/ObjectSector.cpp
Engine/Math/Placement.cpp
Engine/Math/TextureMapping.cpp
Engine/Math/Geometry.cpp
Engine/Math/Projection.cpp
Engine/Math/Geometry_DOUBLE.cpp
#Engine/Math/Object3D_IO.cpp # Exploration 3D support.
#Engine/Models/EditModel.cpp
Engine/Models/Model.cpp
Engine/Models/RenderModel_View.cpp
Engine/Models/Normals.cpp
Engine/Models/VertexGetting.cpp
Engine/Models/RenderModel.cpp
Engine/Models/MipMaker.cpp
Engine/Models/ModelProfile.cpp
Engine/Models/RenderModel_Mask.cpp
Engine/Light/LayerMaker.cpp
Engine/Light/LayerMixer.cpp
Engine/Light/LightSource.cpp
Engine/Graphics/Adapter.cpp
Engine/Graphics/Raster.cpp
Engine/Graphics/GfxLibrary.cpp
Engine/Graphics/Benchmark.cpp
Engine/Graphics/GfxProfile.cpp
Engine/Graphics/Color.cpp
Engine/Graphics/ShadowMap.cpp
Engine/Graphics/DepthCheck.cpp
Engine/Graphics/Texture.cpp
Engine/Graphics/DisplayMode.cpp
Engine/Graphics/Gfx_OpenGL.cpp
Engine/Graphics/Gfx_OpenGL_Textures.cpp
Engine/Graphics/TextureEffects.cpp
Engine/Graphics/DrawPort.cpp
Engine/Graphics/Gfx_wrapper.cpp
Engine/Graphics/DrawPort_Particles.cpp
Engine/Graphics/Graphics.cpp
Engine/Graphics/ViewPort.cpp
Engine/Graphics/DrawPort_RenderScene.cpp
Engine/Graphics/ImageInfo.cpp
Engine/Graphics/Fog.cpp
Engine/Graphics/MultiMonitor.cpp
Engine/Graphics/Font.cpp
Engine/Graphics/Shader.cpp
Engine/Graphics/Stereo.cpp
Engine/Graphics/SDL/SDLOpenGL.cpp
Engine/Graphics/SDL/SDLAdapter.cpp
Engine/Network/ActionBuffer.cpp
Engine/Network/NetworkMessage.cpp
Engine/Network/Server.cpp
Engine/Network/Buffer.cpp
Engine/Network/NetworkProfile.cpp
Engine/Network/SessionState.cpp
Engine/Network/PlayerBuffer.cpp
Engine/Network/MessageDispatcher.cpp
Engine/Network/PlayerSource.cpp
Engine/Network/Compression.cpp
Engine/Network/Network.cpp
Engine/Network/PlayerTarget.cpp
Engine/Network/CPacket.cpp
Engine/Network/ClientInterface.cpp
Engine/Network/CommunicationInterface.cpp
Engine/Network/Diff.cpp
Engine/GameAgent/GameAgent.cpp
Engine/Terrain/ArrayHolder.cpp
Engine/Terrain/Terrain.cpp
Engine/Terrain/TerrainArchive.cpp
Engine/Terrain/TerrainEditing.cpp
Engine/Terrain/TerrainLayer.cpp
Engine/Terrain/TerrainMisc.cpp
Engine/Terrain/TerrainRayCasting.cpp
Engine/Terrain/TerrainRender.cpp
Engine/Terrain/TerrainTile.cpp
Engine/Rendering/Render.cpp
Engine/Rendering/RenderProfile.cpp
Engine/Rendering/SelectOnRender.cpp
Engine/Ska/AnimSet.cpp
Engine/Ska/RMRender.cpp
Engine/Ska/Skeleton.cpp
Engine/Ska/ModelInstance.cpp
Engine/Ska/StringTable.cpp
Engine/Ska/Mesh.cpp
Engine/Ska/RMRenderMask.cpp
Engine/Ska/smcPars.cpp
Engine/Ska/smcPars.h
Engine/Ska/smcScan.cpp
Engine/Sound/SoundDecoder.cpp
Engine/Sound/SoundObject.cpp
Engine/Sound/SoundLibrary.cpp
Engine/Sound/SoundProfile.cpp
Engine/Sound/SoundData.cpp
Engine/Sound/Wave.cpp
Engine/Sound/SoundMixer.cpp
Engine/Templates/Stock_CAnimData.cpp
Engine/Templates/Stock_CAnimSet.cpp
Engine/Templates/Stock_CEntityClass.cpp
Engine/Templates/Stock_CMesh.cpp
Engine/Templates/Stock_CModelData.cpp
Engine/Templates/Stock_CSkeleton.cpp
Engine/Templates/Stock_CSoundData.cpp
Engine/Templates/Stock_CTextureData.cpp
Engine/Templates/Stock_CShader.cpp
Engine/Templates/NameTable_CTFileName.cpp
Engine/Templates/NameTable_CTranslationPair.cpp
Engine/Templates/BSP.cpp
Engine/World/WorldCSG.cpp
Engine/World/PhysicsProfile.cpp
Engine/World/WorldCollision.cpp
Engine/World/WorldIO.cpp
Engine/World/WorldRayCasting.cpp
Engine/World/World.cpp
Engine/World/WorldCollisionGrid.cpp
Engine/World/WorldEditingProfile.cpp
Engine/zlib/inflate.c
Engine/zlib/adler32.c
Engine/zlib/infblock.c
Engine/zlib/inffast.c
Engine/zlib/inftrees.c
Engine/zlib/trees.c
Engine/zlib/compress.c
Engine/zlib/zutil.c
Engine/zlib/deflate.c
Engine/zlib/infcodes.c
Engine/zlib/infutil.c
Engine/zlib/uncompr.c
${ADDITIONAL_ENGINE_SRCS}
)
add_executable(ssam
${ENGINE_SRCS}
SeriousSam/LevelInfo.cpp
SeriousSam/CmdLine.cpp
SeriousSam/SeriousSam.cpp
SeriousSam/VarList.cpp
SeriousSam/Credits.cpp
SeriousSam/GLSettings.cpp
SeriousSam/LCDDrawing.cpp
SeriousSam/SplashScreen.cpp
SeriousSam/MainWindow.cpp
SeriousSam/Menu.cpp
SeriousSam/MenuGadgets.cpp
SeriousSam/MenuPrinting.cpp
)
add_dependencies(ssam ParseEntities)
# !!! FIXME: this is an option because you have to recompile the entire engine twice.
# !!! FIXME: If we can put the engine in a static library and not lose symbols,
# !!! FIXME: that's a better plan and we can remove the toggle here.
option(BUILD_DEDICATED_SERVER "Compile the dedicated server, too" FALSE)
if(BUILD_DEDICATED_SERVER)
add_executable(SeriousSamDedicated ${ENGINE_SRCS} DedicatedServer/DedicatedServer.cpp)
add_dependencies(SeriousSamDedicated ParseEntities)
endif()
if(MACOSX)
find_library(COCOA_FRAMEWORK Cocoa)
target_link_libraries(ssam "${COCOA_FRAMEWORK}")
target_link_libraries(ssam "${CMAKE_CURRENT_SOURCE_DIR}/lib/macosx/libSDL2-2.0.0.dylib")
if(BUILD_DEDICATED_SERVER)
target_link_libraries(SeriousSamDedicated "${COCOA_FRAMEWORK}")
target_link_libraries(SeriousSamDedicated "${CMAKE_CURRENT_SOURCE_DIR}/lib/macosx/libSDL2-2.0.0.dylib")
endif()
endif()
if(LINUX)
set_target_properties(ssam PROPERTIES LINK_FLAGS "-Wl,-rpath,$ORIGIN")
target_link_libraries(ssam "m")
target_link_libraries(ssam "dl")
if(PANDORA)
target_link_libraries(ssam "rt")
endif()
target_link_libraries(ssam "pthread")
target_link_libraries(ssam ${SDL2_LIBRARY})
if(BUILD_DEDICATED_SERVER)
set_target_properties(SeriousSamDedicated PROPERTIES LINK_FLAGS "-Wl,-rpath,$ORIGIN")
target_link_libraries(SeriousSamDedicated "m")
target_link_libraries(SeriousSamDedicated "dl")
target_link_libraries(SeriousSamDedicated "pthread")
target_link_libraries(SeriousSamDedicated ${SDL2_LIBRARY})
endif()
endif()
# end of CMakeLists.txt ...