Permalink
Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
798 lines (717 sloc) 19.5 KB
project(dhewm3)
cmake_minimum_required(VERSION 2.6)
# TODO
# osx: -weak_framework ?
# how to name the game .so's?
# maybe add these as options:
# BUILD_GAMEPAK
# TARGET_MONO
# SETUP
# SDK -D_D3SDK
# don't add these as options, but document them?
# IDNET_HOST -DIDNET_HOST=\\"%s\\"' % IDNET_HOST
# DEBUG_MEMORY -DID_DEBUG_MEMORY', '-DID_REDIRECT_NEWDELETE
# LIBC_MALLOC -DUSE_LIBC_MALLOC=0
# ID_NOLANADDRESS -DID_NOLANADDRESS
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/sys/cmake")
set(CMAKE_SKIP_RPATH ON CACHE BOOL "Skip RPATH" FORCE)
include(CheckCXXCompilerFlag)
include(CheckFunctionExists)
option(CORE "Build the core" ON)
option(GAME "Build the base game code" ON)
option(D3XP "Build the d3xp game code" OFF)
option(MODS "Build game code for additional mods" OFF)
option(DEDICATED "Build the dedicated server" OFF)
option(X86 "Cross compile for x86 (only applicable on x86_64)" OFF)
option(ONATIVE "Optimize for the host CPU" OFF)
if (NOT CMAKE_SYSTEM_PROCESSOR)
message(FATAL_ERROR "No target CPU architecture set")
endif()
if (NOT CMAKE_SYSTEM_NAME)
message(FATAL_ERROR "No target OS set")
endif()
# target cpu
set(cpu ${CMAKE_SYSTEM_PROCESSOR})
if (cpu STREQUAL "powerpc")
set(cpu "ppc")
elseif (cpu MATCHES "i.86")
set(cpu "x86")
endif()
if (cpu STREQUAL "x86_64" AND X86)
set(cpu "x86")
endif()
# game library suffix
set(gamesuffix ${cpu})
# target os
if (APPLE)
set(os "macosx")
else()
string(TOLOWER "${CMAKE_SYSTEM_NAME}" os)
endif()
# build type
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "prerelease")
endif()
# precompiled libraries from the dhewm3-libs repo
if (DHEWM3LIBS)
if (CMAKE_CROSSCOMPILING)
set(CMAKE_FIND_ROOT_PATH ${DHEWM3LIBS})
else()
set(ENV{CMAKE_PREFIX_PATH} ${DHEWM3LIBS})
endif()
# these are too stupid, give them a hint
set(ENV{OPENALDIR} ${DHEWM3LIBS})
set(ENV{SDLDIR} ${DHEWM3LIBS})
endif()
# libs
find_package(JPEG REQUIRED)
include_directories(${JPEG_INCLUDE_DIR})
set(CMAKE_REQUIRED_INCLUDES ${JPEG_INCLUDE_DIR})
set(CMAKE_REQUIRED_LIBRARIES ${JPEG_LIBRARY})
CHECK_FUNCTION_EXISTS("jpeg_mem_src" HAVE_JPEG_MEM_SRC)
find_package(OGG REQUIRED)
include_directories(${OGG_INCLUDE_DIR})
find_package(Vorbis REQUIRED)
include_directories(${VORBIS_INCLUDE_DIR})
find_package(VorbisFile REQUIRED)
include_directories(${VORBISFILE_INCLUDE_DIR})
find_package(OpenAL REQUIRED)
include_directories(${OPENAL_INCLUDE_DIR})
find_package(OpenGL REQUIRED)
include_directories(${OPENGL_INCLUDE_DIR})
find_package(SDL REQUIRED)
include_directories(${SDL_INCLUDE_DIR})
find_package(CURL QUIET)
if (CURL_FOUND)
set(ID_ENABLE_CURL ON)
include_directories(${CURL_INCLUDE_DIR})
else()
message(STATUS "libcurl not found, server downloads won't be available")
set(ID_ENABLE_CURL OFF)
endif()
# compiler specific flags
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
add_definitions(-pipe)
if (NOT CMAKE_CROSSCOMPILING AND ONATIVE)
add_definitions(-march=native)
elseif (NOT APPLE AND cpu STREQUAL "x86")
add_definitions(-march=pentium3)
endif()
set(CMAKE_C_FLAGS_PRERELEASE "-Wall -g -O3 -ffast-math -fno-unsafe-math-optimizations -fomit-frame-pointer")
set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -O3 -ffast-math -fno-unsafe-math-optimizations -fomit-frame-pointer")
set(CMAKE_C_FLAGS_MINSIZEREL "-DNDEBUG -Os -ffast-math -fno-unsafe-math-optimizations -fomit-frame-pointer")
set(CMAKE_C_FLAGS_DEBUG "-Wall -g -D_DEBUG -O1")
set(CMAKE_C_FLAGS_PROFILE "-DNDEBUG -pg -O1 -fno-omit-frame-pointer")
set(CMAKE_CXX_FLAGS_PROFILE ${CMAKE_C_FLAGS_PROFILE})
add_definitions(-fno-strict-aliasing)
CHECK_CXX_COMPILER_FLAG("-fvisibility=hidden" cxx_has_fvisibility)
if (NOT cxx_has_fvisibility)
message(FATAL_ERROR "Compiler does not support -fvisibility")
endif()
add_definitions(-fvisibility=hidden)
# TODO fix these warnings
add_definitions(-Wno-sign-compare)
add_definitions(-Wno-switch)
add_definitions(-Wno-format-security)
add_definitions(-Wno-enum-compare)
CHECK_CXX_COMPILER_FLAG("-Woverloaded-virtual" cxx_has_Woverload_virtual)
if (cxx_has_Woverload_virtual)
add_definitions(-Woverloaded-virtual)
endif()
if (APPLE)
# no suffix for .dylib
set(gamesuffix "")
add_definitions(-DMACOS_X=1)
if (cpu STREQUAL "x86_64")
add_definitions(-arch x86_64 -mmacosx-version-min=10.6)
set(ldflags "${ldflags} -arch x86_64 -mmacosx-version-min=10.6")
elseif (cpu STREQUAL "x86")
CHECK_CXX_COMPILER_FLAG("-arch i386" cxx_has_arch_i386)
if (cxx_has_arch_i386)
add_definitions(-arch i386)
set(ldflags "${ldflags} -arch i386")
endif()
add_definitions(-mmacosx-version-min=10.4)
set(ldflags "${ldflags} -mmacosx-version-min=10.4")
elseif (cpu STREQUAL "ppc")
CHECK_CXX_COMPILER_FLAG("-arch ppc" cxx_has_arch_ppc)
if (cxx_has_arch_ppc)
add_definitions(-arch ppc)
set(ldflags "${ldflags} -arch ppc")
endif()
add_definitions(-mmacosx-version-min=10.4)
set(ldflags "${ldflags} -mmacosx-version-min=10.4")
else()
message(FATAL_ERROR "Unsupported CPU architecture for OSX")
endif()
set(sys_libs ${sys_libs} "-framework Carbon -framework Cocoa -framework OpenGL -framework IOKit")
else()
if (cpu STREQUAL "x86" AND X86)
add_definitions(-m32)
set(ldflags "${ldflags} -m32")
endif()
if (os STREQUAL "linux")
set(sys_libs ${sys_libs} dl)
endif()
add_definitions(-DLINUX_DEFAULT_PATH="${CMAKE_INSTALL_PREFIX}/share/dhewm3")
endif()
elseif (MSVC)
add_definitions(/W4)
add_definitions(/wd4100) # unreferenced formal parameter
add_definitions(/wd4127) # conditional expression is constant
add_definitions(/wd4244) # possible loss of data
add_definitions(/wd4245) # signed/unsigned mismatch
add_definitions(/wd4714) # 'function' marked as __forceinline not inlined
add_definitions(/wd4996) # 'function': was declared deprecated
set(CMAKE_C_FLAGS_DEBUG "-D_DEBUG /Od /Zi /MDd")
set(CMAKE_C_FLAGS_RELEASE "/Ox /Oy /MD")
set(CMAKE_C_FLAGS_PRERELEASE "/Ox /Oy /Zi /MD")
set(CMAKE_C_FLAGS_MINSIZEREL "/Ox /Oy /Os /MD")
else()
message(FATAL_ERROR "Unsupported compiler")
endif()
set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
set(CMAKE_CXX_FLAGS_PRERELEASE ${CMAKE_C_FLAGS_PRERELEASE})
set(CMAKE_CXX_FLAGS_MINSIZEREL ${CMAKE_C_FLAGS_MINSIZEREL})
# mingw and msvc
if (WIN32)
add_definitions(-DWINVER=0x0501)
add_definitions(-D_WIN32_WINNT=0x0501)
set(sys_libs ${sys_libs}
winmm
iphlpapi
wsock32
)
endif()
configure_file(
"${CMAKE_SOURCE_DIR}/config.h.in"
"${CMAKE_BINARY_DIR}/config.h"
)
message(STATUS "Building ${CMAKE_BUILD_TYPE} for ${os}-${cpu}")
set(src_renderer
renderer/jpeg_memory_src.cpp
renderer/Cinematic.cpp
renderer/GuiModel.cpp
renderer/Image_files.cpp
renderer/Image_init.cpp
renderer/Image_load.cpp
renderer/Image_process.cpp
renderer/Image_program.cpp
renderer/Interaction.cpp
renderer/Material.cpp
renderer/MegaTexture.cpp
renderer/Model.cpp
renderer/ModelDecal.cpp
renderer/ModelManager.cpp
renderer/ModelOverlay.cpp
renderer/Model_beam.cpp
renderer/Model_ase.cpp
renderer/Model_liquid.cpp
renderer/Model_lwo.cpp
renderer/Model_ma.cpp
renderer/Model_md3.cpp
renderer/Model_md5.cpp
renderer/Model_prt.cpp
renderer/Model_sprite.cpp
renderer/RenderEntity.cpp
renderer/RenderSystem.cpp
renderer/RenderSystem_init.cpp
renderer/RenderWorld.cpp
renderer/RenderWorld_demo.cpp
renderer/RenderWorld_load.cpp
renderer/RenderWorld_portals.cpp
renderer/VertexCache.cpp
renderer/draw_arb.cpp
renderer/draw_arb2.cpp
renderer/draw_common.cpp
renderer/draw_nv10.cpp
renderer/draw_nv20.cpp
renderer/draw_r200.cpp
renderer/tr_backend.cpp
renderer/tr_deform.cpp
renderer/tr_font.cpp
renderer/tr_guisurf.cpp
renderer/tr_light.cpp
renderer/tr_lightrun.cpp
renderer/tr_main.cpp
renderer/tr_orderIndexes.cpp
renderer/tr_polytope.cpp
renderer/tr_render.cpp
renderer/tr_rendertools.cpp
renderer/tr_shadowbounds.cpp
renderer/tr_stencilshadow.cpp
renderer/tr_subview.cpp
renderer/tr_trace.cpp
renderer/tr_trisurf.cpp
renderer/tr_turboshadow.cpp
)
set(src_framework
framework/CVarSystem.cpp
framework/CmdSystem.cpp
framework/Common.cpp
framework/Compressor.cpp
framework/Console.cpp
framework/DemoFile.cpp
framework/DeclAF.cpp
framework/DeclEntityDef.cpp
framework/DeclFX.cpp
framework/DeclManager.cpp
framework/DeclParticle.cpp
framework/DeclPDA.cpp
framework/DeclSkin.cpp
framework/DeclTable.cpp
framework/EditField.cpp
framework/EventLoop.cpp
framework/File.cpp
framework/FileSystem.cpp
framework/KeyInput.cpp
framework/Unzip.cpp
framework/UsercmdGen.cpp
framework/Session_menu.cpp
framework/Session.cpp
framework/async/AsyncClient.cpp
framework/async/AsyncNetwork.cpp
framework/async/AsyncServer.cpp
framework/async/MsgChannel.cpp
framework/async/NetworkSystem.cpp
framework/async/ServerScan.cpp
)
set(src_cm
cm/CollisionModel_contacts.cpp
cm/CollisionModel_contents.cpp
cm/CollisionModel_debug.cpp
cm/CollisionModel_files.cpp
cm/CollisionModel_load.cpp
cm/CollisionModel_rotate.cpp
cm/CollisionModel_trace.cpp
cm/CollisionModel_translate.cpp
)
set(src_dmap
tools/compilers/dmap/dmap.cpp
tools/compilers/dmap/facebsp.cpp
tools/compilers/dmap/gldraw.cpp
tools/compilers/dmap/glfile.cpp
tools/compilers/dmap/leakfile.cpp
tools/compilers/dmap/map.cpp
tools/compilers/dmap/optimize.cpp
tools/compilers/dmap/output.cpp
tools/compilers/dmap/portals.cpp
tools/compilers/dmap/shadowopt3.cpp
tools/compilers/dmap/tritjunction.cpp
tools/compilers/dmap/tritools.cpp
tools/compilers/dmap/ubrush.cpp
tools/compilers/dmap/usurface.cpp
)
set(src_aas
tools/compilers/aas/AASBuild.cpp
tools/compilers/aas/AASBuild_file.cpp
tools/compilers/aas/AASBuild_gravity.cpp
tools/compilers/aas/AASBuild_ledge.cpp
tools/compilers/aas/AASBuild_merge.cpp
tools/compilers/aas/AASCluster.cpp
tools/compilers/aas/AASFile.cpp
tools/compilers/aas/AASFile_optimize.cpp
tools/compilers/aas/AASFile_sample.cpp
tools/compilers/aas/AASReach.cpp
tools/compilers/aas/AASFileManager.cpp
tools/compilers/aas/Brush.cpp
tools/compilers/aas/BrushBSP.cpp
)
set(src_roq
tools/compilers/roqvq/NSBitmapImageRep.cpp
tools/compilers/roqvq/codec.cpp
tools/compilers/roqvq/roq.cpp
tools/compilers/roqvq/roqParam.cpp
)
set(src_renderbump
tools/compilers/renderbump/renderbump.cpp
)
set(src_snd
sound/snd_cache.cpp
sound/snd_decoder.cpp
sound/snd_efxfile.cpp
sound/snd_emitter.cpp
sound/snd_shader.cpp
sound/snd_system.cpp
sound/snd_wavefile.cpp
sound/snd_world.cpp
)
set(src_ui
ui/BindWindow.cpp
ui/ChoiceWindow.cpp
ui/DeviceContext.cpp
ui/EditWindow.cpp
ui/FieldWindow.cpp
ui/GameBearShootWindow.cpp
ui/GameBustOutWindow.cpp
ui/GameSSDWindow.cpp
ui/GuiScript.cpp
ui/ListGUI.cpp
ui/ListWindow.cpp
ui/MarkerWindow.cpp
ui/RegExp.cpp
ui/RenderWindow.cpp
ui/SimpleWindow.cpp
ui/SliderWindow.cpp
ui/UserInterface.cpp
ui/Window.cpp
ui/Winvar.cpp
)
set(src_tools
tools/guied/GEWindowWrapper_stub.cpp
)
set(src_idlib
idlib/bv/Bounds.cpp
idlib/bv/Frustum.cpp
idlib/bv/Sphere.cpp
idlib/bv/Box.cpp
idlib/geometry/DrawVert.cpp
idlib/geometry/Winding2D.cpp
idlib/geometry/Surface_SweptSpline.cpp
idlib/geometry/Winding.cpp
idlib/geometry/Surface.cpp
idlib/geometry/Surface_Patch.cpp
idlib/geometry/TraceModel.cpp
idlib/geometry/JointTransform.cpp
idlib/hashing/CRC32.cpp
idlib/hashing/MD4.cpp
idlib/hashing/MD5.cpp
idlib/math/Angles.cpp
idlib/math/Lcp.cpp
idlib/math/Math.cpp
idlib/math/Matrix.cpp
idlib/math/Ode.cpp
idlib/math/Plane.cpp
idlib/math/Pluecker.cpp
idlib/math/Polynomial.cpp
idlib/math/Quat.cpp
idlib/math/Rotation.cpp
idlib/math/Simd.cpp
idlib/math/Simd_Generic.cpp
idlib/math/Simd_AltiVec.cpp
idlib/math/Simd_MMX.cpp
idlib/math/Simd_3DNow.cpp
idlib/math/Simd_SSE.cpp
idlib/math/Simd_SSE2.cpp
idlib/math/Simd_SSE3.cpp
idlib/math/Vector.cpp
idlib/BitMsg.cpp
idlib/LangDict.cpp
idlib/Lexer.cpp
idlib/Lib.cpp
idlib/containers/HashIndex.cpp
idlib/Dict.cpp
idlib/Str.cpp
idlib/Parser.cpp
idlib/MapFile.cpp
idlib/CmdArgs.cpp
idlib/Token.cpp
idlib/Base64.cpp
idlib/Timer.cpp
idlib/Heap.cpp
)
set(src_game
game/AF.cpp
game/AFEntity.cpp
game/Actor.cpp
game/Camera.cpp
game/Entity.cpp
game/BrittleFracture.cpp
game/Fx.cpp
game/GameEdit.cpp
game/Game_local.cpp
game/Game_network.cpp
game/Item.cpp
game/IK.cpp
game/Light.cpp
game/Misc.cpp
game/Mover.cpp
game/Moveable.cpp
game/MultiplayerGame.cpp
game/Player.cpp
game/PlayerIcon.cpp
game/PlayerView.cpp
game/Projectile.cpp
game/Pvs.cpp
game/SecurityCamera.cpp
game/SmokeParticles.cpp
game/Sound.cpp
game/Target.cpp
game/Trigger.cpp
game/Weapon.cpp
game/WorldSpawn.cpp
game/ai/AAS.cpp
game/ai/AAS_debug.cpp
game/ai/AAS_pathing.cpp
game/ai/AAS_routing.cpp
game/ai/AI.cpp
game/ai/AI_events.cpp
game/ai/AI_pathing.cpp
game/ai/AI_Vagary.cpp
game/gamesys/DebugGraph.cpp
game/gamesys/Class.cpp
game/gamesys/Event.cpp
game/gamesys/SaveGame.cpp
game/gamesys/SysCmds.cpp
game/gamesys/SysCvar.cpp
game/gamesys/TypeInfo.cpp
game/anim/Anim.cpp
game/anim/Anim_Blend.cpp
game/anim/Anim_Import.cpp
game/anim/Anim_Testmodel.cpp
game/script/Script_Compiler.cpp
game/script/Script_Interpreter.cpp
game/script/Script_Program.cpp
game/script/Script_Thread.cpp
game/physics/Clip.cpp
game/physics/Force.cpp
game/physics/Force_Constant.cpp
game/physics/Force_Drag.cpp
game/physics/Force_Field.cpp
game/physics/Force_Spring.cpp
game/physics/Physics.cpp
game/physics/Physics_AF.cpp
game/physics/Physics_Actor.cpp
game/physics/Physics_Base.cpp
game/physics/Physics_Monster.cpp
game/physics/Physics_Parametric.cpp
game/physics/Physics_Player.cpp
game/physics/Physics_RigidBody.cpp
game/physics/Physics_Static.cpp
game/physics/Physics_StaticMulti.cpp
game/physics/Push.cpp
)
set(src_d3xp
d3xp/AF.cpp
d3xp/AFEntity.cpp
d3xp/Actor.cpp
d3xp/Camera.cpp
d3xp/Entity.cpp
d3xp/BrittleFracture.cpp
d3xp/Fx.cpp
d3xp/GameEdit.cpp
d3xp/Game_local.cpp
d3xp/Game_network.cpp
d3xp/Item.cpp
d3xp/IK.cpp
d3xp/Light.cpp
d3xp/Misc.cpp
d3xp/Mover.cpp
d3xp/Moveable.cpp
d3xp/MultiplayerGame.cpp
d3xp/Player.cpp
d3xp/PlayerIcon.cpp
d3xp/PlayerView.cpp
d3xp/Projectile.cpp
d3xp/Pvs.cpp
d3xp/SecurityCamera.cpp
d3xp/SmokeParticles.cpp
d3xp/Sound.cpp
d3xp/Target.cpp
d3xp/Trigger.cpp
d3xp/Weapon.cpp
d3xp/WorldSpawn.cpp
d3xp/ai/AAS.cpp
d3xp/ai/AAS_debug.cpp
d3xp/ai/AAS_pathing.cpp
d3xp/ai/AAS_routing.cpp
d3xp/ai/AI.cpp
d3xp/ai/AI_events.cpp
d3xp/ai/AI_pathing.cpp
d3xp/ai/AI_Vagary.cpp
d3xp/gamesys/DebugGraph.cpp
d3xp/gamesys/Class.cpp
d3xp/gamesys/Event.cpp
d3xp/gamesys/SaveGame.cpp
d3xp/gamesys/SysCmds.cpp
d3xp/gamesys/SysCvar.cpp
d3xp/gamesys/TypeInfo.cpp
d3xp/anim/Anim.cpp
d3xp/anim/Anim_Blend.cpp
d3xp/anim/Anim_Import.cpp
d3xp/anim/Anim_Testmodel.cpp
d3xp/script/Script_Compiler.cpp
d3xp/script/Script_Interpreter.cpp
d3xp/script/Script_Program.cpp
d3xp/script/Script_Thread.cpp
d3xp/physics/Clip.cpp
d3xp/physics/Force.cpp
d3xp/physics/Force_Constant.cpp
d3xp/physics/Force_Drag.cpp
d3xp/physics/Force_Field.cpp
d3xp/physics/Force_Spring.cpp
d3xp/physics/Physics.cpp
d3xp/physics/Physics_AF.cpp
d3xp/physics/Physics_Actor.cpp
d3xp/physics/Physics_Base.cpp
d3xp/physics/Physics_Monster.cpp
d3xp/physics/Physics_Parametric.cpp
d3xp/physics/Physics_Player.cpp
d3xp/physics/Physics_RigidBody.cpp
d3xp/physics/Physics_Static.cpp
d3xp/physics/Physics_StaticMulti.cpp
d3xp/physics/Push.cpp
d3xp/Grabber.cpp
d3xp/physics/Force_Grab.cpp
)
set(src_core
${src_renderer}
${src_framework}
${src_cm}
${src_dmap}
${src_aas}
${src_roq}
${src_renderbump}
${src_snd}
${src_ui}
${src_tools}
)
set(src_stub_openal sys/stub/openal_stub.cpp)
set(src_stub_gl sys/stub/stub_gl.cpp)
set(src_stub_sys sys/stub/sys_stub.cpp)
set(src_stub_util sys/stub/util_stub.cpp)
set(src_sys_dedicated sys/linux/dedicated.cpp)
if (APPLE)
set(OSX_RESOURCE_FILES
"${CMAKE_SOURCE_DIR}/sys/osx/Doom3.icns"
"${CMAKE_SOURCE_DIR}/sys/osx/Doom 3.rsrc"
)
set_source_files_properties(${OSX_RESOURCE_FILES} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
set(src_sys_base
sys/cpu.cpp
sys/threads.cpp
sys/events.cpp
sys/sys_local.cpp
sys/posix/posix_net.cpp
sys/posix/posix_signal.cpp
sys/posix/posix_main.cpp
)
set(src_sys_core
sys/glimp.cpp
sys/glimp_ati_fragment_shader.cpp
sys/osx/DOOMController.mm
sys/osx/macosx_misc.mm
sys/osx/SDLMain.m
${OSX_RESOURCE_FILES}
)
elseif (WIN32)
set(src_sys_base
sys/cpu.cpp
sys/threads.cpp
sys/glimp.cpp
sys/events.cpp
sys/sys_local.cpp
sys/win32/win_cpu.cpp
sys/win32/win_input.cpp
sys/win32/win_main.cpp
sys/win32/win_net.cpp
sys/win32/win_shared.cpp
sys/win32/win_syscon.cpp
sys/win32/SDL_win32_main.c
)
set(src_sys_core
${src_stub_util}
)
else()
set(src_sys_base
sys/cpu.cpp
sys/threads.cpp
sys/events.cpp
sys/sys_local.cpp
sys/posix/posix_net.cpp
sys/posix/posix_signal.cpp
sys/posix/posix_main.cpp
sys/linux/main.cpp
)
set(src_sys_core
${src_stub_util}
sys/glimp.cpp
)
endif()
include_directories(${CMAKE_BINARY_DIR})
include_directories(${CMAKE_SOURCE_DIR})
add_library(idlib STATIC ${src_idlib})
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT MINGW)
set_target_properties(idlib PROPERTIES COMPILE_FLAGS "-fPIC")
endif()
if (CORE)
add_executable(dhewm3 WIN32 MACOSX_BUNDLE
${src_core}
${src_sys_base}
${src_sys_core}
)
set_target_properties(dhewm3 PROPERTIES COMPILE_DEFINITIONS "__DOOM_DLL__")
set_target_properties(dhewm3 PROPERTIES LINK_FLAGS "${ldflags}")
set_target_properties(dhewm3 PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${PROJECT_SOURCE_DIR}/sys/osx/Info.plist)
target_link_libraries(dhewm3
idlib
${OPENGL_gl_LIBRARY}
${OPENAL_LIBRARY}
${OGG_LIBRARIES}
${VORBISFILE_LIBRARIES}
${VORBIS_LIBRARIES}
${CURL_LIBRARY}
${JPEG_LIBRARY}
${SDL_LIBRARY}
${sys_libs}
)
if (UNIX)
install(TARGETS dhewm3 RUNTIME DESTINATION bin)
endif()
endif()
if (DEDICATED)
add_executable(dhewm3ded WIN32 MACOSX_BUNDLE
${src_core}
${src_stub_openal}
${src_stub_gl}
${src_stub_util}
${src_sys_base}
${src_sys_dedicated}
)
set_target_properties(dhewm3ded PROPERTIES COMPILE_DEFINITIONS "ID_DEDICATED;__DOOM_DLL__")
set_target_properties(dhewm3ded PROPERTIES LINK_FLAGS "${ldflags}")
target_link_libraries(dhewm3ded
idlib
${VORBISFILE_LIBRARIES}
${VORBIS_LIBRARIES}
${CURL_LIBRARY}
${JPEG_LIBRARY}
${SDL_LIBRARY}
${sys_libs}
)
if (UNIX)
install(TARGETS dhewm3ded RUNTIME DESTINATION bin)
endif()
endif()
if (GAME)
add_library(game SHARED ${src_game})
set_target_properties(game PROPERTIES PREFIX "")
set_target_properties(game PROPERTIES COMPILE_DEFINITIONS "GAME_DLL")
set_target_properties(game PROPERTIES COMPILE_FLAGS "-I${CMAKE_SOURCE_DIR}/game")
set_target_properties(game PROPERTIES LINK_FLAGS "${ldflags}")
set_target_properties(game PROPERTIES INSTALL_NAME_DIR "@executable_path")
set_target_properties(game PROPERTIES OUTPUT_NAME "game${gamesuffix}")
set_target_properties(game PROPERTIES LIBRARY_OUTPUT_DIRECTORY "base")
target_link_libraries(game idlib)
if (UNIX)
install(TARGETS game LIBRARY DESTINATION share/dhewm3/base)
endif()
endif()
if (D3XP)
add_library(d3xp SHARED ${src_d3xp})
set_target_properties(d3xp PROPERTIES PREFIX "")
set_target_properties(d3xp PROPERTIES COMPILE_DEFINITIONS "GAME_DLL;_D3XP;CTF")
set_target_properties(d3xp PROPERTIES COMPILE_FLAGS "-I${CMAKE_SOURCE_DIR}/d3xp")
set_target_properties(d3xp PROPERTIES LINK_FLAGS "${ldflags}")
set_target_properties(d3xp PROPERTIES INSTALL_NAME_DIR "@executable_path")
set_target_properties(d3xp PROPERTIES OUTPUT_NAME "game${gamesuffix}")
set_target_properties(d3xp PROPERTIES LIBRARY_OUTPUT_DIRECTORY "d3xp")
target_link_libraries(d3xp idlib)
if (UNIX)
install(TARGETS game LIBRARY DESTINATION share/dhewm3/d3xp)
endif()
endif()
if (MODS)
add_subdirectory(mods)
endif()