CMake build system

This commit is contained in:
Tim Angus committed 2025-08-03 17:36:01 +01:00
1 parent 4fed624cff
commit 4c6f3f81eb
40 files changed
+1641

No files matched your search

+9
View File
@@ -0,0 +1,9 @@
include(libraries/curl)
include(libraries/freetype)
include(libraries/jpeg)
include(libraries/ogg)
include(libraries/opus)
include(libraries/openal)
include(libraries/sdl)
include(libraries/vorbis)
include(libraries/zlib)
+15
View File
@@ -0,0 +1,15 @@
if(NOT USE_HTTP OR WIN32)
return()
endif()
set(INTERNAL_CURL_DIR ${SOURCE_DIR}/thirdparty/curl-8.15.0)
find_package(CURL QUIET)
if(NOT CURL_FOUND)
set(CURL_DEFINITIONS USE_INTERNAL_CURL_HEADERS)
set(CURL_INCLUDE_DIR ${INTERNAL_CURL_DIR}/include)
endif()
list(APPEND CLIENT_DEFINITIONS ${CURL_DEFINITIONS})
list(APPEND CLIENT_INCLUDE_DIRS ${CURL_INCLUDE_DIR})
+8
View File
@@ -0,0 +1,8 @@
if(NOT USE_FREETYPE)
return()
endif()
find_package(Freetype REQUIRED)
list(APPEND RENDERER_INCLUDE_DIRS ${FREETYPE_INCLUDE_DIRS})
list(APPEND RENDERER_LIBRARIES ${FREETYPE_LIBRARIES})
+18
View File
@@ -0,0 +1,18 @@
include(utils/disable_warnings)
include(utils/find_include_dirs)
set(INTERNAL_JPEG_DIR ${SOURCE_DIR}/thirdparty/jpeg-9f)
if(USE_INTERNAL_JPEG)
file(GLOB_RECURSE JPEG_SOURCES ${INTERNAL_JPEG_DIR}/j*.c)
disable_warnings(${JPEG_SOURCES})
find_include_dirs(JPEG_INCLUDE_DIRS ${JPEG_SOURCES})
set(JPEG_DEFINITIONS USE_INTERNAL_JPEG)
list(APPEND RENDERER_LIBRARY_SOURCES ${JPEG_SOURCES})
else()
find_package(JPEG REQUIRED)
endif()
list(APPEND RENDERER_LIBRARIES ${JPEG_LIBRARIES})
list(APPEND RENDERER_INCLUDE_DIRS ${JPEG_INCLUDE_DIRS})
list(APPEND RENDERER_DEFINITIONS ${JPEG_DEFINTIONS})
+21
View File
@@ -0,0 +1,21 @@
if(NOT USE_CODEC_VORBIS)
return()
endif()
include(utils/disable_warnings)
set(INTERNAL_OGG_DIR ${SOURCE_DIR}/thirdparty/libogg-1.3.6)
if(USE_INTERNAL_OGG)
file(GLOB_RECURSE OGG_SOURCES ${INTERNAL_OGG_DIR}/*.c)
disable_warnings(${OGG_SOURCES})
set(OGG_INCLUDE_DIRS ${INTERNAL_OGG_DIR}/include)
list(APPEND CLIENT_LIBRARY_SOURCES ${OGG_SOURCES})
else()
find_package(PkgConfig REQUIRED)
pkg_check_modules(OGG REQUIRED ogg)
endif()
list(APPEND CLIENT_LIBRARIES ${OGG_LIBRARIES})
list(APPEND CLIENT_INCLUDE_DIRS ${OGG_INCLUDE_DIRS})
list(APPEND CLIENT_DEFINITIONS ${OGG_DEFINITIONS})
+23
View File
@@ -0,0 +1,23 @@
if(NOT USE_OPENAL)
return()
endif()
set(INTERNAL_OPENAL_DIR ${SOURCE_DIR}/thirdparty/openal-soft-1.24.3)
find_package(OpenAL QUIET)
if(NOT OpenAL_FOUND)
set(OPENAL_DEFINITIONS USE_INTERNAL_OPENAL_HEADERS)
set(OPENAL_INCLUDE_DIR ${INTERNAL_OPENAL_DIR}/include)
set(OPENAL_LIBRARY openal)
endif()
list(APPEND CLIENT_DEFINITIONS ${OPENAL_DEFINITIONS} USE_OPENAL)
list(APPEND CLIENT_INCLUDE_DIRS ${OPENAL_INCLUDE_DIR})
if(USE_OPENAL_DLOPEN)
list(APPEND CLIENT_DEFINITIONS USE_OPENAL_DLOPEN)
else()
find_package(Threads REQUIRED)
list(APPEND CLIENT_LIBRARIES Threads::Threads ${OPENAL_LIBRARY})
endif()
+27
View File
@@ -0,0 +1,27 @@
if(NOT USE_CODEC_OPUS)
return()
endif()
include(utils/disable_warnings)
include(utils/find_include_dirs)
set(INTERNAL_OPUS_DIR ${SOURCE_DIR}/thirdparty/opus-1.5.2)
set(INTERNAL_OPUSFILE_DIR ${SOURCE_DIR}/thirdparty/opusfile-0.12)
if(USE_INTERNAL_OPUS)
file(GLOB_RECURSE OPUS_SOURCES ${INTERNAL_OPUS_DIR}/*.c)
file(GLOB_RECURSE OPUSFILE_SOURCES ${INTERNAL_OPUSFILE_DIR}/*.c)
disable_warnings(${OPUS_SOURCES} ${OPUSFILE_SOURCES})
find_include_dirs(OPUS_INCLUDE_DIRS ${OPUS_SOURCES})
find_include_dirs(OPUSFILE_INCLUDE_DIRS ${OPUSFILE_SOURCES})
set(OPUS_INCLUDE_DIRS ${OPUS_INCLUDE_DIRS} ${OPUSFILE_INCLUDE_DIRS} ${INTERNAL_OPUSFILE_DIR}/include)
set(OPUS_DEFINITIONS USE_CODEC_OPUS OPUS_BUILD HAVE_LRINTF FLOATING_POINT FLOAT_APPROX USE_ALLOCA)
list(APPEND CLIENT_LIBRARY_SOURCES ${OPUS_SOURCES} ${OPUSFILE_SOURCES})
else()
find_package(PkgConfig REQUIRED)
pkg_check_modules(OPUS REQUIRED opus)
endif()
list(APPEND CLIENT_LIBRARIES ${OPUS_LIBRARIES})
list(APPEND CLIENT_INCLUDE_DIRS ${OPUS_INCLUDE_DIRS})
list(APPEND CLIENT_DEFINITIONS ${OPUS_DEFINITIONS})
+51
View File
@@ -0,0 +1,51 @@
set(INTERNAL_SDL_DIR ${SOURCE_DIR}/thirdparty/SDL2-2.32.8)
include(utils/arch)
if(NOT WIN32 AND NOT APPLE)
set(SYSTEM_SDL_REQUIRED REQUIRED)
endif()
find_package(SDL2 QUIET ${SYSTEM_SDL_REQUIRED})
if(NOT SDL2_FOUND)
set(SDL2_INCLUDE_DIRS ${INTERNAL_SDL_DIR}/include)
# On Windows and macOS we have internal SDL binaries we can use
if(WIN32)
if(ARCH STREQUAL "x86_64")
set(LIB_DIR ${SOURCE_DIR}/thirdparty/libs/win64)
elseif(ARCH STREQUAL "x86")
set(LIB_DIR ${SOURCE_DIR}/thirdparty/libs/win32)
else()
message(FATAL_ERROR "Unknown ARCH")
endif()
if(MINGW)
set(SDL2_LIBRARIES
${LIB_DIR}/libSDL2main.a
${LIB_DIR}/libSDL2.dll.a)
elseif(MSVC)
set(SDL2_LIBRARIES
${LIB_DIR}/SDL2main.lib
${LIB_DIR}/SDL2.lib)
endif()
list(APPEND CLIENT_DEPLOY_LIBRARIES ${LIB_DIR}/SDL2.dll)
elseif(APPLE)
set(SDL2_LIBRARIES
${SOURCE_DIR}/thirdparty/libs/macos/libSDL2main.a
${SOURCE_DIR}/thirdparty/libs/macos/libSDL2-2.0.0.dylib)
list(APPEND CLIENT_DEPLOY_LIBRARIES
${SOURCE_DIR}/thirdparty/libs/macos/libSDL2-2.0.0.dylib)
else()
message(FATAL_ERROR "SDL2 not found and no internal binaries available")
endif()
endif()
list(APPEND CLIENT_LIBRARIES ${SDL2_LIBRARIES})
list(APPEND CLIENT_INCLUDE_DIRS ${SDL2_INCLUDE_DIRS})
list(APPEND CLIENT_COMPILE_OPTIONS ${SDL2_CFLAGS_OTHER})
list(APPEND RENDERER_LIBRARIES ${SDL2_LIBRARIES})
list(APPEND RENDERER_INCLUDE_DIRS ${SDL2_INCLUDE_DIRS})
list(APPEND RENDERER_COMPILE_OPTIONS ${SDL2_CFLAGS_OTHER})
+22
View File
@@ -0,0 +1,22 @@
if(NOT USE_CODEC_VORBIS)
return()
endif()
include(utils/disable_warnings)
set(INTERNAL_VORBIS_DIR ${SOURCE_DIR}/thirdparty/libvorbis-1.3.7)
if(USE_INTERNAL_VORBIS)
file(GLOB_RECURSE VORBIS_SOURCES ${INTERNAL_VORBIS_DIR}/*.c)
disable_warnings(${VORBIS_SOURCES})
set(VORBIS_INCLUDE_DIRS ${INTERNAL_VORBIS_DIR}/include ${INTERNAL_VORBIS_DIR}/lib)
set(VORBIS_DEFINITIONS USE_CODEC_VORBIS)
list(APPEND CLIENT_LIBRARY_SOURCES ${VORBIS_SOURCES})
else()
find_package(PkgConfig REQUIRED)
pkg_check_modules(VORBIS REQUIRED vorbis)
endif()
list(APPEND CLIENT_LIBRARIES ${VORBIS_LIBRARIES})
list(APPEND CLIENT_INCLUDE_DIRS ${VORBIS_INCLUDE_DIRS})
list(APPEND CLIENT_DEFINITIONS ${VORBIS_DEFINITIONS})
+22
View File
@@ -0,0 +1,22 @@
include(utils/disable_warnings)
include(utils/find_include_dirs)
set(INTERNAL_ZLIB_DIR ${SOURCE_DIR}/thirdparty/zlib-1.3.1)
if(USE_INTERNAL_ZLIB)
file(GLOB_RECURSE ZLIB_SOURCES ${INTERNAL_ZLIB_DIR}/*.c)
disable_warnings(ZLIB_SOURCES)
find_include_dirs(ZLIB_INCLUDE_DIRS ${ZLIB_SOURCES})
set(ZLIB_DEFINITIONS NO_GZIP)
list(APPEND SERVER_LIBRARY_SOURCES ${ZLIB_SOURCES})
list(APPEND CLIENT_LIBRARY_SOURCES ${ZLIB_SOURCES})
else()
find_package(ZLIB REQUIRED)
endif()
list(APPEND SERVER_LIBRARIES ${ZLIB_LIBRARIES})
list(APPEND SERVER_INCLUDE_DIRS ${ZLIB_INCLUDE_DIRS})
list(APPEND SERVER_DEFINITIONS ${ZLIB_DEFINITIONS})
list(APPEND CLIENT_LIBRARIES ${ZLIB_LIBRARIES})
list(APPEND CLIENT_INCLUDE_DIRS ${ZLIB_INCLUDE_DIRS})
list(APPEND CLIENT_DEFINITIONS ${ZLIB_DEFINITIONS})