163 lines
4.6 KiB
CMake
163 lines
4.6 KiB
CMake
cmake_minimum_required(VERSION 3.10)
|
|
project(quake3e)
|
|
|
|
|
|
option(USE_SDL "" ON)
|
|
option(USE_CURL "" ON)
|
|
option(USE_LOCAL_HEADERS "" ON)
|
|
option(USE_VULKAN "" OFF)
|
|
option(USE_SYSTEM_JPEG "" OFF)
|
|
|
|
option(USE_RENDERER_DLOPEN "" OFF)
|
|
|
|
|
|
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules)
|
|
|
|
aux_source_directory(code/libjpeg JPEG_SRCS)
|
|
add_library(jpeg ${JPEG_SRCS})
|
|
|
|
|
|
aux_source_directory(code/server SERVER_SRCS)
|
|
list(REMOVE_ITEM SERVER_SRCS code/server/sv_rankings.c)
|
|
add_library(server ${SERVER_SRCS})
|
|
add_library(server_ded ${SERVER_SRCS})
|
|
target_compile_definitions(server_ded PUBLIC -DDEDICATED)
|
|
|
|
|
|
aux_source_directory(code/qcommon QCOMMON_SRCS)
|
|
list(FILTER QCOMMON_SRCS EXCLUDE REGEX ".*vm_[alx].*.c")
|
|
|
|
|
|
add_library(qcommon ${QCOMMON_SRCS} ${VM_SRC})
|
|
target_link_libraries(qcommon PRIVATE server)
|
|
add_library(qcommon_ded ${QCOMMON_SRCS} ${VM_SRC})
|
|
target_link_libraries(qcommon_ded PUBLIC server_ded)
|
|
|
|
|
|
aux_source_directory(code/botlib BOTLIB_SRCS)
|
|
add_library(botlib ${BOTLIB_SRCS})
|
|
target_compile_definitions(botlib PRIVATE -DBOTLIB)
|
|
|
|
|
|
aux_source_directory(code/client CLIENT_SRCS)
|
|
if(NOT USE_CURL)
|
|
list(REMOVE_ITEM CLIENT_SRCS code/client/cl_curl.c)
|
|
endif(NOT USE_CURL)
|
|
add_library(client ${CLIENT_SRCS})
|
|
target_link_libraries(client qcommon jpeg)
|
|
if(USE_SYSTEM_JPEG)
|
|
target_compile_definitions(client PRIVATE -DUSE_SYSTEM_JPEG)
|
|
endif(USE_SYSTEM_JPEG)
|
|
if(USE_VULKAN)
|
|
target_compile_definitions(client PRIVATE -DUSE_VULKAN_API)
|
|
endif(USE_VULKAN)
|
|
|
|
|
|
|
|
aux_source_directory(code/renderercommon RENDERER_COMMON_SRCS)
|
|
add_library(renderer_common ${RENDERER_COMMON_SRCS})
|
|
|
|
|
|
aux_source_directory(code/renderer RENDERER_SRCS)
|
|
add_library(renderer ${RENDERER_SRCS})
|
|
target_link_libraries(renderer renderer_common)
|
|
|
|
|
|
aux_source_directory(code/renderervk RENDERER_VK_SRCS)
|
|
add_library(renderer_vk ${RENDERER_VK_SRCS})
|
|
target_link_libraries(renderer_vk renderer_common)
|
|
|
|
|
|
if(USE_SDL)
|
|
aux_source_directory(code/sdl SDL_SRCS)
|
|
add_library(qsdl ${SDL_SRCS})
|
|
find_package(SDL2 REQUIRED)
|
|
target_link_libraries(qsdl SDL2::Main)
|
|
if(USE_VULKAN)
|
|
target_compile_definitions(qsdl PRIVATE -DUSE_VULKAN_API)
|
|
endif(USE_VULKAN)
|
|
|
|
endif()
|
|
|
|
if(UNIX)
|
|
set(Q3_SRCS
|
|
code/unix/unix_main.c
|
|
code/unix/unix_shared.c
|
|
code/unix/linux_signals.c)
|
|
|
|
if (NOT USE_SDL)
|
|
set(Q3_UI_SRCS
|
|
code/unix/linux_glimp.c
|
|
code/unix/linux_qgl.c
|
|
code/unix/linux_snd.c
|
|
code/unix/x11_dga.c
|
|
code/unix/x11_randr.c
|
|
code/unix/x11_vidmode.c)
|
|
if(USE_VULKAN_API)
|
|
list(APPEND Q3_UI_SRCS code/unix/linux_qvk.c)
|
|
endif(USE_VULKAN_API)
|
|
endif(NOT USE_SDL)
|
|
|
|
if(APPLE)
|
|
set(EXE_TYPE MACOSX_BUNDLE)
|
|
list(APPEND Q3_SRCS code/unix/quake3_flat.icns)
|
|
set_source_files_properties(code/unix/quake3_flat.icns PROPERTIES
|
|
MACOSX_PACKAGE_LOCATION Resources)
|
|
set(MACOSX_BUNDLE_ICON_FILE quake3_flat.icns)
|
|
endif()
|
|
elseif(WIN32)
|
|
set(EXE_TYPE WIN32)
|
|
set(Q3_SRCS
|
|
code/win32/win_main.c
|
|
code/win32/win_shared.c
|
|
code/win32/win_syscon.c
|
|
code/win32/win_resource.rc)
|
|
if (NOT USE_SDL)
|
|
set(Q3_UI_SRCS
|
|
code/win32/win_gamma.c
|
|
code/win32/win_glimp.c
|
|
code/win32/win_input.c
|
|
code/win32/win_minimize.c
|
|
code/win32/win_qgl.c
|
|
code/win32/win_snd.c
|
|
code/win32/win_wndproc.c)
|
|
if(USE_VULKAN_API)
|
|
list(APPEND Q3_UI_SRCS code/win32/win_qvk.c)
|
|
endif(USE_VULKAN_API)
|
|
endif(NOT USE_SDL)
|
|
endif(UNIX)
|
|
|
|
|
|
if(CMAKE_SYSTEM_PROCESSOR MATCHES AMD|x86)
|
|
set(VM_SRCS code/qcommon/vm_x86.c)
|
|
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES aarch|arm64)
|
|
set(VM_SRCS code/qcommon/vm_aarch64.c)
|
|
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES arm)
|
|
set(VM_SRCS code/qcommon/vm_armv7l.c)
|
|
else()
|
|
target_compile_definitions(qcommon PRIVATE -DNO_VM_COMPILED)
|
|
endif()
|
|
|
|
|
|
add_executable(quake3e ${EXE_TYPE} ${VM_SRCS} ${Q3_SRCS} ${Q3_UI_SRCS})
|
|
target_link_libraries(quake3e client botlib)
|
|
|
|
if(USE_SDL)
|
|
target_link_libraries(quake3e qsdl)
|
|
endif(USE_SDL)
|
|
|
|
if(USE_VULKAN)
|
|
target_link_libraries(quake3e renderer_vk)
|
|
target_compile_definitions(quake3e PRIVATE -DUSE_VULKAN_API)
|
|
else()
|
|
target_link_libraries(quake3e renderer)
|
|
endif(USE_VULKAN)
|
|
|
|
add_executable(quake3e.ded ${EXE_TYPE} ${VM_SRCS} ${Q3_SRCS})
|
|
target_link_libraries(quake3e.ded qcommon_ded botlib)
|
|
|
|
if(WIN32)
|
|
target_link_libraries(quake3e winmm comctl32 ws2_32)
|
|
target_link_libraries(quake3e-server winmm comctl32 ws2_32)
|
|
endif(WIN32)
|