Add a CMake build system

Tested on FreeBSD, Linux, and a ghetto rigged OSX i686 cross
compiler.

Find[OGG|Vorbis|VorbisFile].cmake borrowed from osgAudio
This commit is contained in:
dhewg 2011-12-12 19:15:16 +01:00
parent 41a1122a82
commit 5052f42c9e
4 changed files with 986 additions and 0 deletions

729
neo/CMakeLists.txt Normal file
View file

@ -0,0 +1,729 @@
project(doom3)
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
# TARGET_DEMO -DID_DEMO_BUILD
# 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
# ID_MCHECK -DID_MCHECK
# don't add these as options at all
# ALSA remove all sound backends except openal
# OPENAL will always be enabled
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/sys/cmake")
set(CMAKE_SKIP_RPATH ON CACHE BOOL "Skip RPATH" FORCE)
include(CheckCCompilerFlag)
option(CORE "Build the core" ON)
option(GAME "Build the base game code" ON)
option(D3XP "Build the d3xp game code" OFF)
option(DEDICATED "Build the dedicated server" OFF)
option(X86 "Cross compile for x86 (only applicable on x86_64)" OFF)
option(CURL "Enable usage of libcurl for http/ftp downloads" 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()
# 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 "RelWithDebInfo")
endif()
# libs
find_package(JPEG REQUIRED)
include_directories(${JPEG_INCLUDE_DIR})
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})
if (UNIX AND NOT APPLE)
find_package(X11 REQUIRED)
add_definitions(-DXTHREADS)
include_directories(${X11_INCLUDE_DIR})
if (os MATCHES ".*bsd" OR os STREQUAL "dragonfly")
set(Xxf86vm /usr/local/lib/libXxf86vm.so)
else()
set(Xxf86vm Xxf86vm)
endif()
endif()
if (CURL)
find_package(CURL REQUIRED)
add_definitions(-DID_ENABLE_CURL=1)
include_directories(${CURL_INCLUDE_DIR})
else()
add_definitions(-DID_ENABLE_CURL=0)
endif()
add_definitions(-DNO_ALSA)
# compiler specific flags
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
add_definitions(-pipe)
add_definitions(-Wall)
if (NOT CMAKE_CROSSCOMPILING AND ONATIVE)
add_definitions(-march=native)
elseif (NOT APPLE AND cpu STREQUAL "x86")
add_definitions(-march=pentium3)
endif()
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions(-g)
add_definitions(-D_DEBUG)
add_definitions(-O1)
elseif (CMAKE_BUILD_TYPE STREQUAL "DebugAll")
add_definitions(-g)
add_definitions(-ggdb)
add_definitions(-D_DEBUG)
elseif (CMAKE_BUILD_TYPE STREQUAL "Release")
add_definitions(-O3)
add_definitions(-ffast-math)
add_definitions(-fno-unsafe-math-optimizations)
add_definitions(-fomit-frame-pointer)
elseif (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
add_definitions(-g)
add_definitions(-O3)
add_definitions(-ffast-math)
add_definitions(-fno-unsafe-math-optimizations)
add_definitions(-fomit-frame-pointer)
elseif (CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
add_definitions(-Os)
add_definitions(-ffast-math)
add_definitions(-fno-unsafe-math-optimizations)
add_definitions(-fomit-frame-pointer)
else()
message(FATAL_ERROR "Unknown build type")
endif()
add_definitions(-fno-strict-aliasing)
CHECK_C_COMPILER_FLAG("-fvisibility=hidden" cc_has_fvisibility)
if (cc_has_fvisibility)
add_definitions(-fvisibility=hidden)
endif()
add_definitions(-Wno-unknown-pragmas)
# TODO fix these warnings
add_definitions(-Wno-sign-compare)
add_definitions(-Wno-switch)
add_definitions(-Wno-format-security)
CHECK_C_COMPILER_FLAG("-Woverloaded-virtual" cc_has_Woverload_virtual)
if (cc_has_Woverload_virtual)
add_definitions(-Woverloaded-virtual)
endif()
if (APPLE)
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_C_COMPILER_FLAG("-arch i386" cc_has_arch_i386)
if (cc_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_C_COMPILER_FLAG("-arch ppc" cc_has_arch_ppc)
if (cc_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 OpenAL -framework CoreAudio -framework IOKit")
else()
if (cpu STREQUAL "x86")
CHECK_C_COMPILER_FLAG("-m32" cc_has_m32)
if (cc_has_m32)
add_definitions(-m32)
set(ldflags ${ldflags} "-m32")
endif()
endif()
set(sys_libs ${sys_libs} pthread)
if (os STREQUAL "linux")
set(sys_libs ${sys_libs} dl)
endif()
endif()
else()
message(FATAL_ERROR "Unsupported compiler")
endif()
message(STATUS "Building ${CMAKE_BUILD_TYPE} for ${os}.${cpu}")
set(src_renderer
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/cg_explicit.cpp
renderer/draw_arb.cpp
renderer/draw_arb2.cpp
renderer/draw_common.cpp
renderer/draw_exp_stub.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_typeinfo
TypeInfo/TypeInfoGen.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}
${src_typeinfo}
${src_idlib}
)
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(src_sys_base
sys/sys_local.cpp
sys/posix/posix_net.cpp
sys/posix/posix_signal.cpp
sys/posix/posix_threads.cpp
sys/posix/posix_main.cpp
)
set(src_sys_core
sys/posix/posix_input.cpp
sys/osx/PickMonitor.cpp
sys/osx/PreferencesDialog.cpp
sys/osx/macosx_guids.cpp
sys/osx/macosx_sound.cpp
sys/osx/DOOMController.mm
sys/osx/macosx_event.mm
sys/osx/macosx_glimp.mm
sys/osx/macosx_misc.mm
# sys/osx/macosx_utils.mm
# sys/osx/macosx_sys.mm
)
else()
set(src_sys_base
sys/sys_local.cpp
sys/posix/posix_net.cpp
sys/posix/posix_signal.cpp
sys/posix/posix_threads.cpp
sys/posix/posix_main.cpp
sys/linux/sound.cpp
sys/linux/main.cpp
)
set(src_sys_core
${src_stub_util}
sys/posix/posix_input.cpp
sys/linux/glimp.cpp
sys/linux/input.cpp
sys/linux/libXNVCtrl/NVCtrl.c
)
endif()
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
if (CORE)
add_executable(doom3.${cpu}
${src_core}
${src_sys_base}
${src_sys_core}
)
set_target_properties(doom3.${cpu} PROPERTIES COMPILE_DEFINITIONS "__DOOM_DLL__")
set_target_properties(doom3.${cpu} PROPERTIES LINK_FLAGS "${ldflags}")
target_link_libraries(doom3.${cpu}
${X11_X11_LIB} ${X11_Xext_LIB} ${Xxf86vm}
${OPENGL_gl_LIBRARY}
${OPENAL_LIBRARY}
${OGG_LIBRARIES}
${VORBISFILE_LIBRARIES}
${VORBIS_LIBRARIES}
${CURL_LIBRARY}
${JPEG_LIBRARY}
${sys_libs}
)
endif()
if (DEDICATED)
add_executable(doom3ded.${cpu}
${src_core}
${src_stub_openal}
${src_stub_gl}
${src_stub_util}
${src_sys_base}
${src_sys_dedicated}
)
set_target_properties(doom3ded.${cpu} PROPERTIES COMPILE_DEFINITIONS "ID_DEDICATED;__DOOM_DLL__")
set_target_properties(doom3ded.${cpu} PROPERTIES LINK_FLAGS "${ldflags}")
target_link_libraries(doom3ded.${cpu}
${VORBISFILE_LIBRARIES}
${VORBIS_LIBRARIES}
${CURL_LIBRARY}
${JPEG_LIBRARY}
${sys_libs}
)
endif()
if (GAME)
add_library(game${cpu} SHARED ${src_game} ${src_idlib})
set_target_properties(game${cpu} PROPERTIES PREFIX "")
set_target_properties(game${cpu} PROPERTIES COMPILE_DEFINITIONS "GAME_DLL")
set_target_properties(game${cpu} PROPERTIES LINK_FLAGS "${ldflags}")
set_target_properties(game${cpu} PROPERTIES INSTALL_NAME_DIR "@executable_path")
endif()
if (D3XP)
add_library(game${cpu}-d3xp SHARED ${src_d3xp} ${src_idlib})
set_target_properties(game${cpu}-d3xp PROPERTIES PREFIX "")
set_target_properties(game${cpu}-d3xp PROPERTIES COMPILE_DEFINITIONS "GAME_DLL;_D3XP;CTF")
set_target_properties(game${cpu}-d3xp PROPERTIES LINK_FLAGS "${ldflags}")
set_target_properties(game${cpu}-d3xp PROPERTIES INSTALL_NAME_DIR "@executable_path")
endif()

View file

@ -0,0 +1,83 @@
# Locate OGG
# This module defines XXX_FOUND, XXX_INCLUDE_DIRS and XXX_LIBRARIES standard variables
#
# $OGGDIR is an environment variable that would
# correspond to the ./configure --prefix=$OGGDIR
# used in building OGG.
SET(OGG_SEARCH_PATHS
~/Library/Frameworks
/Library/Frameworks
/usr/local
/usr
/sw # Fink
/opt/local # DarwinPorts
/opt/csw # Blastwave
/opt
)
SET(MSVC_YEAR_NAME)
IF (MSVC_VERSION GREATER 1599) # >= 1600
SET(MSVC_YEAR_NAME VS2010)
ELSEIF(MSVC_VERSION GREATER 1499) # >= 1500
SET(MSVC_YEAR_NAME VS2008)
ELSEIF(MSVC_VERSION GREATER 1399) # >= 1400
SET(MSVC_YEAR_NAME VS2005)
ELSEIF(MSVC_VERSION GREATER 1299) # >= 1300
SET(MSVC_YEAR_NAME VS2003)
ELSEIF(MSVC_VERSION GREATER 1199) # >= 1200
SET(MSVC_YEAR_NAME VS6)
ENDIF()
FIND_PATH(OGG_INCLUDE_DIR
NAMES ogg/ogg.h ogg/os_types.h
HINTS
$ENV{OGGDIR}
$ENV{OGG_PATH}
PATH_SUFFIXES include
PATHS ${OGG_SEARCH_PATHS}
)
FIND_LIBRARY(OGG_LIBRARY
NAMES ogg libogg
HINTS
$ENV{OGGDIR}
$ENV{OGG_PATH}
PATH_SUFFIXES lib lib64 win32/Dynamic_Release "Win32/${MSVC_YEAR_NAME}/x64/Release" "Win32/${MSVC_YEAR_NAME}/Win32/Release"
PATHS ${OGG_SEARCH_PATHS}
)
# First search for d-suffixed libs
FIND_LIBRARY(OGG_LIBRARY_DEBUG
NAMES oggd ogg_d liboggd libogg_d
HINTS
$ENV{OGGDIR}
$ENV{OGG_PATH}
PATH_SUFFIXES lib lib64 win32/Dynamic_Debug "Win32/${MSVC_YEAR_NAME}/x64/Debug" "Win32/${MSVC_YEAR_NAME}/Win32/Debug"
PATHS ${OGG_SEARCH_PATHS}
)
IF(NOT OGG_LIBRARY_DEBUG)
# Then search for non suffixed libs if necessary, but only in debug dirs
FIND_LIBRARY(OGG_LIBRARY_DEBUG
NAMES ogg libogg
HINTS
$ENV{OGGDIR}
$ENV{OGG_PATH}
PATH_SUFFIXES win32/Dynamic_Debug "Win32/${MSVC_YEAR_NAME}/x64/Debug" "Win32/${MSVC_YEAR_NAME}/Win32/Debug"
PATHS ${OGG_SEARCH_PATHS}
)
ENDIF()
IF(OGG_LIBRARY)
IF(OGG_LIBRARY_DEBUG)
SET(OGG_LIBRARIES optimized "${OGG_LIBRARY}" debug "${OGG_LIBRARY_DEBUG}")
ELSE()
SET(OGG_LIBRARIES "${OGG_LIBRARY}") # Could add "general" keyword, but it is optional
ENDIF()
ENDIF()
# handle the QUIETLY and REQUIRED arguments and set XXX_FOUND to TRUE if all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OGG DEFAULT_MSG OGG_LIBRARIES OGG_INCLUDE_DIR)

View file

@ -0,0 +1,83 @@
# Locate Vorbis
# This module defines XXX_FOUND, XXX_INCLUDE_DIRS and XXX_LIBRARIES standard variables
#
# $VORBISDIR is an environment variable that would
# correspond to the ./configure --prefix=$VORBISDIR
# used in building Vorbis.
SET(VORBIS_SEARCH_PATHS
~/Library/Frameworks
/Library/Frameworks
/usr/local
/usr
/sw # Fink
/opt/local # DarwinPorts
/opt/csw # Blastwave
/opt
)
SET(MSVC_YEAR_NAME)
IF (MSVC_VERSION GREATER 1599) # >= 1600
SET(MSVC_YEAR_NAME VS2010)
ELSEIF(MSVC_VERSION GREATER 1499) # >= 1500
SET(MSVC_YEAR_NAME VS2008)
ELSEIF(MSVC_VERSION GREATER 1399) # >= 1400
SET(MSVC_YEAR_NAME VS2005)
ELSEIF(MSVC_VERSION GREATER 1299) # >= 1300
SET(MSVC_YEAR_NAME VS2003)
ELSEIF(MSVC_VERSION GREATER 1199) # >= 1200
SET(MSVC_YEAR_NAME VS6)
ENDIF()
FIND_PATH(VORBIS_INCLUDE_DIR
NAMES vorbis/codec.h
HINTS
$ENV{VORBISDIR}
$ENV{VORBIS_PATH}
PATH_SUFFIXES include
PATHS ${VORBIS_SEARCH_PATHS}
)
FIND_LIBRARY(VORBIS_LIBRARY
NAMES vorbis libvorbis
HINTS
$ENV{VORBISDIR}
$ENV{VORBIS_PATH}
PATH_SUFFIXES lib lib64 win32/Vorbis_Dynamic_Release "Win32/${MSVC_YEAR_NAME}/x64/Release" "Win32/${MSVC_YEAR_NAME}/Win32/Release"
PATHS ${VORBIS_SEARCH_PATHS}
)
# First search for d-suffixed libs
FIND_LIBRARY(VORBIS_LIBRARY_DEBUG
NAMES vorbisd vorbis_d libvorbisd libvorbis_d
HINTS
$ENV{VORBISDIR}
$ENV{VORBIS_PATH}
PATH_SUFFIXES lib lib64 win32/Vorbis_Dynamic_Debug "Win32/${MSVC_YEAR_NAME}/x64/Debug" "Win32/${MSVC_YEAR_NAME}/Win32/Debug"
PATHS ${VORBIS_SEARCH_PATHS}
)
IF(NOT VORBIS_LIBRARY_DEBUG)
# Then search for non suffixed libs if necessary, but only in debug dirs
FIND_LIBRARY(VORBIS_LIBRARY_DEBUG
NAMES vorbis libvorbis
HINTS
$ENV{VORBISDIR}
$ENV{VORBIS_PATH}
PATH_SUFFIXES win32/Vorbis_Dynamic_Debug "Win32/${MSVC_YEAR_NAME}/x64/Debug" "Win32/${MSVC_YEAR_NAME}/Win32/Debug"
PATHS ${VORBIS_SEARCH_PATHS}
)
ENDIF()
IF(VORBIS_LIBRARY)
IF(VORBIS_LIBRARY_DEBUG)
SET(VORBIS_LIBRARIES optimized "${VORBIS_LIBRARY}" debug "${VORBIS_LIBRARY_DEBUG}")
ELSE()
SET(VORBIS_LIBRARIES "${VORBIS_LIBRARY}") # Could add "general" keyword, but it is optional
ENDIF()
ENDIF()
# handle the QUIETLY and REQUIRED arguments and set XXX_FOUND to TRUE if all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(VORBIS DEFAULT_MSG VORBIS_LIBRARIES VORBIS_INCLUDE_DIR)

View file

@ -0,0 +1,91 @@
# Locate VorbisFile
# This module defines XXX_FOUND, XXX_INCLUDE_DIRS and XXX_LIBRARIES standard variables
#
# $VORBISDIR is an environment variable that would
# correspond to the ./configure --prefix=$VORBISDIR
# used in building Vorbis.
SET(VORBISFILE_SEARCH_PATHS
~/Library/Frameworks
/Library/Frameworks
/usr/local
/usr
/sw # Fink
/opt/local # DarwinPorts
/opt/csw # Blastwave
/opt
)
SET(MSVC_YEAR_NAME)
IF (MSVC_VERSION GREATER 1599) # >= 1600
SET(MSVC_YEAR_NAME VS2010)
ELSEIF(MSVC_VERSION GREATER 1499) # >= 1500
SET(MSVC_YEAR_NAME VS2008)
ELSEIF(MSVC_VERSION GREATER 1399) # >= 1400
SET(MSVC_YEAR_NAME VS2005)
ELSEIF(MSVC_VERSION GREATER 1299) # >= 1300
SET(MSVC_YEAR_NAME VS2003)
ELSEIF(MSVC_VERSION GREATER 1199) # >= 1200
SET(MSVC_YEAR_NAME VS6)
ENDIF()
FIND_PATH(VORBISFILE_INCLUDE_DIR
NAMES vorbis/vorbisfile.h
HINTS
$ENV{VORBISFILEDIR}
$ENV{VORBISFILE_PATH}
$ENV{VORBISDIR}
$ENV{VORBIS_PATH}
PATH_SUFFIXES include
PATHS ${VORBISFILE_SEARCH_PATHS}
)
FIND_LIBRARY(VORBISFILE_LIBRARY
NAMES vorbisfile libvorbisfile
HINTS
$ENV{VORBISFILEDIR}
$ENV{VORBISFILE_PATH}
$ENV{VORBISDIR}
$ENV{VORBIS_PATH}
PATH_SUFFIXES lib lib64 win32/VorbisFile_Dynamic_Release "Win32/${MSVC_YEAR_NAME}/x64/Release" "Win32/${MSVC_YEAR_NAME}/Win32/Release"
PATHS ${VORBISFILE_SEARCH_PATHS}
)
# First search for d-suffixed libs
FIND_LIBRARY(VORBISFILE_LIBRARY_DEBUG
NAMES vorbisfiled vorbisfile_d libvorbisfiled libvorbisfile_d
HINTS
$ENV{VORBISFILEDIR}
$ENV{VORBISFILE_PATH}
$ENV{VORBISDIR}
$ENV{VORBIS_PATH}
PATH_SUFFIXES lib lib64 win32/VorbisFile_Dynamic_Debug "Win32/${MSVC_YEAR_NAME}/x64/Debug" "Win32/${MSVC_YEAR_NAME}/Win32/Debug"
PATHS ${VORBISFILE_SEARCH_PATHS}
)
IF(NOT VORBISFILE_LIBRARY_DEBUG)
# Then search for non suffixed libs if necessary, but only in debug dirs
FIND_LIBRARY(VORBISFILE_LIBRARY_DEBUG
NAMES vorbisfile libvorbisfile
HINTS
$ENV{VORBISFILEDIR}
$ENV{VORBISFILE_PATH}
$ENV{VORBISDIR}
$ENV{VORBIS_PATH}
PATH_SUFFIXES win32/VorbisFile_Dynamic_Debug "Win32/${MSVC_YEAR_NAME}/x64/Debug" "Win32/${MSVC_YEAR_NAME}/Win32/Debug"
PATHS ${VORBISFILE_SEARCH_PATHS}
)
ENDIF()
IF(VORBISFILE_LIBRARY)
IF(VORBISFILE_LIBRARY_DEBUG)
SET(VORBISFILE_LIBRARIES optimized "${VORBISFILE_LIBRARY}" debug "${VORBISFILE_LIBRARY_DEBUG}")
ELSE()
SET(VORBISFILE_LIBRARIES "${VORBISFILE_LIBRARY}") # Could add "general" keyword, but it is optional
ENDIF()
ENDIF()
# handle the QUIETLY and REQUIRED arguments and set XXX_FOUND to TRUE if all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(VORBISFILE DEFAULT_MSG VORBISFILE_LIBRARIES VORBISFILE_INCLUDE_DIR)