CMake build system
This commit is contained in:
1 parent
4fed624cff
commit
4c6f3f81eb
40 files changed
+1641
No files matched your search
@@ -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)
|
||||
@@ -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})
|
||||
@@ -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})
|
||||
@@ -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})
|
||||
@@ -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})
|
||||
@@ -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()
|
||||
@@ -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})
|
||||
@@ -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})
|
||||
@@ -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})
|
||||
@@ -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})
|
||||
Reference in new issue
Block a user