File: CMakeLists.txt

package info (click to toggle)
openmohaa 0.82.1%2Bdfsg-1
  • links: PTS, VCS
  • area: contrib
  • in suites: forky, sid
  • size: 34,192 kB
  • sloc: cpp: 315,720; ansic: 275,789; sh: 312; xml: 246; asm: 141; makefile: 7
file content (84 lines) | stat: -rw-r--r-- 2,654 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
cmake_minimum_required(VERSION 3.12)

project(omohclient)

add_subdirectory("../cgame" "./cgame")

file(GLOB SOURCES_CLIENT "./*.c*")
file(GLOB_RECURSE SOURCES_UILIB "../uilib/*.c*")

set(SOURCES_CLIENT ${SOURCES_CLIENT}
	# Gamespy
	"${CMAKE_SOURCE_DIR}/code/gamespy/cl_gamespy.c"
)

# Made as an interface and not static, as static only links used methods
add_library(omohclient INTERFACE)
target_compile_definitions(omohclient INTERFACE APP_MODULE)
target_compile_features(omohclient INTERFACE cxx_nullptr)
target_compile_features(omohclient INTERFACE c_variadic_macros)
target_link_libraries(omohclient INTERFACE omohsdl_client)
target_link_libraries(omohclient INTERFACE gcd)

# Sound stuff
target_compile_definitions(omohclient INTERFACE USE_CODEC_MP3)

if (NOT NO_MODERN_DMA)
	# Use OpenAL
	find_package(OpenAL REQUIRED)

	if (OPENAL_FOUND)
		target_compile_definitions(omohclient INTERFACE USE_OPENAL=1 NO_MODERN_DMA=0)
		if (MSVC)
			target_include_directories(omohclient INTERFACE ${OPENAL_INCLUDE_DIR}/AL)
		else()
			target_include_directories(omohclient INTERFACE ${OPENAL_INCLUDE_DIR})
		endif()

		if(NOT USE_SYSTEM_LIBS)
			target_compile_definitions(omohclient INTERFACE USE_OPENAL_DLOPEN=1)
		else()
			# Link against system OpenAL
			target_link_libraries(omohclient INTERFACE OpenAL::OpenAL)
		endif()
	endif()

	list(FILTER SOURCES_CLIENT EXCLUDE REGEX "./snd_([a-zA-Z0-9_]+)\.c$")
	file(GLOB SOURCES_CLIENT_SND "./snd_*_new.c*" "./snd_codec*.c*")
	list(APPEND SOURCES_CLIENT ${SOURCES_CLIENT_SND})
else()
	#
	# Fallback to old DMA sound system
	#
	message(NOTICE "OpenAL was explicitly disabled - fallback to old SDL sound system")
	target_compile_definitions(omohclient INTERFACE NO_MODERN_DMA=1)
	set(NO_MODERN_DMA TRUE)

	list(FILTER SOURCES_CLIENT EXCLUDE REGEX "./snd_([a-zA-Z0-9_]+)\.cpp$")
	file(GLOB_RECURSE SOURCES_CLIENT_SND "./new/*.c*")
	list(APPEND SOURCES_CLIENT ${SOURCES_CLIENT_SND})
endif()

set(OLD_VALUE ${BUILD_SHARED_LIBS})
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)

if(USE_INTERNAL_MAD)
	add_subdirectory("../thirdparty/libmad" "./libmad" EXCLUDE_FROM_ALL)
	target_link_libraries(omohclient INTERFACE mad)
else()
	include(FindPackageHandleStandardArgs)
	find_path(LIBMAD_INCLUDE_DIRS mad.h)
	find_library(LIBMAD_LIBRARIES mad)
	find_package_handle_standard_args(
		LibMad
		DEFAULT_MSG
		LIBMAD_LIBRARIES
		LIBMAD_INCLUDE_DIRS
	)
	target_include_directories(omohclient INTERFACE ${LIBMAD_INCLUDE_DIRS})
	target_link_libraries(omohclient INTERFACE ${LIBMAD_LIBRARIES})
endif()

set(BUILD_SHARED_LIBS ${OLD_VALUE} CACHE BOOL "" FORCE)

target_sources(omohclient INTERFACE ${SOURCES_CLIENT} ${SOURCES_UILIB})