2016-02-06 02:19:29 +00:00
|
|
|
cmake_minimum_required( VERSION 2.8.7 )
|
2014-06-15 18:36:49 +00:00
|
|
|
|
2017-04-23 09:23:56 +00:00
|
|
|
include(precompiled_headers)
|
2016-04-10 11:08:54 +00:00
|
|
|
|
2014-06-15 18:36:49 +00:00
|
|
|
if( COMMAND cmake_policy )
|
|
|
|
cmake_policy( SET CMP0003 NEW )
|
2016-02-20 10:38:30 +00:00
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
|
|
|
include( CheckCXXSourceCompiles )
|
|
|
|
include( CheckFunctionExists )
|
|
|
|
include( CheckCXXCompilerFlag )
|
2016-10-02 20:05:26 +00:00
|
|
|
include( CheckIncludeFile )
|
|
|
|
include( CheckIncludeFiles )
|
2014-10-18 09:33:39 +00:00
|
|
|
include( CheckLibraryExists )
|
2014-06-15 18:36:49 +00:00
|
|
|
include( FindPkgConfig )
|
2017-04-23 09:34:48 +00:00
|
|
|
include( TargetArch )
|
2014-06-15 18:36:49 +00:00
|
|
|
|
2014-06-25 23:23:41 +00:00
|
|
|
if( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE )
|
2014-06-15 18:36:49 +00:00
|
|
|
option( NO_STRIP "Do not strip Release or MinSizeRel builds" )
|
|
|
|
# At least some versions of Xcode fail if you strip with the linker
|
|
|
|
# instead of the separate strip utility.
|
|
|
|
if( APPLE )
|
|
|
|
set( NO_STRIP ON )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
2014-01-18 23:10:48 +00:00
|
|
|
option( DYN_FLUIDSYNTH "Dynamically load fluidsynth" ON )
|
2016-02-11 12:07:01 +00:00
|
|
|
option( DYN_OPENAL "Dynamically load OpenAL" ON )
|
2017-04-17 15:05:09 +00:00
|
|
|
option( DYN_SNDFILE "Dynamically load libsndfile" ON )
|
|
|
|
option( DYN_MPG123 "Dynamically load libmpg123" ON )
|
2014-06-15 18:36:49 +00:00
|
|
|
|
2014-12-10 20:11:26 +00:00
|
|
|
if( APPLE )
|
|
|
|
option( OSX_COCOA_BACKEND "Use native Cocoa backend instead of SDL" ON )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-08-03 09:38:56 +00:00
|
|
|
|
2017-04-23 09:34:48 +00:00
|
|
|
target_architecture(ZDOOM_TARGET_ARCH)
|
|
|
|
|
|
|
|
if( ${ZDOOM_TARGET_ARCH} MATCHES "x86_64" )
|
2014-06-15 18:36:49 +00:00
|
|
|
set( X64 64 )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
|
|
|
|
2014-01-18 23:10:48 +00:00
|
|
|
if( NOT ZDOOM_LIBS )
|
|
|
|
set( ZDOOM_LIBS "" )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-01-18 23:10:48 +00:00
|
|
|
|
2014-06-15 18:36:49 +00:00
|
|
|
if( WIN32 )
|
|
|
|
if( X64 )
|
|
|
|
set( WIN_TYPE Win64 )
|
|
|
|
set( XBITS x64 )
|
2016-02-06 02:19:29 +00:00
|
|
|
else()
|
2014-06-15 18:36:49 +00:00
|
|
|
set( WIN_TYPE Win32 )
|
|
|
|
set( XBITS x86 )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2018-02-23 08:21:42 +00:00
|
|
|
|
2014-06-15 18:36:49 +00:00
|
|
|
add_definitions( -D_WIN32 )
|
2018-02-23 08:21:42 +00:00
|
|
|
|
|
|
|
|
2017-02-16 20:01:52 +00:00
|
|
|
if( ( MSVC14 AND NOT CMAKE_GENERATOR_TOOLSET STREQUAL "v140_xp" ) OR # For VS 2015.
|
2017-04-16 23:06:54 +00:00
|
|
|
( MSVC15 AND NOT CMAKE_GENERATOR_TOOLSET STREQUAL "v141_xp" ) ) # For VS 2017.
|
2017-02-16 20:01:52 +00:00
|
|
|
# for modern Windows SDKs the DirectX headers should be available by default.
|
|
|
|
set( DX_dinput8_LIBRARY dinput8 )
|
2016-09-14 00:10:06 +00:00
|
|
|
else()
|
2018-02-23 08:21:42 +00:00
|
|
|
|
2017-02-16 20:01:52 +00:00
|
|
|
find_path( D3D_INCLUDE_DIR d3d9.h
|
|
|
|
PATHS ENV DXSDK_DIR
|
|
|
|
PATH_SUFFIXES Include )
|
|
|
|
if( NOT D3D_INCLUDE_DIR )
|
|
|
|
# Modern versions of the Windows SDK include d3d9.h. Unfortunately,
|
|
|
|
# CMake cannot find this file via find_path, so we check for it using
|
|
|
|
# CHECK_INCLUDE_FILE.
|
|
|
|
CHECK_INCLUDE_FILE( d3d9.h D3D9_H_FOUND )
|
|
|
|
if ( NOT D3D9_H_FOUND )
|
|
|
|
message( SEND_ERROR "Could not find DirectX 9 header files" )
|
|
|
|
endif()
|
|
|
|
else()
|
|
|
|
include_directories( ${D3D_INCLUDE_DIR} )
|
|
|
|
endif()
|
2018-02-23 08:21:42 +00:00
|
|
|
|
2017-02-16 20:01:52 +00:00
|
|
|
find_path( XINPUT_INCLUDE_DIR xinput.h
|
|
|
|
PATHS ENV DXSDK_DIR
|
|
|
|
PATH_SUFFIXES Include )
|
|
|
|
if( NOT XINPUT_INCLUDE_DIR )
|
|
|
|
# Modern versions of the Windows SDK include xinput.h. Unfortunately,
|
|
|
|
# CMake cannot find this file via find_path, so we check for it using
|
|
|
|
# CHECK_INCLUDE_FILES. windows.h must be included before xinput.h.
|
|
|
|
CHECK_INCLUDE_FILES( "windows.h;xinput.h" XINPUT_H_FOUND )
|
|
|
|
if( NOT XINPUT_H_FOUND )
|
|
|
|
message( WARNING "Could not find xinput.h. XInput will be disabled." )
|
|
|
|
add_definitions( -DNO_XINPUT )
|
|
|
|
endif()
|
|
|
|
else()
|
|
|
|
include_directories( ${XINPUT_INCLUDE_DIR} )
|
2016-10-02 20:05:26 +00:00
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
2017-02-16 20:01:52 +00:00
|
|
|
find_library( DX_dinput8_LIBRARY dinput8
|
|
|
|
PATHS ENV DXSDK_DIR
|
|
|
|
PATH_SUFFIXES Lib Lib/${XBITS} )
|
|
|
|
|
|
|
|
# Modern versions of the Windows SDK include dinput8.lib. Unfortunately,
|
|
|
|
# CMake cannot find these libraries via find_library.
|
|
|
|
if( NOT DX_dinput8_LIBRARY )
|
|
|
|
# If we got this far, assume dinput8.lib is in the system library path.
|
|
|
|
set( DX_dinput8_LIBRARY dinput8 )
|
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
2016-09-14 00:10:06 +00:00
|
|
|
set( ZDOOM_LIBS
|
2017-01-21 10:50:53 +00:00
|
|
|
opengl32
|
2014-06-15 18:36:49 +00:00
|
|
|
wsock32
|
|
|
|
winmm
|
2016-09-14 00:10:06 +00:00
|
|
|
"${DX_dinput8_LIBRARY}"
|
2014-06-15 18:36:49 +00:00
|
|
|
ole32
|
|
|
|
user32
|
|
|
|
gdi32
|
|
|
|
comctl32
|
|
|
|
comdlg32
|
|
|
|
ws2_32
|
|
|
|
setupapi
|
2016-11-24 05:47:53 +00:00
|
|
|
oleaut32 )
|
|
|
|
|
|
|
|
if( NOT ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE )
|
|
|
|
set( ZDOOM_LIBS ${ZDOOM_LIBS} DelayImp )
|
|
|
|
endif()
|
|
|
|
|
2016-02-06 02:19:29 +00:00
|
|
|
else()
|
2014-06-15 18:36:49 +00:00
|
|
|
if( APPLE )
|
|
|
|
set( NO_GTK ON )
|
2016-11-12 23:32:09 +00:00
|
|
|
set( DYN_GTK OFF )
|
2016-04-09 07:51:19 +00:00
|
|
|
|
|
|
|
# Prevent inclusion of fp.h and FixMath.h from Carbon framework
|
|
|
|
# Declarations from these files are not used but cause the following conflicts:
|
|
|
|
# - redefinition of 'FixedToFloat' and 'FloatToFixed' macros
|
|
|
|
# - redefinition of 'pi' as different kind of symbol
|
|
|
|
add_definitions( -D__FP__ -D__FIXMATH__ )
|
2016-02-06 02:19:29 +00:00
|
|
|
else()
|
2014-06-15 18:36:49 +00:00
|
|
|
option( NO_GTK "Disable GTK+ dialogs (Not applicable to Windows)" )
|
2016-11-12 23:32:09 +00:00
|
|
|
option( DYN_GTK "Load GTK+ at runtime instead of compile time" ON )
|
2014-06-15 18:36:49 +00:00
|
|
|
|
|
|
|
# Use GTK+ for the IWAD picker, if available.
|
|
|
|
if( NOT NO_GTK )
|
2016-11-12 23:32:09 +00:00
|
|
|
pkg_check_modules( GTK3 gtk+-3.0 )
|
|
|
|
if( GTK3_FOUND )
|
|
|
|
if( NOT DYN_GTK )
|
|
|
|
set( ZDOOM_LIBS ${ZDOOM_LIBS} ${GTK3_LIBRARIES} )
|
|
|
|
endif()
|
|
|
|
include_directories( ${GTK3_INCLUDE_DIRS} )
|
|
|
|
link_directories( ${GTK3_LIBRARY_DIRS} )
|
2016-02-06 02:19:29 +00:00
|
|
|
else()
|
2016-11-12 23:32:09 +00:00
|
|
|
pkg_check_modules( GTK2 gtk+-2.0 )
|
|
|
|
if( GTK2_FOUND )
|
|
|
|
if( NOT DYN_GTK )
|
|
|
|
set( ZDOOM_LIBS ${ZDOOM_LIBS} ${GTK2_LIBRARIES} )
|
|
|
|
endif()
|
|
|
|
include_directories( ${GTK2_INCLUDE_DIRS} )
|
|
|
|
link_directories( ${GTK2_LIBRARY_DIRS} )
|
|
|
|
else()
|
|
|
|
set( NO_GTK ON )
|
|
|
|
endif()
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
endif()
|
2018-02-23 08:21:42 +00:00
|
|
|
|
2014-06-15 18:36:49 +00:00
|
|
|
if( NO_GTK )
|
2016-11-12 23:32:09 +00:00
|
|
|
add_definitions( -DNO_GTK )
|
|
|
|
elseif( DYN_GTK )
|
|
|
|
add_definitions( -DDYN_GTK=1 )
|
|
|
|
else()
|
|
|
|
add_definitions( -DDYN_GTK=0 )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2016-11-12 23:32:09 +00:00
|
|
|
|
2014-12-16 21:20:54 +00:00
|
|
|
# Non-Windows version also needs SDL except native OS X backend
|
2014-08-03 09:38:56 +00:00
|
|
|
if( NOT APPLE OR NOT OSX_COCOA_BACKEND )
|
2014-12-16 21:20:54 +00:00
|
|
|
find_package( SDL2 REQUIRED )
|
|
|
|
include_directories( "${SDL2_INCLUDE_DIR}" )
|
2014-12-08 23:46:10 +00:00
|
|
|
set( ZDOOM_LIBS ${ZDOOM_LIBS} "${SDL2_LIBRARY}" )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
|
|
|
find_path( FPU_CONTROL_DIR fpu_control.h )
|
|
|
|
if( FPU_CONTROL_DIR )
|
|
|
|
include_directories( ${FPU_CONTROL_DIR} )
|
|
|
|
add_definitions( -DHAVE_FPU_CONTROL )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
|
|
|
if( NOT NO_OPENAL )
|
2017-04-17 15:05:09 +00:00
|
|
|
if ( NOT DYN_OPENAL ) # DYN_OPENAL uses local copies of the headers.
|
|
|
|
find_package( OpenAL )
|
|
|
|
mark_as_advanced(CLEAR OPENAL_INCLUDE_DIR)
|
|
|
|
if( OPENAL_INCLUDE_DIR )
|
|
|
|
include_directories( ${OPENAL_INCLUDE_DIR} )
|
2016-02-11 12:07:01 +00:00
|
|
|
mark_as_advanced(CLEAR OPENAL_LIBRARY)
|
|
|
|
if( OPENAL_LIBRARY )
|
|
|
|
set( ZDOOM_LIBS ${OPENAL_LIBRARY} ${ZDOOM_LIBS} )
|
|
|
|
else()
|
|
|
|
set( NO_OPENAL ON )
|
|
|
|
endif()
|
2017-04-17 15:05:09 +00:00
|
|
|
else()
|
|
|
|
set( NO_OPENAL ON )
|
2016-02-11 12:07:01 +00:00
|
|
|
endif()
|
|
|
|
else()
|
2017-04-17 15:05:09 +00:00
|
|
|
add_definitions( -DDYN_OPENAL )
|
2016-02-11 12:07:01 +00:00
|
|
|
endif()
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
|
|
|
if( NO_OPENAL )
|
|
|
|
add_definitions( -DNO_OPENAL=1 )
|
|
|
|
|
2016-01-24 01:09:39 +00:00
|
|
|
set(MPG123_FOUND NO)
|
|
|
|
set(SNDFILE_FOUND NO)
|
2016-02-06 02:19:29 +00:00
|
|
|
else()
|
2016-01-24 01:09:39 +00:00
|
|
|
# Search for libSndFile
|
2014-06-19 11:13:42 +00:00
|
|
|
|
2017-04-17 15:05:09 +00:00
|
|
|
if ( NOT DYN_SNDFILE )
|
|
|
|
find_package( SndFile )
|
|
|
|
endif()
|
2014-06-19 11:13:42 +00:00
|
|
|
|
2016-01-24 01:09:39 +00:00
|
|
|
# Search for libmpg123
|
2014-06-19 13:34:40 +00:00
|
|
|
|
2017-04-17 15:05:09 +00:00
|
|
|
if ( NOT DYN_MPG123 )
|
|
|
|
find_package( MPG123 )
|
|
|
|
endif()
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-06-19 13:34:40 +00:00
|
|
|
|
2014-06-15 18:36:49 +00:00
|
|
|
# Search for FluidSynth
|
|
|
|
|
|
|
|
find_package( FluidSynth )
|
|
|
|
|
|
|
|
# Decide on SSE setup
|
|
|
|
|
|
|
|
set( SSE_MATTERS NO )
|
|
|
|
|
2014-01-18 23:10:48 +00:00
|
|
|
# with global use of SSE 2 we do not need special handling for selected files
|
|
|
|
if (NOT ZDOOM_USE_SSE2)
|
|
|
|
# SSE only matters on 32-bit targets. We check compiler flags to know if we can do it.
|
|
|
|
if( CMAKE_SIZEOF_VOID_P MATCHES "4" AND NOT CMAKE_OSX_ARCHITECTURES MATCHES ppc )
|
|
|
|
CHECK_CXX_COMPILER_FLAG( "-msse2 -mfpmath=sse" CAN_DO_MFPMATH )
|
|
|
|
CHECK_CXX_COMPILER_FLAG( -arch:SSE2 CAN_DO_ARCHSSE2 )
|
|
|
|
if( CAN_DO_MFPMATH )
|
|
|
|
set( SSE1_ENABLE "-msse -mfpmath=sse" )
|
|
|
|
set( SSE2_ENABLE "-msse2 -mfpmath=sse" )
|
|
|
|
set( SSE_MATTERS YES )
|
|
|
|
elseif( CAN_DO_ARCHSSE2 )
|
|
|
|
set( SSE1_ENABLE -arch:SSE )
|
|
|
|
set( SSE2_ENABLE -arch:SSE2 )
|
|
|
|
set( SSE_MATTERS YES )
|
2016-02-20 10:38:30 +00:00
|
|
|
endif()
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
2015-12-25 13:41:06 +00:00
|
|
|
if( X64 )
|
|
|
|
set( HAVE_MMX 1 )
|
|
|
|
else( X64 )
|
2016-01-08 08:18:16 +00:00
|
|
|
set( SAFE_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} )
|
2015-12-25 13:41:06 +00:00
|
|
|
|
|
|
|
if( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE )
|
2016-01-08 08:18:16 +00:00
|
|
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmmx")
|
2015-12-25 13:41:06 +00:00
|
|
|
endif( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE )
|
|
|
|
|
|
|
|
CHECK_CXX_SOURCE_COMPILES("#include <mmintrin.h>
|
|
|
|
int main(void) { __m64 v = _m_from_int(0); }"
|
|
|
|
HAVE_MMX)
|
|
|
|
|
2016-01-08 08:18:16 +00:00
|
|
|
set( CMAKE_CXX_FLAGS ${SAFE_CMAKE_CXX_FLAGS} )
|
2015-12-25 13:41:06 +00:00
|
|
|
endif( X64 )
|
|
|
|
|
2017-07-14 12:14:34 +00:00
|
|
|
CHECK_CXX_SOURCE_COMPILES("#include <ppl.h>
|
|
|
|
int main() { concurrency::parallel_for(0, 1, 1, [](int) { } ); }"
|
|
|
|
HAVE_PARALLEL_FOR)
|
|
|
|
|
|
|
|
if( NOT HAVE_PARALLEL_FOR )
|
|
|
|
CHECK_CXX_SOURCE_COMPILES("#include <dispatch/dispatch.h>
|
|
|
|
int main() { dispatch_apply(1, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(size_t) { }); }"
|
|
|
|
HAVE_DISPATCH_APPLY)
|
|
|
|
endif()
|
|
|
|
|
2017-03-09 23:08:09 +00:00
|
|
|
# Set up flags for MSVC
|
|
|
|
if (MSVC)
|
|
|
|
set( CMAKE_CXX_FLAGS "/MP ${CMAKE_CXX_FLAGS}" )
|
|
|
|
endif (MSVC)
|
|
|
|
|
2014-06-15 18:36:49 +00:00
|
|
|
# Set up flags for GCC
|
|
|
|
|
2014-06-25 23:23:41 +00:00
|
|
|
if( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE )
|
2014-06-15 18:36:49 +00:00
|
|
|
if( PROFILE )
|
|
|
|
set( CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -pg" )
|
|
|
|
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg" )
|
|
|
|
set( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -pg" )
|
|
|
|
set( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -pg" )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2016-02-27 07:20:34 +00:00
|
|
|
|
2014-06-15 18:36:49 +00:00
|
|
|
set( REL_CXX_FLAGS "-fno-rtti" )
|
2014-08-16 10:55:05 +00:00
|
|
|
if( NOT PROFILE AND NOT APPLE )
|
|
|
|
# On OS X frame pointers are required for exception handling, at least with Clang
|
2014-06-15 18:36:49 +00:00
|
|
|
set( REL_CXX_FLAGS "${REL_CXX_FLAGS} -fomit-frame-pointer" )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
set( CMAKE_CXX_FLAGS_RELEASE "${REL_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}" )
|
|
|
|
set( CMAKE_CXX_FLAGS_MINSIZEREL "${REL_CXX_FLAGS} ${CMAKE_CXX_FLAGS_MINSIZEREL}" )
|
|
|
|
set( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${REL_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}" )
|
|
|
|
|
2016-12-31 21:35:24 +00:00
|
|
|
# Support for the GCC/Clang sanitizers.
|
|
|
|
set( WITH_ASAN 0 CACHE BOOL "Enable the Address Sanitizer")
|
|
|
|
if( NOT CMAKE_COMPILER_IS_GNUCXX )
|
|
|
|
set( WITH_MSAN 0 CACHE BOOL "Enable the Memory Sanitizer")
|
|
|
|
endif( NOT CMAKE_COMPILER_IS_GNUCXX )
|
|
|
|
set( WITH_UBSAN 0 CACHE BOOL "Enable the Undefined Behavior Sanitizer")
|
|
|
|
if( WITH_MSAN )
|
|
|
|
if ( WITH_ASAN OR WITH_UBSAN )
|
|
|
|
message( SEND_ERROR "You can't use MSAN with either ASAN or UBSAN." )
|
|
|
|
endif ( WITH_ASAN OR WITH_UBSAN )
|
|
|
|
endif( WITH_MSAN )
|
|
|
|
|
|
|
|
set( SANITIZER_FLAG "" )
|
|
|
|
if( WITH_ASAN )
|
|
|
|
set( SANITIZER_FLAG "-fsanitize=address" )
|
|
|
|
if ( WITH_UBSAN )
|
|
|
|
set( SANITIZER_FLAG "${SANITIZER_FLAG},undefined" )
|
|
|
|
endif( WITH_UBSAN )
|
|
|
|
elseif( WITH_MSAN )
|
|
|
|
set( SANITIZER_FLAG "-fsanitize=memory" )
|
|
|
|
elseif( WITH_UBSAN )
|
|
|
|
set( SANITIZER_FLAG "-fsanitize=undefined" )
|
|
|
|
endif( WITH_ASAN )
|
|
|
|
|
|
|
|
set( CMAKE_CXX_FLAGS "${SANITIZER_FLAG} ${CMAKE_CXX_FLAGS}" )
|
|
|
|
set( CMAKE_C_FLAGS "${SANITIZER_FLAG} ${CMAKE_C_FLAGS}" )
|
|
|
|
|
2016-02-27 21:15:29 +00:00
|
|
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "4.5")
|
2016-02-06 02:19:29 +00:00
|
|
|
set( CMAKE_C_FLAGS "-Wno-unused-result ${CMAKE_C_FLAGS}" )
|
2016-01-25 04:03:59 +00:00
|
|
|
set( CMAKE_CXX_FLAGS "-Wno-unused-result ${CMAKE_CXX_FLAGS}" )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2016-08-07 18:55:16 +00:00
|
|
|
if( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
|
|
|
|
if( APPLE OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "3.6" )
|
|
|
|
set( CMAKE_CXX_FLAGS "-Wno-inconsistent-missing-override ${CMAKE_CXX_FLAGS}" )
|
|
|
|
endif()
|
2016-07-11 05:17:45 +00:00
|
|
|
endif()
|
2016-03-13 05:34:35 +00:00
|
|
|
set( CMAKE_C_FLAGS "-Wall -Wextra -Wno-unused -Wno-unused-parameter -Wno-missing-field-initializers -ffp-contract=off ${CMAKE_C_FLAGS}" )
|
|
|
|
set( CMAKE_CXX_FLAGS "-Wall -Wextra -Wno-unused -Wno-unused-parameter -Wno-missing-field-initializers -ffp-contract=off ${CMAKE_CXX_FLAGS}" )
|
2014-06-15 18:36:49 +00:00
|
|
|
|
2017-03-09 23:08:09 +00:00
|
|
|
# ARM processors (Raspberry Pi, et al) - enable ARM NEON support.
|
2017-03-25 05:15:17 +00:00
|
|
|
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
|
|
|
|
set (USE_ARMV8 0 CACHE BOOL "Use ARMv8 instructions - Raspberry Pi 3")
|
|
|
|
if (USE_ARMV8)
|
2017-10-25 13:31:37 +00:00
|
|
|
set( CMAKE_CXX_FLAGS "-mcpu=cortex-a53 -mfpu=neon-fp-armv8 -mtune=cortex-a53 -mhard-float -DNO_SSE ${CMAKE_CXX_FLAGS}" )
|
2017-03-25 05:15:17 +00:00
|
|
|
else ()
|
2017-10-25 13:31:37 +00:00
|
|
|
set( CMAKE_CXX_FLAGS "-mcpu=cortex-a7 -mfpu=neon-vfpv4 -mtune=cortex-a7 -mhard-float -DNO_SSE ${CMAKE_CXX_FLAGS}" )
|
2017-03-25 05:15:17 +00:00
|
|
|
endif ()
|
2017-03-09 23:08:09 +00:00
|
|
|
endif ()
|
|
|
|
|
2017-04-23 09:34:48 +00:00
|
|
|
if( NOT X64 AND NOT CAN_DO_MFPMATH )
|
|
|
|
set( CMAKE_C_FLAGS "-DNO_SSE ${CMAKE_CXX_FLAGS}" )
|
|
|
|
set( CMAKE_CXX_FLAGS "-DNO_SSE ${CMAKE_CXX_FLAGS}" )
|
|
|
|
endif()
|
|
|
|
|
2016-02-27 07:20:34 +00:00
|
|
|
# Use the highest C++ standard available since VS2015 compiles with C++14
|
|
|
|
# but we only require C++11. The recommended way to do this in CMake is to
|
|
|
|
# probably to use target_compile_features, but I don't feel like maintaining
|
|
|
|
# a list of features we use.
|
2016-03-13 05:34:35 +00:00
|
|
|
CHECK_CXX_COMPILER_FLAG( "-std=gnu++14" CAN_DO_CPP14 )
|
2016-02-27 07:20:34 +00:00
|
|
|
if ( CAN_DO_CPP14 )
|
2016-03-13 05:34:35 +00:00
|
|
|
set ( CMAKE_CXX_FLAGS "-std=gnu++14 ${CMAKE_CXX_FLAGS}" )
|
2016-02-27 07:20:34 +00:00
|
|
|
else ()
|
2016-03-13 05:34:35 +00:00
|
|
|
CHECK_CXX_COMPILER_FLAG( "-std=gnu++1y" CAN_DO_CPP1Y )
|
2016-02-27 07:20:34 +00:00
|
|
|
if ( CAN_DO_CPP1Y )
|
2016-03-13 05:34:35 +00:00
|
|
|
set ( CMAKE_CXX_FLAGS "-std=gnu++1y ${CMAKE_CXX_FLAGS}" )
|
2016-02-27 07:20:34 +00:00
|
|
|
else ()
|
2016-03-13 05:34:35 +00:00
|
|
|
CHECK_CXX_COMPILER_FLAG( "-std=gnu++11" CAN_DO_CPP11 )
|
2016-02-27 07:20:34 +00:00
|
|
|
if ( CAN_DO_CPP11 )
|
2016-03-13 05:34:35 +00:00
|
|
|
set ( CMAKE_CXX_FLAGS "-std=gnu++11 ${CMAKE_CXX_FLAGS}" )
|
2016-02-27 07:20:34 +00:00
|
|
|
else ()
|
2016-03-13 05:34:35 +00:00
|
|
|
CHECK_CXX_COMPILER_FLAG( "-std=gnu++0x" CAN_DO_CPP0X )
|
2016-02-27 07:20:34 +00:00
|
|
|
if ( CAN_DO_CPP0X )
|
2016-03-13 05:34:35 +00:00
|
|
|
set ( CMAKE_CXX_FLAGS "-std=gnu++0x ${CMAKE_CXX_FLAGS}" )
|
2016-02-27 07:20:34 +00:00
|
|
|
endif ()
|
|
|
|
endif ()
|
|
|
|
endif ()
|
|
|
|
endif ()
|
|
|
|
|
2016-07-11 05:17:45 +00:00
|
|
|
# With standard Apple tools -stdlib=libc++ needs to be specified in order to get
|
|
|
|
# C++11 support using SDKs 10.7 and 10.8.
|
|
|
|
if ( APPLE AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
|
|
|
|
set( CMAKE_CXX_FLAGS "-stdlib=libc++ ${CMAKE_CXX_FLAGS}" )
|
2016-07-16 12:32:19 +00:00
|
|
|
set( CMAKE_EXE_LINKER_FLAGS "-stdlib=libc++ ${CMAKE_EXE_LINKER_FLAGS}" )
|
2016-07-11 05:17:45 +00:00
|
|
|
endif ()
|
|
|
|
|
2014-06-15 18:36:49 +00:00
|
|
|
# Remove extra warnings when using the official DirectX headers.
|
|
|
|
# Also, TDM-GCC 4.4.0 no longer accepts glibc-style printf formats as valid,
|
|
|
|
# which is a royal pain. The previous version I had been using was fine with them.
|
|
|
|
if( WIN32 )
|
|
|
|
set( CMAKE_CXX_FLAGS "-Wno-unknown-pragmas -Wno-comment -Wno-format ${CMAKE_CXX_FLAGS}" )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
2018-02-10 12:55:53 +00:00
|
|
|
# Detect FreeBSD and add flags
|
|
|
|
if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
|
|
|
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC" )
|
|
|
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC" )
|
|
|
|
endif()
|
|
|
|
|
2014-06-15 18:36:49 +00:00
|
|
|
if( NOT NO_STRIP )
|
|
|
|
set (CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -s" )
|
|
|
|
set (CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} -s" )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
2018-03-09 10:53:41 +00:00
|
|
|
# Check for thread_local keyword, it's optional at the moment
|
|
|
|
|
|
|
|
CHECK_CXX_SOURCE_COMPILES("thread_local int i; int main() { i = 0; }"
|
|
|
|
HAVE_THREAD_LOCAL)
|
|
|
|
|
|
|
|
if( NOT HAVE_THREAD_LOCAL )
|
|
|
|
message( WARNING "C++ compiler doesn't support thread_local storage duration specifier" )
|
|
|
|
add_definitions( -Dthread_local= )
|
|
|
|
endif()
|
|
|
|
|
2014-06-15 18:36:49 +00:00
|
|
|
# Check for functions that may or may not exist.
|
|
|
|
|
|
|
|
CHECK_FUNCTION_EXISTS( filelength FILELENGTH_EXISTS )
|
|
|
|
if( FILELENGTH_EXISTS )
|
|
|
|
add_definitions( -DHAVE_FILELENGTH=1 )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
|
|
|
CHECK_FUNCTION_EXISTS( strupr STRUPR_EXISTS )
|
|
|
|
if( NOT STRUPR_EXISTS )
|
|
|
|
add_definitions( -DNEED_STRUPR=1 )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
|
|
|
CHECK_FUNCTION_EXISTS( stricmp STRICMP_EXISTS )
|
|
|
|
if( NOT STRICMP_EXISTS )
|
|
|
|
add_definitions( -Dstricmp=strcasecmp )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
|
|
|
CHECK_FUNCTION_EXISTS( strnicmp STRNICMP_EXISTS )
|
|
|
|
if( NOT STRNICMP_EXISTS )
|
|
|
|
add_definitions( -Dstrnicmp=strncasecmp )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
|
|
|
if( NOT MSVC )
|
|
|
|
add_definitions( -D__forceinline=inline )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
2015-12-07 09:49:40 +00:00
|
|
|
# Fix stat in v140_xp (broken in RTM and Update 1 so far)
|
|
|
|
if( MSVC AND MSVC_VERSION EQUAL 1900 AND CMAKE_GENERATOR_TOOLSET STREQUAL "v140_xp" )
|
|
|
|
add_definitions( -D_stat64i32=VS14Stat )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2015-12-07 09:49:40 +00:00
|
|
|
|
2014-06-15 18:36:49 +00:00
|
|
|
if( UNIX )
|
|
|
|
CHECK_LIBRARY_EXISTS( rt clock_gettime "" CLOCK_GETTIME_IN_RT )
|
|
|
|
if( NOT CLOCK_GETTIME_IN_RT )
|
|
|
|
CHECK_FUNCTION_EXISTS( clock_gettime CLOCK_GETTIME_EXISTS )
|
|
|
|
if( NOT CLOCK_GETTIME_EXISTS )
|
|
|
|
message( STATUS "Could not find clock_gettime. Timing statistics will not be available." )
|
|
|
|
add_definitions( -DNO_CLOCK_GETTIME )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2016-02-20 10:38:30 +00:00
|
|
|
else()
|
2014-06-15 18:36:49 +00:00
|
|
|
set( ZDOOM_LIBS ${ZDOOM_LIBS} rt )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
|
|
|
# Flags
|
|
|
|
|
|
|
|
# Update gitinfo.h
|
|
|
|
|
|
|
|
add_custom_target( revision_check ALL
|
2015-03-24 03:28:18 +00:00
|
|
|
COMMAND updaterevision src/gitinfo.h
|
2014-06-15 18:36:49 +00:00
|
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
|
|
DEPENDS updaterevision )
|
|
|
|
|
|
|
|
# Libraries ZDoom needs
|
|
|
|
|
|
|
|
message( STATUS "Fluid synth libs: ${FLUIDSYNTH_LIBRARIES}" )
|
2017-01-16 07:19:03 +00:00
|
|
|
set( ZDOOM_LIBS ${ZDOOM_LIBS} "${ZLIB_LIBRARIES}" "${JPEG_LIBRARIES}" "${BZIP2_LIBRARIES}" "${GME_LIBRARIES}" "${CMAKE_DL_LIBS}" )
|
2014-06-15 19:04:15 +00:00
|
|
|
include_directories( "${ZLIB_INCLUDE_DIR}" "${BZIP2_INCLUDE_DIR}" "${LZMA_INCLUDE_DIR}" "${JPEG_INCLUDE_DIR}" "${GME_INCLUDE_DIR}" )
|
2014-01-18 23:10:48 +00:00
|
|
|
|
2014-06-19 11:13:42 +00:00
|
|
|
if( SNDFILE_FOUND )
|
|
|
|
set( ZDOOM_LIBS ${ZDOOM_LIBS} "${SNDFILE_LIBRARIES}" )
|
|
|
|
include_directories( "${SNDFILE_INCLUDE_DIRS}" )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-06-19 13:34:40 +00:00
|
|
|
if( MPG123_FOUND )
|
|
|
|
set( ZDOOM_LIBS ${ZDOOM_LIBS} "${MPG123_LIBRARIES}" )
|
|
|
|
include_directories( "${MPG123_INCLUDE_DIR}" )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2016-02-20 10:38:30 +00:00
|
|
|
if( NOT DYN_FLUIDSYNTH )
|
2014-01-18 23:10:48 +00:00
|
|
|
if( FLUIDSYNTH_FOUND )
|
|
|
|
set( ZDOOM_LIBS ${ZDOOM_LIBS} "${FLUIDSYNTH_LIBRARIES}" )
|
|
|
|
include_directories( "${FLUIDSYNTH_INCLUDE_DIR}" )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
|
|
|
# Start defining source files for ZDoom
|
2014-01-18 23:10:48 +00:00
|
|
|
set( PLAT_WIN32_SOURCES
|
2017-03-10 20:18:15 +00:00
|
|
|
sound/mididevices/music_win_mididevice.cpp
|
2017-03-10 15:12:52 +00:00
|
|
|
win32/critsec.cpp
|
2014-01-18 23:10:48 +00:00
|
|
|
win32/fb_d3d9.cpp
|
|
|
|
win32/fb_d3d9_wipe.cpp
|
|
|
|
win32/fb_ddraw.cpp
|
|
|
|
win32/hardware.cpp
|
|
|
|
win32/helperthread.cpp
|
|
|
|
win32/i_cd.cpp
|
|
|
|
win32/i_crash.cpp
|
|
|
|
win32/i_input.cpp
|
|
|
|
win32/i_keyboard.cpp
|
|
|
|
win32/i_mouse.cpp
|
|
|
|
win32/i_dijoy.cpp
|
|
|
|
win32/i_rawps2.cpp
|
|
|
|
win32/i_xinput.cpp
|
|
|
|
win32/i_main.cpp
|
|
|
|
win32/i_system.cpp
|
2016-09-03 10:00:08 +00:00
|
|
|
win32/i_specialpaths.cpp
|
2014-01-18 23:10:48 +00:00
|
|
|
win32/st_start.cpp
|
2014-03-02 10:32:45 +00:00
|
|
|
win32/win32gliface.cpp
|
2014-01-18 23:10:48 +00:00
|
|
|
win32/win32video.cpp )
|
2014-12-15 15:40:30 +00:00
|
|
|
set( PLAT_POSIX_SOURCES
|
|
|
|
posix/i_cd.cpp
|
2015-12-29 13:19:42 +00:00
|
|
|
posix/i_steam.cpp )
|
2014-01-18 23:10:48 +00:00
|
|
|
set( PLAT_SDL_SOURCES
|
2014-12-18 09:52:29 +00:00
|
|
|
posix/sdl/crashcatcher.c
|
2017-03-10 15:12:52 +00:00
|
|
|
posix/sdl/critsec.cpp
|
2014-12-18 09:52:29 +00:00
|
|
|
posix/sdl/hardware.cpp
|
|
|
|
posix/sdl/i_gui.cpp
|
|
|
|
posix/sdl/i_input.cpp
|
|
|
|
posix/sdl/i_joystick.cpp
|
|
|
|
posix/sdl/i_main.cpp
|
2015-12-27 10:05:04 +00:00
|
|
|
posix/sdl/i_system.cpp
|
2015-01-07 20:07:40 +00:00
|
|
|
posix/sdl/sdlvideo.cpp
|
2016-01-12 10:23:45 +00:00
|
|
|
posix/sdl/sdlglvideo.cpp
|
2015-12-29 13:19:42 +00:00
|
|
|
posix/sdl/st_start.cpp )
|
2016-09-03 10:00:08 +00:00
|
|
|
set( PLAT_UNIX_SOURCES
|
2016-11-12 23:32:09 +00:00
|
|
|
posix/unix/i_specialpaths.cpp
|
2018-01-24 04:31:48 +00:00
|
|
|
posix/unix/gtk_dialogs.cpp )
|
2014-12-18 09:52:29 +00:00
|
|
|
set( PLAT_OSX_SOURCES
|
|
|
|
posix/osx/iwadpicker_cocoa.mm
|
2016-09-03 10:00:08 +00:00
|
|
|
posix/osx/i_specialpaths.mm
|
2014-12-18 09:52:29 +00:00
|
|
|
posix/osx/zdoom.icns )
|
2014-08-03 09:38:56 +00:00
|
|
|
set( PLAT_COCOA_SOURCES
|
2014-12-18 09:52:29 +00:00
|
|
|
posix/cocoa/critsec.cpp
|
2014-12-28 14:35:00 +00:00
|
|
|
posix/cocoa/i_input.mm
|
2014-12-18 09:52:29 +00:00
|
|
|
posix/cocoa/i_joystick.cpp
|
2014-12-28 14:35:00 +00:00
|
|
|
posix/cocoa/i_main.mm
|
2016-03-13 05:34:35 +00:00
|
|
|
posix/cocoa/i_main_except.cpp
|
2015-12-27 10:05:04 +00:00
|
|
|
posix/cocoa/i_system.mm
|
2015-12-29 13:19:42 +00:00
|
|
|
posix/cocoa/i_video.mm
|
|
|
|
posix/cocoa/st_console.mm
|
|
|
|
posix/cocoa/st_start.mm )
|
2014-08-03 09:38:56 +00:00
|
|
|
|
2014-06-15 18:36:49 +00:00
|
|
|
if( WIN32 )
|
|
|
|
set( SYSTEM_SOURCES_DIR win32 )
|
2014-01-18 23:10:48 +00:00
|
|
|
set( SYSTEM_SOURCES ${PLAT_WIN32_SOURCES} )
|
2016-09-03 10:00:08 +00:00
|
|
|
set( OTHER_SYSTEM_SOURCES ${PLAT_POSIX_SOURCES} ${PLAT_SDL_SOURCES} ${PLAT_OSX_SOURCES} ${PLAT_COCOA_SOURCES} ${PLAT_UNIX_SOURCES} )
|
2018-02-23 08:21:42 +00:00
|
|
|
|
2016-11-23 02:22:39 +00:00
|
|
|
set( SYSTEM_SOURCES ${SYSTEM_SOURCES} win32/zdoom.rc )
|
2014-12-14 09:29:28 +00:00
|
|
|
elseif( APPLE )
|
|
|
|
if( OSX_COCOA_BACKEND )
|
2014-12-18 09:52:29 +00:00
|
|
|
set( SYSTEM_SOURCES_DIR posix posix/cocoa )
|
2014-12-14 09:29:28 +00:00
|
|
|
set( SYSTEM_SOURCES ${PLAT_COCOA_SOURCES} )
|
2016-09-03 10:00:08 +00:00
|
|
|
set( OTHER_SYSTEM_SOURCES ${PLAT_WIN32_SOURCES} ${PLAT_SDL_SOURCES} ${PLAT_UNIX_SOURCES} )
|
2016-02-06 02:19:29 +00:00
|
|
|
else()
|
2014-12-18 09:52:29 +00:00
|
|
|
set( SYSTEM_SOURCES_DIR posix posix/sdl )
|
2014-12-14 09:29:28 +00:00
|
|
|
set( SYSTEM_SOURCES ${PLAT_SDL_SOURCES} )
|
2014-12-18 09:52:29 +00:00
|
|
|
set( PLAT_OSX_SOURCES ${PLAT_OSX_SOURCES} posix/sdl/i_system.mm )
|
2016-09-03 10:00:08 +00:00
|
|
|
set( OTHER_SYSTEM_SOURCES ${PLAT_WIN32_SOURCES} ${PLAT_COCOA_SOURCES} ${PLAT_UNIX_SOURCES} )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-12-14 09:29:28 +00:00
|
|
|
|
2017-04-16 23:06:54 +00:00
|
|
|
set( SYSTEM_SOURCES ${SYSTEM_SOURCES} ${PLAT_POSIX_SOURCES} ${PLAT_OSX_SOURCES} )
|
2014-12-14 09:29:28 +00:00
|
|
|
|
2014-12-18 09:52:29 +00:00
|
|
|
set_source_files_properties( posix/osx/zdoom.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources )
|
2016-03-13 05:34:35 +00:00
|
|
|
set_source_files_properties( posix/osx/iwadpicker_cocoa.mm PROPERTIES COMPILE_FLAGS -fobjc-exceptions )
|
2016-02-06 02:19:29 +00:00
|
|
|
else()
|
2014-12-18 09:52:29 +00:00
|
|
|
set( SYSTEM_SOURCES_DIR posix posix/sdl )
|
2016-09-03 10:00:08 +00:00
|
|
|
set( SYSTEM_SOURCES ${PLAT_POSIX_SOURCES} ${PLAT_SDL_SOURCES} ${PLAT_UNIX_SOURCES} )
|
2014-12-18 09:52:29 +00:00
|
|
|
set( OTHER_SYSTEM_SOURCES ${PLAT_WIN32_SOURCES} ${PLAT_OSX_SOURCES} ${PLAT_COCOA_SOURCES} )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
2015-12-25 13:41:06 +00:00
|
|
|
if( HAVE_MMX )
|
|
|
|
add_definitions( -DHAVE_MMX=1 )
|
|
|
|
|
|
|
|
set( SYSTEM_SOURCES ${SYSTEM_SOURCES}
|
|
|
|
gl/hqnx_asm/hq2x_asm.cpp
|
|
|
|
gl/hqnx_asm/hq3x_asm.cpp
|
|
|
|
gl/hqnx_asm/hq4x_asm.cpp
|
|
|
|
gl/hqnx_asm/hqnx_asm_Image.cpp)
|
|
|
|
|
|
|
|
if( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE )
|
|
|
|
set_source_files_properties(
|
|
|
|
gl/hqnx_asm/hq2x_asm.cpp
|
|
|
|
gl/hqnx_asm/hq3x_asm.cpp
|
|
|
|
gl/hqnx_asm/hq4x_asm.cpp
|
|
|
|
gl/textures/gl_hqresize.cpp
|
|
|
|
PROPERTIES COMPILE_FLAGS "-mmmx" )
|
|
|
|
endif( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE )
|
|
|
|
endif( HAVE_MMX )
|
2017-01-22 09:14:48 +00:00
|
|
|
|
2017-07-14 12:14:34 +00:00
|
|
|
if( HAVE_PARALLEL_FOR )
|
|
|
|
add_definitions( -DHAVE_PARALLEL_FOR=1 )
|
|
|
|
elseif( HAVE_DISPATCH_APPLY )
|
|
|
|
add_definitions( -DHAVE_DISPATCH_APPLY=1 )
|
|
|
|
else()
|
|
|
|
option( NO_OPENMP "Disable usage of OpenMP" OFF )
|
|
|
|
|
|
|
|
if( NOT NO_OPENMP )
|
|
|
|
include( FindOpenMP )
|
|
|
|
|
|
|
|
if( OPENMP_FOUND )
|
|
|
|
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}" )
|
|
|
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}" )
|
|
|
|
endif( OPENMP_FOUND )
|
|
|
|
endif( NOT NO_OPENMP )
|
|
|
|
endif()
|
|
|
|
|
2014-06-15 18:36:49 +00:00
|
|
|
add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/xlat_parser.c ${CMAKE_CURRENT_BINARY_DIR}/xlat_parser.h
|
2016-03-20 19:34:44 +00:00
|
|
|
COMMAND lemon -C${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/xlat/xlat_parser.y
|
2014-06-15 18:36:49 +00:00
|
|
|
DEPENDS lemon ${CMAKE_CURRENT_SOURCE_DIR}/xlat/xlat_parser.y )
|
|
|
|
|
2015-04-28 07:40:57 +00:00
|
|
|
add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/zcc-parse.c ${CMAKE_CURRENT_BINARY_DIR}/zcc-parse.h
|
2016-10-12 17:22:33 +00:00
|
|
|
COMMAND lemon -C${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/scripting/zscript/zcc-parse.lemon
|
|
|
|
DEPENDS lemon ${CMAKE_CURRENT_SOURCE_DIR}/scripting/zscript/zcc-parse.lemon )
|
2014-12-22 02:43:24 +00:00
|
|
|
|
2014-06-15 18:36:49 +00:00
|
|
|
add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/sc_man_scanner.h
|
2015-03-24 03:28:18 +00:00
|
|
|
COMMAND re2c --no-generation-date -s -o ${CMAKE_CURRENT_BINARY_DIR}/sc_man_scanner.h ${CMAKE_CURRENT_SOURCE_DIR}/sc_man_scanner.re
|
2014-06-15 18:36:49 +00:00
|
|
|
DEPENDS re2c ${CMAKE_CURRENT_SOURCE_DIR}/sc_man_scanner.re )
|
|
|
|
|
|
|
|
include_directories( ${CMAKE_CURRENT_BINARY_DIR} )
|
|
|
|
|
2017-04-17 15:05:09 +00:00
|
|
|
if( DYN_SNDFILE)
|
|
|
|
add_definitions( -DHAVE_SNDFILE -DDYN_SNDFILE )
|
|
|
|
elseif( SNDFILE_FOUND )
|
|
|
|
add_definitions( -DHAVE_SNDFILE )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2017-04-17 15:05:09 +00:00
|
|
|
|
|
|
|
if( DYN_MPG123)
|
|
|
|
add_definitions( -DHAVE_MPG123 -DDYN_MPG123 )
|
|
|
|
elseif( MPG123_FOUND )
|
|
|
|
add_definitions( -DHAVE_MPG123 )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2017-04-17 15:05:09 +00:00
|
|
|
|
2014-06-15 18:36:49 +00:00
|
|
|
if( DYN_FLUIDSYNTH )
|
|
|
|
add_definitions( -DHAVE_FLUIDSYNTH -DDYN_FLUIDSYNTH )
|
|
|
|
elseif( FLUIDSYNTH_FOUND )
|
|
|
|
add_definitions( -DHAVE_FLUIDSYNTH )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
|
|
|
# Project files should be aware of the header files. We can GLOB these since
|
|
|
|
# there's generally a new cpp for every header so this file will get changed
|
|
|
|
if( WIN32 )
|
|
|
|
set( EXTRA_HEADER_DIRS win32/*.h )
|
2014-12-14 09:29:28 +00:00
|
|
|
elseif( APPLE )
|
|
|
|
if( OSX_COCOA_BACKEND )
|
2014-12-18 09:52:29 +00:00
|
|
|
set( EXTRA_HEADER_DIRS posix/*.h posix/cocoa/*.h )
|
2016-02-06 02:19:29 +00:00
|
|
|
else()
|
2014-12-18 09:52:29 +00:00
|
|
|
set( EXTRA_HEADER_DIRS posix/*.h posix/sdl/*.h )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
|
|
|
else()
|
2014-12-18 09:52:29 +00:00
|
|
|
set( EXTRA_HEADER_DIRS posix/*.h posix/sdl/*.h )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
file( GLOB HEADER_FILES
|
|
|
|
${EXTRA_HEADER_DIRS}
|
|
|
|
fragglescript/*.h
|
|
|
|
g_shared/*.h
|
2017-01-20 21:59:31 +00:00
|
|
|
g_statusbar/*.h
|
2016-11-30 09:28:02 +00:00
|
|
|
g_inventory/*.h
|
2014-06-15 18:36:49 +00:00
|
|
|
intermission/*.h
|
|
|
|
menu/*.h
|
2017-03-10 19:53:03 +00:00
|
|
|
sound/oplsynth/*.h
|
|
|
|
sound/oplsynth/dosbox/*.h
|
2014-12-15 15:40:30 +00:00
|
|
|
posix/*.h
|
2014-12-18 09:52:29 +00:00
|
|
|
posix/cocoa/*.h
|
|
|
|
posix/sdl/*.h
|
2014-06-15 18:36:49 +00:00
|
|
|
r_data/*.h
|
2017-11-25 12:19:00 +00:00
|
|
|
r_data/models/*.h
|
2016-10-12 22:53:59 +00:00
|
|
|
rapidjson/*.h
|
2014-06-15 18:36:49 +00:00
|
|
|
resourcefiles/*.h
|
|
|
|
sfmt/*.h
|
|
|
|
sound/*.h
|
|
|
|
textures/*.h
|
2016-10-12 17:22:33 +00:00
|
|
|
scripting/*.h
|
2017-02-08 11:24:08 +00:00
|
|
|
scripting/backend/*.h
|
2016-10-12 22:53:59 +00:00
|
|
|
scripting/decorate/*.h
|
|
|
|
scripting/zscript/*.h
|
2016-10-12 17:22:33 +00:00
|
|
|
scripting/vm/*.h
|
2017-03-10 19:53:03 +00:00
|
|
|
sound/timidity/*.h
|
2018-02-19 22:33:42 +00:00
|
|
|
sound/timiditypp/*.h
|
2017-03-10 19:53:03 +00:00
|
|
|
sound/wildmidi/*.h
|
2014-06-15 18:36:49 +00:00
|
|
|
xlat/*.h
|
2016-12-27 05:31:55 +00:00
|
|
|
swrenderer/*.h
|
|
|
|
swrenderer/drawers/*.h
|
|
|
|
swrenderer/scene/*.h
|
2016-12-31 11:45:07 +00:00
|
|
|
swrenderer/segments/*.h
|
2017-01-01 09:28:35 +00:00
|
|
|
swrenderer/line/*.h
|
2016-12-31 11:45:07 +00:00
|
|
|
swrenderer/plane/*.h
|
|
|
|
swrenderer/things/*.h
|
2017-02-02 14:10:06 +00:00
|
|
|
swrenderer/viewport/*.h
|
2016-12-27 05:31:55 +00:00
|
|
|
polyrenderer/*.h
|
|
|
|
polyrenderer/math/*.h
|
|
|
|
polyrenderer/drawers/*.h
|
|
|
|
polyrenderer/scene/*.h
|
2014-03-02 10:32:45 +00:00
|
|
|
gl/*.h
|
|
|
|
gl/api/*.h
|
|
|
|
gl/data/*.h
|
|
|
|
gl/dynlights/*.h
|
|
|
|
gl/hqnx/*.h
|
2014-08-20 10:45:33 +00:00
|
|
|
gl/hqnx_asm/*.h
|
2016-09-03 12:01:51 +00:00
|
|
|
gl/xbr/*.h
|
2014-03-02 10:32:45 +00:00
|
|
|
gl/models/*.h
|
|
|
|
gl/renderer/*.h
|
|
|
|
gl/scene/*.h
|
2015-10-31 00:51:35 +00:00
|
|
|
gl/stereo3d/*.h
|
2014-03-02 10:32:45 +00:00
|
|
|
gl/shaders/*.h
|
|
|
|
gl/system/*.h
|
|
|
|
gl/textures/*.h
|
|
|
|
gl/utility/*.h
|
2014-06-15 18:36:49 +00:00
|
|
|
*.h
|
|
|
|
)
|
|
|
|
|
2017-03-09 23:43:36 +00:00
|
|
|
set ( SWRENDER_SOURCES
|
2017-02-13 16:32:52 +00:00
|
|
|
swrenderer/r_swcanvas.cpp
|
2017-03-15 21:04:23 +00:00
|
|
|
swrenderer/r_swcolormaps.cpp
|
2016-12-27 05:31:55 +00:00
|
|
|
swrenderer/r_swrenderer.cpp
|
2016-12-30 04:35:25 +00:00
|
|
|
swrenderer/r_memory.cpp
|
2017-02-03 23:25:37 +00:00
|
|
|
swrenderer/r_renderthread.cpp
|
2017-11-21 17:57:44 +00:00
|
|
|
swrenderer/drawers/r_draw.cpp
|
2016-12-27 05:31:55 +00:00
|
|
|
swrenderer/drawers/r_draw_pal.cpp
|
|
|
|
swrenderer/drawers/r_draw_rgba.cpp
|
|
|
|
swrenderer/drawers/r_thread.cpp
|
|
|
|
swrenderer/scene/r_3dfloors.cpp
|
2017-01-12 15:21:46 +00:00
|
|
|
swrenderer/scene/r_light.cpp
|
2017-01-11 19:42:39 +00:00
|
|
|
swrenderer/scene/r_opaque_pass.cpp
|
2016-12-30 05:08:47 +00:00
|
|
|
swrenderer/scene/r_portal.cpp
|
2017-01-12 15:21:46 +00:00
|
|
|
swrenderer/scene/r_scene.cpp
|
2017-01-11 19:42:39 +00:00
|
|
|
swrenderer/scene/r_translucent_pass.cpp
|
2017-02-02 14:10:06 +00:00
|
|
|
swrenderer/viewport/r_drawerargs.cpp
|
|
|
|
swrenderer/viewport/r_skydrawer.cpp
|
|
|
|
swrenderer/viewport/r_spandrawer.cpp
|
|
|
|
swrenderer/viewport/r_spritedrawer.cpp
|
|
|
|
swrenderer/viewport/r_viewport.cpp
|
|
|
|
swrenderer/viewport/r_walldrawer.cpp
|
2017-01-01 09:28:35 +00:00
|
|
|
swrenderer/line/r_line.cpp
|
2017-07-12 04:56:34 +00:00
|
|
|
swrenderer/line/r_farclip_line.cpp
|
2017-01-01 09:28:35 +00:00
|
|
|
swrenderer/line/r_walldraw.cpp
|
|
|
|
swrenderer/line/r_wallsetup.cpp
|
2017-01-03 18:16:37 +00:00
|
|
|
swrenderer/line/r_fogboundary.cpp
|
2017-01-26 07:13:39 +00:00
|
|
|
swrenderer/line/r_renderdrawsegment.cpp
|
2016-12-31 11:45:07 +00:00
|
|
|
swrenderer/segments/r_clipsegment.cpp
|
|
|
|
swrenderer/segments/r_drawsegment.cpp
|
|
|
|
swrenderer/segments/r_portalsegment.cpp
|
|
|
|
swrenderer/things/r_visiblesprite.cpp
|
2017-01-11 18:50:07 +00:00
|
|
|
swrenderer/things/r_visiblespritelist.cpp
|
2016-12-31 11:45:07 +00:00
|
|
|
swrenderer/things/r_voxel.cpp
|
|
|
|
swrenderer/things/r_particle.cpp
|
|
|
|
swrenderer/things/r_playersprite.cpp
|
2017-01-09 12:53:02 +00:00
|
|
|
swrenderer/things/r_sprite.cpp
|
2016-12-31 11:45:07 +00:00
|
|
|
swrenderer/things/r_wallsprite.cpp
|
|
|
|
swrenderer/things/r_decal.cpp
|
2017-11-27 22:47:26 +00:00
|
|
|
swrenderer/things/r_model.cpp
|
2016-12-31 11:45:07 +00:00
|
|
|
swrenderer/plane/r_visibleplane.cpp
|
2017-01-11 22:27:35 +00:00
|
|
|
swrenderer/plane/r_visibleplanelist.cpp
|
2016-12-31 11:45:07 +00:00
|
|
|
swrenderer/plane/r_skyplane.cpp
|
2017-01-11 22:27:35 +00:00
|
|
|
swrenderer/plane/r_planerenderer.cpp
|
2016-12-31 11:45:07 +00:00
|
|
|
swrenderer/plane/r_flatplane.cpp
|
|
|
|
swrenderer/plane/r_slopeplane.cpp
|
2017-03-09 23:43:36 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
set( POLYRENDER_SOURCES
|
2016-12-27 05:31:55 +00:00
|
|
|
polyrenderer/poly_renderer.cpp
|
2017-09-06 22:34:09 +00:00
|
|
|
polyrenderer/poly_renderthread.cpp
|
2016-12-27 05:31:55 +00:00
|
|
|
polyrenderer/scene/poly_scene.cpp
|
|
|
|
polyrenderer/scene/poly_portal.cpp
|
|
|
|
polyrenderer/scene/poly_cull.cpp
|
|
|
|
polyrenderer/scene/poly_decal.cpp
|
|
|
|
polyrenderer/scene/poly_particle.cpp
|
|
|
|
polyrenderer/scene/poly_plane.cpp
|
|
|
|
polyrenderer/scene/poly_playersprite.cpp
|
|
|
|
polyrenderer/scene/poly_wall.cpp
|
|
|
|
polyrenderer/scene/poly_wallsprite.cpp
|
|
|
|
polyrenderer/scene/poly_sprite.cpp
|
2017-11-23 23:39:10 +00:00
|
|
|
polyrenderer/scene/poly_model.cpp
|
2016-12-27 05:31:55 +00:00
|
|
|
polyrenderer/scene/poly_sky.cpp
|
2017-03-20 07:28:16 +00:00
|
|
|
polyrenderer/scene/poly_light.cpp
|
2016-12-30 01:20:24 +00:00
|
|
|
polyrenderer/drawers/poly_buffer.cpp
|
2017-03-09 23:43:36 +00:00
|
|
|
polyrenderer/drawers/poly_triangle.cpp
|
2016-12-30 01:20:24 +00:00
|
|
|
polyrenderer/drawers/poly_draw_args.cpp
|
|
|
|
polyrenderer/drawers/screen_triangle.cpp
|
|
|
|
polyrenderer/math/tri_matrix.cpp
|
2016-04-10 11:54:42 +00:00
|
|
|
)
|
2017-03-09 23:43:36 +00:00
|
|
|
|
|
|
|
# These files will be flagged as "headers" so that they appear in project files
|
|
|
|
# without being compiled.
|
|
|
|
set( NOT_COMPILED_SOURCE_FILES
|
|
|
|
${OTHER_SYSTEM_SOURCES}
|
|
|
|
${SWRENDER_SOURCES}
|
|
|
|
${POLYRENDER_SOURCES}
|
|
|
|
sc_man_scanner.h
|
|
|
|
sc_man_scanner.re
|
|
|
|
g_statusbar/sbarinfo_commands.cpp
|
|
|
|
xlat/xlat_parser.y
|
|
|
|
xlat_parser.c
|
|
|
|
xlat_parser.h
|
|
|
|
scripting/zscript/zcc-parse.lemon
|
|
|
|
zcc-parse.c
|
|
|
|
zcc-parse.h
|
|
|
|
)
|
|
|
|
|
2016-04-10 11:54:42 +00:00
|
|
|
# This is disabled for now because I cannot find a way to give the .pch file a different name.
|
|
|
|
# Visual C++ 2015 seems hell-bent of only allowing one .pch file with the same name as the executable.
|
|
|
|
#enable_precompiled_headers( g_pch2.h FASTMATH_PCH_SOURCES )
|
|
|
|
|
|
|
|
# Enable fast math for some sources
|
|
|
|
set( FASTMATH_SOURCES
|
2017-03-09 23:43:36 +00:00
|
|
|
swrenderer/r_all.cpp
|
|
|
|
polyrenderer/poly_all.cpp
|
2017-03-10 19:53:03 +00:00
|
|
|
sound/oplsynth/opl_mus_player.cpp
|
2016-02-12 11:51:09 +00:00
|
|
|
sound/mpg123_decoder.cpp
|
|
|
|
sound/music_midi_base.cpp
|
|
|
|
sound/oalsound.cpp
|
|
|
|
sound/sndfile_decoder.cpp
|
2018-02-19 22:33:42 +00:00
|
|
|
sound/timiditypp/fft4g.cpp
|
|
|
|
sound/timiditypp/reverb.cpp
|
2016-02-13 14:36:04 +00:00
|
|
|
gl/utility/gl_clock.cpp
|
2016-08-08 10:13:09 +00:00
|
|
|
gl/renderer/gl_2ddrawer.cpp
|
2016-02-13 14:36:04 +00:00
|
|
|
gl/hqnx/init.cpp
|
|
|
|
gl/hqnx/hq2x.cpp
|
|
|
|
gl/hqnx/hq3x.cpp
|
|
|
|
gl/hqnx/hq4x.cpp
|
2016-09-03 12:01:51 +00:00
|
|
|
gl/xbr/xbrz.cpp
|
|
|
|
gl/xbr/xbrz_old.cpp
|
2016-02-13 14:36:04 +00:00
|
|
|
gl/scene/gl_bsp.cpp
|
|
|
|
gl/scene/gl_fakeflat.cpp
|
|
|
|
gl/scene/gl_clipper.cpp
|
|
|
|
gl/scene/gl_decal.cpp
|
|
|
|
gl/scene/gl_drawinfo.cpp
|
|
|
|
gl/scene/gl_flats.cpp
|
|
|
|
gl/scene/gl_walls.cpp
|
|
|
|
gl/scene/gl_sprite.cpp
|
|
|
|
gl/scene/gl_skydome.cpp
|
|
|
|
gl/scene/gl_renderhacks.cpp
|
|
|
|
gl/scene/gl_weapon.cpp
|
|
|
|
gl/scene/gl_scene.cpp
|
|
|
|
gl/scene/gl_sky.cpp
|
|
|
|
gl/scene/gl_portal.cpp
|
|
|
|
gl/scene/gl_walls_draw.cpp
|
|
|
|
gl/scene/gl_vertex.cpp
|
|
|
|
gl/scene/gl_spritelight.cpp
|
|
|
|
gl/dynlights/gl_dynlight1.cpp
|
|
|
|
gl/system/gl_load.c
|
|
|
|
gl/models/gl_models.cpp
|
2017-11-25 12:19:00 +00:00
|
|
|
r_data/models/models.cpp
|
2017-11-25 12:51:09 +00:00
|
|
|
r_data/matrix.cpp
|
2018-02-21 16:35:44 +00:00
|
|
|
|
2016-02-12 11:51:09 +00:00
|
|
|
)
|
2016-04-10 11:08:54 +00:00
|
|
|
|
|
|
|
set (PCH_SOURCES
|
2014-06-15 18:36:49 +00:00
|
|
|
actorptrselect.cpp
|
|
|
|
am_map.cpp
|
|
|
|
b_bot.cpp
|
|
|
|
b_func.cpp
|
|
|
|
b_game.cpp
|
|
|
|
b_move.cpp
|
|
|
|
b_think.cpp
|
|
|
|
bbannouncer.cpp
|
|
|
|
c_bind.cpp
|
|
|
|
c_cmds.cpp
|
|
|
|
c_console.cpp
|
2014-05-24 19:05:00 +00:00
|
|
|
c_consolebuffer.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
c_cvars.cpp
|
|
|
|
c_dispatch.cpp
|
|
|
|
c_expr.cpp
|
2016-12-13 23:47:56 +00:00
|
|
|
c_functions.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
cmdlib.cpp
|
|
|
|
colormatcher.cpp
|
|
|
|
compatibility.cpp
|
|
|
|
configfile.cpp
|
|
|
|
ct_chat.cpp
|
2017-03-12 15:56:00 +00:00
|
|
|
cycler.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
d_dehacked.cpp
|
|
|
|
d_iwad.cpp
|
|
|
|
d_main.cpp
|
|
|
|
d_net.cpp
|
|
|
|
d_netinfo.cpp
|
|
|
|
d_protocol.cpp
|
|
|
|
decallib.cpp
|
|
|
|
dobject.cpp
|
|
|
|
dobjgc.cpp
|
|
|
|
dobjtype.cpp
|
|
|
|
doomstat.cpp
|
|
|
|
dsectoreffect.cpp
|
|
|
|
dthinker.cpp
|
2016-01-12 08:13:55 +00:00
|
|
|
edata.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
f_wipe.cpp
|
|
|
|
files.cpp
|
2018-03-11 11:33:46 +00:00
|
|
|
files_decompress.cpp
|
2015-04-03 08:54:55 +00:00
|
|
|
g_doomedmap.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
g_game.cpp
|
|
|
|
g_hub.cpp
|
|
|
|
g_level.cpp
|
|
|
|
g_mapinfo.cpp
|
|
|
|
g_skill.cpp
|
|
|
|
gameconfigfile.cpp
|
|
|
|
gi.cpp
|
|
|
|
gitinfo.cpp
|
|
|
|
hu_scores.cpp
|
2016-11-12 23:32:09 +00:00
|
|
|
i_module.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
i_net.cpp
|
2017-11-12 08:06:40 +00:00
|
|
|
i_time.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
info.cpp
|
|
|
|
keysections.cpp
|
|
|
|
lumpconfigfile.cpp
|
|
|
|
m_alloc.cpp
|
|
|
|
m_argv.cpp
|
|
|
|
m_bbox.cpp
|
|
|
|
m_cheat.cpp
|
|
|
|
m_joy.cpp
|
|
|
|
m_misc.cpp
|
|
|
|
m_png.cpp
|
|
|
|
m_random.cpp
|
|
|
|
memarena.cpp
|
|
|
|
md5.cpp
|
|
|
|
name.cpp
|
|
|
|
nodebuild.cpp
|
|
|
|
nodebuild_classify_nosse2.cpp
|
|
|
|
nodebuild_events.cpp
|
|
|
|
nodebuild_extract.cpp
|
|
|
|
nodebuild_gl.cpp
|
|
|
|
nodebuild_utility.cpp
|
|
|
|
p_3dfloors.cpp
|
|
|
|
p_3dmidtex.cpp
|
|
|
|
p_acs.cpp
|
2016-10-12 10:43:26 +00:00
|
|
|
p_actionfunctions.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
p_ceiling.cpp
|
|
|
|
p_conversation.cpp
|
|
|
|
p_doors.cpp
|
|
|
|
p_effect.cpp
|
|
|
|
p_enemy.cpp
|
|
|
|
p_floor.cpp
|
|
|
|
p_glnodes.cpp
|
|
|
|
p_interaction.cpp
|
|
|
|
p_lights.cpp
|
|
|
|
p_linkedsectors.cpp
|
|
|
|
p_lnspec.cpp
|
|
|
|
p_map.cpp
|
|
|
|
p_maputl.cpp
|
|
|
|
p_mobj.cpp
|
|
|
|
p_pillar.cpp
|
|
|
|
p_plats.cpp
|
|
|
|
p_pspr.cpp
|
2016-03-28 19:57:22 +00:00
|
|
|
p_pusher.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
p_saveg.cpp
|
2016-03-28 15:27:55 +00:00
|
|
|
p_scroll.cpp
|
2017-01-06 11:54:01 +00:00
|
|
|
p_secnodes.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
p_sectors.cpp
|
|
|
|
p_setup.cpp
|
|
|
|
p_sight.cpp
|
|
|
|
p_slopes.cpp
|
|
|
|
p_spec.cpp
|
|
|
|
p_states.cpp
|
|
|
|
p_switch.cpp
|
2015-04-19 07:07:05 +00:00
|
|
|
p_tags.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
p_teleport.cpp
|
|
|
|
p_terrain.cpp
|
|
|
|
p_things.cpp
|
|
|
|
p_tick.cpp
|
|
|
|
p_trace.cpp
|
|
|
|
p_udmf.cpp
|
|
|
|
p_usdf.cpp
|
|
|
|
p_user.cpp
|
|
|
|
p_xlat.cpp
|
|
|
|
parsecontext.cpp
|
|
|
|
po_man.cpp
|
2016-02-12 11:51:09 +00:00
|
|
|
portal.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
r_utility.cpp
|
2017-03-09 19:56:33 +00:00
|
|
|
r_sky.cpp
|
2017-07-27 07:05:01 +00:00
|
|
|
r_videoscale.cpp
|
2017-03-09 19:56:33 +00:00
|
|
|
s_advsound.cpp
|
|
|
|
s_environment.cpp
|
|
|
|
s_playlist.cpp
|
|
|
|
s_sndseq.cpp
|
|
|
|
s_sound.cpp
|
2016-09-18 23:07:51 +00:00
|
|
|
serializer.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
sc_man.cpp
|
|
|
|
st_stuff.cpp
|
|
|
|
statistics.cpp
|
|
|
|
stats.cpp
|
|
|
|
stringtable.cpp
|
|
|
|
teaminfo.cpp
|
2017-11-19 22:04:15 +00:00
|
|
|
umapinfo.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
v_blend.cpp
|
|
|
|
v_collection.cpp
|
|
|
|
v_draw.cpp
|
|
|
|
v_font.cpp
|
|
|
|
v_palette.cpp
|
|
|
|
v_pfx.cpp
|
|
|
|
v_text.cpp
|
|
|
|
v_video.cpp
|
|
|
|
w_wad.cpp
|
|
|
|
wi_stuff.cpp
|
|
|
|
zstrformat.cpp
|
2016-11-30 09:28:02 +00:00
|
|
|
g_inventory/a_keys.cpp
|
|
|
|
g_inventory/a_pickups.cpp
|
|
|
|
g_inventory/a_weapons.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
g_shared/a_action.cpp
|
|
|
|
g_shared/a_decals.cpp
|
2017-03-12 15:56:00 +00:00
|
|
|
g_shared/a_dynlight.cpp
|
|
|
|
g_shared/a_dynlightdata.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
g_shared/a_flashfader.cpp
|
|
|
|
g_shared/a_lightning.cpp
|
|
|
|
g_shared/a_morph.cpp
|
|
|
|
g_shared/a_quake.cpp
|
|
|
|
g_shared/a_specialspot.cpp
|
|
|
|
g_shared/hudmessages.cpp
|
|
|
|
g_shared/shared_hud.cpp
|
2017-01-20 21:59:31 +00:00
|
|
|
g_statusbar/sbarinfo.cpp
|
|
|
|
g_statusbar/sbar_mugshot.cpp
|
|
|
|
g_statusbar/shared_sbar.cpp
|
2017-03-09 23:43:36 +00:00
|
|
|
gl/compatibility/gl_20.cpp
|
|
|
|
gl/data/gl_data.cpp
|
|
|
|
gl/data/gl_portaldata.cpp
|
|
|
|
gl/data/gl_setup.cpp
|
|
|
|
gl/data/gl_vertexbuffer.cpp
|
|
|
|
gl/dynlights/gl_glow.cpp
|
|
|
|
gl/dynlights/gl_lightbuffer.cpp
|
2017-03-11 18:55:43 +00:00
|
|
|
gl/dynlights/gl_aabbtree.cpp
|
|
|
|
gl/dynlights/gl_shadowmap.cpp
|
2017-03-09 23:43:36 +00:00
|
|
|
gl/renderer/gl_quaddrawer.cpp
|
|
|
|
gl/renderer/gl_renderer.cpp
|
|
|
|
gl/renderer/gl_renderstate.cpp
|
|
|
|
gl/renderer/gl_renderbuffers.cpp
|
|
|
|
gl/renderer/gl_lightdata.cpp
|
|
|
|
gl/renderer/gl_postprocess.cpp
|
|
|
|
gl/renderer/gl_postprocessstate.cpp
|
|
|
|
gl/shaders/gl_shader.cpp
|
|
|
|
gl/shaders/gl_texshader.cpp
|
|
|
|
gl/shaders/gl_shaderprogram.cpp
|
2017-07-06 03:36:01 +00:00
|
|
|
gl/shaders/gl_postprocessshader.cpp
|
2017-03-11 18:55:43 +00:00
|
|
|
gl/shaders/gl_shadowmapshader.cpp
|
2017-03-09 23:43:36 +00:00
|
|
|
gl/shaders/gl_presentshader.cpp
|
|
|
|
gl/shaders/gl_present3dRowshader.cpp
|
|
|
|
gl/shaders/gl_bloomshader.cpp
|
|
|
|
gl/shaders/gl_ambientshader.cpp
|
|
|
|
gl/shaders/gl_blurshader.cpp
|
|
|
|
gl/shaders/gl_colormapshader.cpp
|
|
|
|
gl/shaders/gl_tonemapshader.cpp
|
|
|
|
gl/shaders/gl_lensshader.cpp
|
|
|
|
gl/shaders/gl_fxaashader.cpp
|
|
|
|
gl/stereo3d/gl_stereo3d.cpp
|
|
|
|
gl/stereo3d/gl_stereo_cvars.cpp
|
|
|
|
gl/stereo3d/gl_stereo_leftright.cpp
|
|
|
|
gl/stereo3d/scoped_view_shifter.cpp
|
|
|
|
gl/stereo3d/gl_anaglyph.cpp
|
|
|
|
gl/stereo3d/gl_quadstereo.cpp
|
|
|
|
gl/stereo3d/gl_sidebyside3d.cpp
|
|
|
|
gl/stereo3d/gl_interleaved3d.cpp
|
|
|
|
gl/system/gl_interface.cpp
|
|
|
|
gl/system/gl_framebuffer.cpp
|
|
|
|
gl/system/gl_swframebuffer.cpp
|
|
|
|
gl/system/gl_swwipe.cpp
|
|
|
|
gl/system/gl_debug.cpp
|
|
|
|
gl/system/gl_menu.cpp
|
|
|
|
gl/system/gl_wipe.cpp
|
|
|
|
gl/textures/gl_hwtexture.cpp
|
|
|
|
gl/textures/gl_texture.cpp
|
|
|
|
gl/textures/gl_material.cpp
|
|
|
|
gl/textures/gl_hirestex.cpp
|
|
|
|
gl/textures/gl_samplers.cpp
|
|
|
|
gl/textures/gl_translate.cpp
|
|
|
|
gl/textures/gl_hqresize.cpp
|
2017-03-09 19:56:33 +00:00
|
|
|
menu/joystickmenu.cpp
|
|
|
|
menu/loadsavemenu.cpp
|
|
|
|
menu/menu.cpp
|
|
|
|
menu/menudef.cpp
|
|
|
|
menu/messagebox.cpp
|
|
|
|
menu/optionmenu.cpp
|
|
|
|
menu/playermenu.cpp
|
|
|
|
menu/videomenu.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
resourcefiles/ancientzip.cpp
|
|
|
|
resourcefiles/file_7z.cpp
|
|
|
|
resourcefiles/file_grp.cpp
|
|
|
|
resourcefiles/file_lump.cpp
|
|
|
|
resourcefiles/file_rff.cpp
|
|
|
|
resourcefiles/file_wad.cpp
|
|
|
|
resourcefiles/file_zip.cpp
|
|
|
|
resourcefiles/file_pak.cpp
|
|
|
|
resourcefiles/file_directory.cpp
|
|
|
|
resourcefiles/resourcefile.cpp
|
|
|
|
textures/animations.cpp
|
|
|
|
textures/anim_switches.cpp
|
|
|
|
textures/automaptexture.cpp
|
|
|
|
textures/bitmap.cpp
|
|
|
|
textures/buildtexture.cpp
|
|
|
|
textures/canvastexture.cpp
|
|
|
|
textures/ddstexture.cpp
|
|
|
|
textures/flattexture.cpp
|
|
|
|
textures/imgztexture.cpp
|
|
|
|
textures/jpegtexture.cpp
|
|
|
|
textures/multipatchtexture.cpp
|
|
|
|
textures/patchtexture.cpp
|
|
|
|
textures/pcxtexture.cpp
|
|
|
|
textures/pngtexture.cpp
|
|
|
|
textures/rawpagetexture.cpp
|
|
|
|
textures/emptytexture.cpp
|
2017-02-10 13:07:21 +00:00
|
|
|
textures/backdroptexture.cpp
|
2017-03-26 23:55:47 +00:00
|
|
|
textures/shadertexture.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
textures/texture.cpp
|
|
|
|
textures/texturemanager.cpp
|
|
|
|
textures/tgatexture.cpp
|
|
|
|
textures/warptexture.cpp
|
2017-03-17 20:12:09 +00:00
|
|
|
textures/skyboxtexture.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
xlat/parse_xlat.cpp
|
|
|
|
fragglescript/t_func.cpp
|
|
|
|
fragglescript/t_load.cpp
|
|
|
|
fragglescript/t_oper.cpp
|
|
|
|
fragglescript/t_parse.cpp
|
|
|
|
fragglescript/t_prepro.cpp
|
|
|
|
fragglescript/t_script.cpp
|
|
|
|
fragglescript/t_spec.cpp
|
|
|
|
fragglescript/t_variable.cpp
|
|
|
|
fragglescript/t_cmd.cpp
|
2017-03-09 19:56:33 +00:00
|
|
|
intermission/intermission.cpp
|
|
|
|
intermission/intermission_parse.cpp
|
|
|
|
r_data/colormaps.cpp
|
|
|
|
r_data/r_translate.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
r_data/sprites.cpp
|
|
|
|
r_data/voxels.cpp
|
|
|
|
r_data/renderstyle.cpp
|
|
|
|
r_data/r_interpolate.cpp
|
2017-06-04 00:00:53 +00:00
|
|
|
r_data/r_vanillatrans.cpp
|
2017-11-25 12:19:00 +00:00
|
|
|
r_data/models/models_md3.cpp
|
|
|
|
r_data/models/models_md2.cpp
|
2017-11-25 12:22:59 +00:00
|
|
|
r_data/models/models_voxel.cpp
|
2017-02-08 12:17:25 +00:00
|
|
|
scripting/symbols.cpp
|
2017-04-12 23:12:04 +00:00
|
|
|
scripting/types.cpp
|
2016-10-12 17:22:33 +00:00
|
|
|
scripting/thingdef.cpp
|
|
|
|
scripting/thingdef_data.cpp
|
|
|
|
scripting/thingdef_properties.cpp
|
2017-02-08 11:24:08 +00:00
|
|
|
scripting/backend/codegen.cpp
|
2017-03-04 09:28:51 +00:00
|
|
|
scripting/backend/scopebarrier.cpp
|
2017-02-08 11:24:08 +00:00
|
|
|
scripting/backend/dynarrays.cpp
|
|
|
|
scripting/backend/vmbuilder.cpp
|
|
|
|
scripting/backend/vmdisasm.cpp
|
2016-10-12 17:22:33 +00:00
|
|
|
scripting/decorate/olddecorations.cpp
|
|
|
|
scripting/decorate/thingdef_exp.cpp
|
|
|
|
scripting/decorate/thingdef_parse.cpp
|
|
|
|
scripting/decorate/thingdef_states.cpp
|
|
|
|
scripting/vm/vmexec.cpp
|
|
|
|
scripting/vm/vmframe.cpp
|
|
|
|
scripting/zscript/ast.cpp
|
|
|
|
scripting/zscript/zcc_compile.cpp
|
|
|
|
scripting/zscript/zcc_parser.cpp
|
2016-04-10 11:54:42 +00:00
|
|
|
sfmt/SFMT.cpp
|
2017-03-10 22:30:30 +00:00
|
|
|
sound/i_music.cpp
|
|
|
|
sound/i_sound.cpp
|
2018-02-22 11:51:45 +00:00
|
|
|
sound/i_soundfont.cpp
|
2017-03-10 20:18:15 +00:00
|
|
|
sound/mididevices/music_opldumper_mididevice.cpp
|
|
|
|
sound/mididevices/music_opl_mididevice.cpp
|
2018-02-24 17:25:04 +00:00
|
|
|
sound/mididevices/music_timiditypp_mididevice.cpp
|
2017-03-10 20:18:15 +00:00
|
|
|
sound/mididevices/music_fluidsynth_mididevice.cpp
|
|
|
|
sound/mididevices/music_softsynth_mididevice.cpp
|
|
|
|
sound/mididevices/music_timidity_mididevice.cpp
|
|
|
|
sound/mididevices/music_wildmidi_mididevice.cpp
|
2018-02-24 17:25:04 +00:00
|
|
|
sound/mididevices/music_wavewriter_mididevice.cpp
|
2018-02-23 16:01:17 +00:00
|
|
|
sound/midisources/midisource.cpp
|
|
|
|
sound/midisources/midisource_mus.cpp
|
|
|
|
sound/midisources/midisource_smf.cpp
|
|
|
|
sound/midisources/midisource_hmi.cpp
|
|
|
|
sound/midisources/midisource_xmi.cpp
|
2017-03-10 21:26:02 +00:00
|
|
|
sound/musicformats/music_cd.cpp
|
|
|
|
sound/musicformats/music_dumb.cpp
|
|
|
|
sound/musicformats/music_gme.cpp
|
2017-04-01 17:46:38 +00:00
|
|
|
sound/musicformats/music_libsndfile.cpp
|
2017-03-10 21:26:02 +00:00
|
|
|
sound/musicformats/music_midistream.cpp
|
|
|
|
sound/musicformats/music_opl.cpp
|
|
|
|
sound/musicformats/music_stream.cpp
|
2017-03-10 19:53:03 +00:00
|
|
|
sound/oplsynth/fmopl.cpp
|
2017-04-15 23:36:53 +00:00
|
|
|
sound/oplsynth/musicblock.cpp
|
|
|
|
sound/oplsynth/oplio.cpp
|
2017-03-10 19:53:03 +00:00
|
|
|
sound/oplsynth/dosbox/opl.cpp
|
|
|
|
sound/oplsynth/OPL3.cpp
|
|
|
|
sound/oplsynth/nukedopl3.cpp
|
|
|
|
sound/timidity/common.cpp
|
|
|
|
sound/timidity/instrum.cpp
|
|
|
|
sound/timidity/instrum_dls.cpp
|
|
|
|
sound/timidity/instrum_font.cpp
|
|
|
|
sound/timidity/instrum_sf2.cpp
|
|
|
|
sound/timidity/mix.cpp
|
|
|
|
sound/timidity/playmidi.cpp
|
|
|
|
sound/timidity/resample.cpp
|
|
|
|
sound/timidity/timidity.cpp
|
2018-02-19 22:33:42 +00:00
|
|
|
sound/timiditypp/common.cpp
|
|
|
|
sound/timiditypp/configfile.cpp
|
|
|
|
sound/timiditypp/effect.cpp
|
|
|
|
sound/timiditypp/filter.cpp
|
|
|
|
sound/timiditypp/freq.cpp
|
|
|
|
sound/timiditypp/instrum.cpp
|
|
|
|
sound/timiditypp/mblock.cpp
|
|
|
|
sound/timiditypp/mix.cpp
|
|
|
|
sound/timiditypp/playmidi.cpp
|
|
|
|
sound/timiditypp/quantity.cpp
|
|
|
|
sound/timiditypp/readmidic.cpp
|
|
|
|
sound/timiditypp/recache.cpp
|
|
|
|
sound/timiditypp/resample.cpp
|
|
|
|
sound/timiditypp/sbkconv.cpp
|
|
|
|
sound/timiditypp/sffile.cpp
|
|
|
|
sound/timiditypp/sfitem.cpp
|
|
|
|
sound/timiditypp/smplfile.cpp
|
|
|
|
sound/timiditypp/sndfont.cpp
|
|
|
|
sound/timiditypp/tables.cpp
|
2017-03-10 19:53:03 +00:00
|
|
|
sound/wildmidi/file_io.cpp
|
|
|
|
sound/wildmidi/gus_pat.cpp
|
|
|
|
sound/wildmidi/reverb.cpp
|
|
|
|
sound/wildmidi/wildmidi_lib.cpp
|
|
|
|
sound/wildmidi/wm_error.cpp
|
2017-01-22 00:33:53 +00:00
|
|
|
events.cpp
|
2017-03-09 19:56:33 +00:00
|
|
|
GuillotineBinPack.cpp
|
|
|
|
SkylineBinPack.cpp
|
2016-04-10 11:08:54 +00:00
|
|
|
)
|
2017-03-09 19:56:33 +00:00
|
|
|
|
2016-04-10 11:08:54 +00:00
|
|
|
enable_precompiled_headers( g_pch.h PCH_SOURCES )
|
|
|
|
|
|
|
|
add_executable( zdoom WIN32 MACOSX_BUNDLE
|
|
|
|
${HEADER_FILES}
|
|
|
|
${NOT_COMPILED_SOURCE_FILES}
|
|
|
|
__autostart.cpp
|
|
|
|
${SYSTEM_SOURCES}
|
|
|
|
${X86_SOURCES}
|
|
|
|
${FASTMATH_SOURCES}
|
|
|
|
${PCH_SOURCES}
|
|
|
|
x86.cpp
|
|
|
|
strnatcmp.c
|
|
|
|
zstring.cpp
|
|
|
|
math/asin.c
|
|
|
|
math/atan.c
|
|
|
|
math/const.c
|
|
|
|
math/cosh.c
|
|
|
|
math/exp.c
|
|
|
|
math/isnan.c
|
|
|
|
math/log.c
|
|
|
|
math/log10.c
|
|
|
|
math/mtherr.c
|
|
|
|
math/polevl.c
|
2016-10-17 13:17:48 +00:00
|
|
|
math/pow.c
|
|
|
|
math/powi.c
|
2016-04-10 11:08:54 +00:00
|
|
|
math/sin.c
|
|
|
|
math/sinh.c
|
|
|
|
math/sqrt.c
|
|
|
|
math/tan.c
|
|
|
|
math/tanh.c
|
|
|
|
math/fastsin.cpp
|
2014-01-18 23:10:48 +00:00
|
|
|
zzautozend.cpp
|
2014-06-15 18:36:49 +00:00
|
|
|
)
|
|
|
|
|
2016-02-18 21:09:05 +00:00
|
|
|
set_source_files_properties( ${FASTMATH_SOURCES} PROPERTIES COMPILE_FLAGS ${ZD_FASTMATH_FLAG} )
|
2014-06-15 18:36:49 +00:00
|
|
|
set_source_files_properties( xlat/parse_xlat.cpp PROPERTIES OBJECT_DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xlat_parser.c" )
|
|
|
|
set_source_files_properties( sc_man.cpp PROPERTIES OBJECT_DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/sc_man_scanner.h" )
|
2014-01-18 23:10:48 +00:00
|
|
|
set_source_files_properties( ${NOT_COMPILED_SOURCE_FILES} PROPERTIES HEADER_FILE_ONLY TRUE )
|
2016-02-12 11:51:09 +00:00
|
|
|
if ( WIN32 )
|
2016-02-18 21:09:05 +00:00
|
|
|
set_source_files_properties( win32/fb_d3d9.cpp win32/fb_d3d9_wipe.cpp PROPERTIES COMPILE_FLAGS ${ZD_FASTMATH_FLAG} )
|
2016-02-12 11:51:09 +00:00
|
|
|
endif()
|
|
|
|
|
2014-06-15 18:36:49 +00:00
|
|
|
|
|
|
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "SunOS")
|
|
|
|
# [BL] Solaris requires these to be explicitly linked.
|
|
|
|
set( ZDOOM_LIBS ${ZDOOM_LIBS} nsl socket)
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
2014-01-18 23:10:48 +00:00
|
|
|
target_link_libraries( zdoom ${ZDOOM_LIBS} gdtoa dumb lzma )
|
2016-10-01 04:51:55 +00:00
|
|
|
|
2014-06-15 18:36:49 +00:00
|
|
|
include_directories( .
|
2017-01-20 21:59:31 +00:00
|
|
|
g_statusbar
|
2014-06-15 18:36:49 +00:00
|
|
|
g_shared
|
2016-11-30 09:28:02 +00:00
|
|
|
g_inventory
|
2014-06-15 18:36:49 +00:00
|
|
|
sound
|
|
|
|
textures
|
2017-03-10 19:53:03 +00:00
|
|
|
sound/oplsynth
|
|
|
|
sound/timidity
|
|
|
|
sound/wildmidi
|
2014-06-15 18:36:49 +00:00
|
|
|
xlat
|
2016-10-12 17:22:33 +00:00
|
|
|
scripting
|
|
|
|
scripting/vm
|
2014-06-15 18:36:49 +00:00
|
|
|
../gdtoa
|
|
|
|
../dumb/include
|
|
|
|
${CMAKE_BINARY_DIR}/gdtoa
|
|
|
|
${SYSTEM_SOURCES_DIR} )
|
|
|
|
|
|
|
|
add_dependencies( zdoom revision_check )
|
|
|
|
|
2014-01-18 23:10:48 +00:00
|
|
|
# Due to some quirks, we need to do this in this order
|
2016-02-06 02:19:29 +00:00
|
|
|
if( NOT ZDOOM_OUTPUT_OLDSTYLE )
|
2014-01-18 23:10:48 +00:00
|
|
|
# RUNTIME_OUTPUT_DIRECTORY does not exist in CMake 2.4.
|
|
|
|
# Linux distributions are slow to adopt 2.6. :(
|
|
|
|
set_target_properties( zdoom PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${ZDOOM_OUTPUT_DIR} )
|
|
|
|
set_target_properties( zdoom PROPERTIES OUTPUT_NAME ${ZDOOM_EXE_NAME} )
|
2016-02-06 02:19:29 +00:00
|
|
|
else()
|
2014-01-18 23:10:48 +00:00
|
|
|
set_target_properties( zdoom PROPERTIES
|
|
|
|
RUNTIME_OUTPUT_NAME ${ZDOOM_EXE_NAME}
|
|
|
|
RUNTIME_OUTPUT_DIRECTORY_RELEASE ${ZDOOM_OUTPUT_DIR}
|
|
|
|
RUNTIME_OUTPUT_NAME_DEBUG ${ZDOOM_EXE_NAME}d
|
|
|
|
RUNTIME_OUTPUT_DIRECTORY_DEBUG ${ZDOOM_OUTPUT_DIR}
|
|
|
|
RUNTIME_OUTPUT_NAME_MINSIZEREL ${ZDOOM_EXE_NAME}msr
|
|
|
|
RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${ZDOOM_OUTPUT_DIR}
|
|
|
|
RUNTIME_OUTPUT_NAME_RELWITHDEBINFO ${ZDOOM_EXE_NAME}rd
|
|
|
|
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${ZDOOM_OUTPUT_DIR}
|
|
|
|
)
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-01-18 23:10:48 +00:00
|
|
|
|
|
|
|
if( MSVC )
|
|
|
|
option( ZDOOM_GENERATE_MAPFILE "Generate .map file for debugging." OFF )
|
2016-09-06 09:36:30 +00:00
|
|
|
set( LINKERSTUFF "/MANIFEST:NO" )
|
|
|
|
|
2014-01-18 23:10:48 +00:00
|
|
|
if( ZDOOM_GENERATE_MAPFILE )
|
2016-02-06 18:05:41 +00:00
|
|
|
set( LINKERSTUFF "${LINKERSTUFF} /MAP" )
|
2016-02-06 03:38:10 +00:00
|
|
|
endif()
|
|
|
|
set_target_properties(zdoom PROPERTIES LINK_FLAGS ${LINKERSTUFF})
|
2014-01-18 23:10:48 +00:00
|
|
|
|
2016-02-06 02:19:29 +00:00
|
|
|
add_custom_command(TARGET zdoom POST_BUILD
|
|
|
|
COMMAND "mt.exe" -manifest \"${CMAKE_CURRENT_SOURCE_DIR}\\win32\\zdoom.exe.manifest\" -outputresource:\"$<TARGET_FILE:zdoom>\"\;\#1
|
|
|
|
COMMENT "Adding manifest..."
|
|
|
|
)
|
2014-01-18 23:10:48 +00:00
|
|
|
|
|
|
|
create_default_target_launcher( zdoom WORKING_DIRECTORY ${ZDOOM_OUTPUT_DIR} )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
2017-05-13 14:01:24 +00:00
|
|
|
if( NOT WIN32 AND NOT APPLE )
|
2014-06-15 18:36:49 +00:00
|
|
|
FILE( WRITE ${CMAKE_CURRENT_BINARY_DIR}/link-make "if [ ! -e ${ZDOOM_OUTPUT_DIR}/${ZDOOM_EXE_NAME} ]; then ln -sf ${CMAKE_CURRENT_BINARY_DIR}/${ZDOOM_EXE_NAME} ${ZDOOM_OUTPUT_DIR}/${ZDOOM_EXE_NAME}; fi" )
|
|
|
|
add_custom_command( TARGET zdoom POST_BUILD
|
|
|
|
COMMAND chmod +x ${CMAKE_CURRENT_BINARY_DIR}/link-make
|
|
|
|
COMMAND /bin/sh -c ${CMAKE_CURRENT_BINARY_DIR}/link-make )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2017-05-13 11:57:34 +00:00
|
|
|
|
|
|
|
add_custom_command(TARGET zdoom POST_BUILD
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
2018-02-26 14:45:01 +00:00
|
|
|
${CMAKE_SOURCE_DIR}/soundfont/gzdoom.sf2 $<TARGET_FILE_DIR:zdoom>/soundfonts/gzdoom.sf2)
|
2017-05-13 11:57:34 +00:00
|
|
|
|
2014-06-25 23:23:41 +00:00
|
|
|
if( CMAKE_COMPILER_IS_GNUCXX )
|
2014-06-15 18:36:49 +00:00
|
|
|
# GCC misoptimizes this file
|
|
|
|
set_source_files_properties( oplsynth/fmopl.cpp PROPERTIES COMPILE_FLAGS "-fno-tree-dominator-opts -fno-tree-fre" )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-06-25 23:23:41 +00:00
|
|
|
if( ZD_CMAKE_COMPILER_IS_GNUCXX_COMPATIBLE )
|
2017-05-09 18:34:57 +00:00
|
|
|
# Need to enable intrinsics for these files.
|
2014-06-15 18:36:49 +00:00
|
|
|
if( SSE_MATTERS )
|
2017-04-29 10:46:49 +00:00
|
|
|
set_source_files_properties(
|
2017-05-09 18:34:57 +00:00
|
|
|
gl/system/gl_swframebuffer.cpp
|
2017-04-29 10:46:49 +00:00
|
|
|
polyrenderer/poly_all.cpp
|
2017-05-09 18:34:57 +00:00
|
|
|
swrenderer/r_all.cpp
|
|
|
|
x86.cpp
|
2017-04-29 10:46:49 +00:00
|
|
|
PROPERTIES COMPILE_FLAGS "-msse2 -mmmx" )
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
|
|
|
endif()
|
2014-06-15 18:36:49 +00:00
|
|
|
|
2014-08-03 09:38:56 +00:00
|
|
|
if( APPLE )
|
|
|
|
set_target_properties(zdoom PROPERTIES
|
2017-10-07 10:37:13 +00:00
|
|
|
LINK_FLAGS "-framework Cocoa -framework IOKit -framework OpenGL"
|
2014-12-18 09:52:29 +00:00
|
|
|
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/posix/osx/zdoom-info.plist" )
|
2014-08-03 09:38:56 +00:00
|
|
|
|
2016-02-06 02:19:29 +00:00
|
|
|
endif()
|
2014-08-03 09:38:56 +00:00
|
|
|
|
2016-10-12 19:17:20 +00:00
|
|
|
if( WIN32 )
|
|
|
|
set( INSTALL_PATH . CACHE STRING "Directory where the zdoom executable will be placed during install." )
|
|
|
|
else()
|
|
|
|
set( INSTALL_PATH bin CACHE STRING "Directory where the zdoom executable will be placed during install." )
|
|
|
|
endif()
|
|
|
|
install(TARGETS zdoom
|
|
|
|
DESTINATION ${INSTALL_PATH}
|
|
|
|
COMPONENT "Game executable")
|
|
|
|
|
2014-01-18 23:10:48 +00:00
|
|
|
source_group("Audio Files" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/sound/.+")
|
2017-03-10 19:53:03 +00:00
|
|
|
source_group("Audio Files\\OPL Synth" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/sound/oplsynth/.+")
|
|
|
|
source_group("Audio Files\\OPL Synth\\DOSBox" FILES sound/oplsynth/dosbox/opl.cpp sound/oplsynth/dosbox/opl.h)
|
|
|
|
source_group("Audio Files\\Timidity" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/sound/timidity/.+")
|
2018-02-19 22:33:42 +00:00
|
|
|
source_group("Audio Files\\Timiditypp" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/sound/timiditypp/.+")
|
2017-03-10 19:53:03 +00:00
|
|
|
source_group("Audio Files\\WildMidi" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/sound/wildmidi/.+")
|
|
|
|
source_group("Audio Files\\MIDI Devices" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/sound/mididevices/.+")
|
2018-02-23 16:01:17 +00:00
|
|
|
source_group("Audio Files\\MIDI Sources" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/sound/midisources/.+")
|
2017-03-10 21:26:02 +00:00
|
|
|
source_group("Audio Files\\Music formats" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/sound/musicformats/.+")
|
2016-10-12 17:22:33 +00:00
|
|
|
source_group("External\\Math" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/math/.+")
|
|
|
|
source_group("External\\RapidJSON" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/rapidjson/.+")
|
2016-12-13 23:47:56 +00:00
|
|
|
source_group("External\\SFMT" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/sfmt/.+")
|
2014-01-18 23:10:48 +00:00
|
|
|
source_group("FraggleScript" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/fragglescript/.+")
|
|
|
|
source_group("Intermission" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/intermission/.+")
|
2016-11-30 09:28:02 +00:00
|
|
|
source_group("Inventory" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/g_inventory/.+")
|
2014-01-18 23:10:48 +00:00
|
|
|
source_group("Menu" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/menu/.+")
|
2014-03-02 10:32:45 +00:00
|
|
|
source_group("OpenGL Renderer" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/gl/.+")
|
|
|
|
source_group("OpenGL Renderer\\Data" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/gl/data/.+")
|
|
|
|
source_group("OpenGL Renderer\\Dynamic Lights" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/gl/dynlights/.+")
|
|
|
|
source_group("OpenGL Renderer\\HQ Resize" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/gl/hqnx/.+")
|
2016-09-03 12:01:51 +00:00
|
|
|
source_group("OpenGL Renderer\\HQ Resize MMX version" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/gl/hqnx_asm/.+")
|
|
|
|
source_group("OpenGL Renderer\\XBRZ" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/gl/hqnx_asm/.+")
|
2014-03-02 10:32:45 +00:00
|
|
|
source_group("OpenGL Renderer\\Models" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/gl/models/.+")
|
|
|
|
source_group("OpenGL Renderer\\Renderer" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/gl/renderer/.+")
|
|
|
|
source_group("OpenGL Renderer\\Scene" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/gl/scene/.+")
|
2015-10-31 00:51:35 +00:00
|
|
|
source_group("OpenGL Renderer\\Stereo3D" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/gl/stereo3d/.+")
|
2014-03-02 10:32:45 +00:00
|
|
|
source_group("OpenGL Renderer\\Shaders" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/gl/shaders/.+")
|
|
|
|
source_group("OpenGL Renderer\\System" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/gl/system/.+")
|
|
|
|
source_group("OpenGL Renderer\\Textures" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/gl/textures/.+")
|
|
|
|
source_group("OpenGL Renderer\\Utilities" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/gl/utility/.+")
|
2016-12-27 05:31:55 +00:00
|
|
|
source_group("Software Renderer" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/swrenderer/.+")
|
|
|
|
source_group("Software Renderer\\Drawers" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/swrenderer/drawers/.+")
|
|
|
|
source_group("Software Renderer\\Scene" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/swrenderer/scene/.+")
|
2016-12-31 11:45:07 +00:00
|
|
|
source_group("Software Renderer\\Segments" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/swrenderer/segments/.+")
|
2017-01-01 09:28:35 +00:00
|
|
|
source_group("Software Renderer\\Line" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/swrenderer/line/.+")
|
2016-12-31 11:45:07 +00:00
|
|
|
source_group("Software Renderer\\Plane" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/swrenderer/plane/.+")
|
|
|
|
source_group("Software Renderer\\Things" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/swrenderer/things/.+")
|
2017-02-02 14:10:06 +00:00
|
|
|
source_group("Software Renderer\\Viewport" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/swrenderer/viewport/.+")
|
2016-12-27 05:31:55 +00:00
|
|
|
source_group("Poly Renderer" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/polyrenderer/.+")
|
|
|
|
source_group("Poly Renderer\\Math" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/polyrenderer/math/.+")
|
|
|
|
source_group("Poly Renderer\\Drawers" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/polyrenderer/drawers/.+")
|
|
|
|
source_group("Poly Renderer\\Scene" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/polyrenderer/scene/.+")
|
2017-11-25 12:19:00 +00:00
|
|
|
source_group("Render Data" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/r_data/.+")
|
2014-01-18 23:10:48 +00:00
|
|
|
source_group("Render Data\\Textures" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/textures/.+")
|
2017-11-25 12:19:00 +00:00
|
|
|
source_group("Render Data\\Models" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/r_data/models/.+")
|
2014-01-18 23:10:48 +00:00
|
|
|
source_group("Render Interface" FILES r_defs.h r_renderer.h r_sky.cpp r_sky.h r_state.h r_utility.cpp r_utility.h)
|
|
|
|
source_group("Resource Files" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/resourcefiles/.+")
|
2016-10-12 17:22:33 +00:00
|
|
|
source_group("Platforms\\POSIX Files" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/posix/.+")
|
|
|
|
source_group("Platforms\\Cocoa Files" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/posix/cocoa/.+")
|
|
|
|
source_group("Platforms\\OS X Files" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/posix/osx/.+")
|
|
|
|
source_group("Platforms\\Unix Files" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/posix/unix/.+")
|
|
|
|
source_group("Platforms\\SDL Files" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/posix/sdl/.+")
|
|
|
|
source_group("Platforms\\Win32 Files" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/win32/.+")
|
2017-02-08 11:24:08 +00:00
|
|
|
source_group("Scripting\\Decorate frontend" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/scripting/decorate/.+")
|
|
|
|
source_group("Scripting\\ZScript frontend" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/scripting/zscript/.+" FILES ${CMAKE_CURRENT_BINARY_DIR}/zcc-parse.c ${CMAKE_CURRENT_BINARY_DIR}/zcc-parse.h)
|
|
|
|
source_group("Scripting\\Compiler backend" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/scripting/backend/.+")
|
2016-10-12 17:22:33 +00:00
|
|
|
source_group("Scripting\\VM" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/scripting/vm/.+")
|
2016-10-15 13:10:48 +00:00
|
|
|
source_group("Scripting" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/scripting/.+")
|
2014-01-18 23:10:48 +00:00
|
|
|
source_group("Shared Game" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/g_shared/.+")
|
2017-01-20 21:59:31 +00:00
|
|
|
source_group("Statusbar" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/g_statusbar/.+")
|
2014-01-18 23:10:48 +00:00
|
|
|
source_group("Versioning" FILES version.h win32/zdoom.rc)
|
|
|
|
source_group("Xlat" REGULAR_EXPRESSION "^${CMAKE_CURRENT_SOURCE_DIR}/xlat/.+" FILES ${CMAKE_CURRENT_BINARY_DIR}/xlat_parser.c ${CMAKE_CURRENT_BINARY_DIR}/xlat_parser.h)
|
|
|
|
source_group("Source Files" FILES ${CMAKE_CURRENT_BINARY_DIR}/sc_man_scanner.h sc_man_scanner.re)
|