Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .github/workflows/cibuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,8 @@ jobs:
echo "libraries_debuginfo=$(find . -regex '\.\/neo-\w*-\w*-libraries-debuginfo-\w*-\w*' -printf '%f')" >> "$GITHUB_ENV"
echo "dedicated=$(find . -regex '\.\/neo-\w*-\w*-dedicated-\w*-\w*' -printf '%f')" >> "$GITHUB_ENV"
echo "dedicated_debuginfo=$(find . -regex '\.\/neo-\w*-\w*-dedicated-debuginfo-\w*-\w*' -printf '%f')" >> "$GITHUB_ENV"
echo "utils=$(find . -regex '\.\/neo-\w*-\w*-utils-\w*-\w*' -printf '%f')" >> "$GITHUB_ENV"
echo "utils_debuginfo=$(find . -regex '\.\/neo-\w*-\w*-utils-debuginfo-\w*-\w*' -printf '%f')" >> "$GITHUB_ENV"
echo "gamedata=$(find . -regex '\.\/neo-\w*-\w*-gamedata' -printf '%f')" >> "$GITHUB_ENV"

- name: Upload libraries
Expand Down Expand Up @@ -160,6 +162,20 @@ jobs:
path: ${{ env.install_dir }}/${{ env.dedicated_debuginfo }}
if-no-files-found: error

- name: Upload utils
uses: actions/upload-artifact@v7
with:
name: ${{ env.utils }}
path: ${{ env.install_dir }}/${{ env.utils }}
if-no-files-found: error

- name: Upload utils debug information
uses: actions/upload-artifact@v7
with:
name: ${{ env.utils_debuginfo }}
path: ${{ env.install_dir }}/${{ env.utils_debuginfo }}
if-no-files-found: error

- name: Upload SourceMod gamedata
if: ${{ matrix.preset_build_type.name == 'release' }}
uses: actions/upload-artifact@v7
Expand Down
97 changes: 84 additions & 13 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ option(NEO_BUILD_WEAPON_PBK56S "Build PBK56S weapon" OFF)
option(NEO_BUILD_TIER1 "Build tier1 library" ON)
option(NEO_BUILD_MATHLIB "Build mathlib library" ON)
option(NEO_BUILD_VGUI_CONTROLS "Build vgui_controls library" ON)
option(NEO_BUILD_UTILS "Build utils" ON)
option(NEO_COPY_LIBRARIES "Copy libraries to bin directory by default" ON)
option(NEO_EXTRA_ASSETS "Copy extra assets into game/neo" ON)
set(NEO_EXTRA_ASSETS_ALT_PATH "" CACHE PATH "Alternate location to fetch the extra assets")
Expand Down Expand Up @@ -66,6 +67,7 @@ message(STATUS "Build PBK56S weapon (INCLUDE_WEP_PBK): ${NEO_BUILD_WEAPON_PBK56S
message(STATUS "Build tier1 library: ${NEO_BUILD_TIER1}")
message(STATUS "Build mathlib library: ${NEO_BUILD_MATHLIB}")
message(STATUS "Build vgui_controls library: ${NEO_BUILD_VGUI_CONTROLS}")
message(STATUS "Build utils: ${NEO_BUILD_UTILS}")
message(STATUS "Copy libraries to bin directory by default: ${NEO_COPY_LIBRARIES}")
message(STATUS "Copy extra assets into game/neo: ${NEO_EXTRA_ASSETS}")
message(STATUS "Alternate location to fetch the extra assets: ${NEO_EXTRA_ASSETS_ALT_PATH}")
Expand Down Expand Up @@ -94,8 +96,9 @@ set(CMAKE_CXX_STANDARD 20)
set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
set(CMAKE_POSITION_INDEPENDENT_CODE FALSE)

find_package(Threads REQUIRED)

set(SOURCESDK TRUE)
set(SOURCE_HAS_FREETYPE TRUE)

if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_compile_definitions(
Expand Down Expand Up @@ -211,7 +214,6 @@ if(OS_WINDOWS)
_ALLOW_RUNTIME_LIBRARY_MISMATCH
_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH
_ALLOW_MSC_VER_MISMATCH
fopen=dont_use_fopen
_MBCS
)

Expand Down Expand Up @@ -351,7 +353,6 @@ if(OS_LINUX OR OS_MACOS)
-fdiagnostics-show-option
-Wformat -Wformat-security


-Usprintf
-Ustrncpy

Expand All @@ -365,6 +366,15 @@ if(OS_LINUX OR OS_MACOS)
#-fms-extensions
)

if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
add_compile_options(
#-fno-strict-aliasing
-ffast-math
-fno-omit-frame-pointer
-ftree-vectorize
)
endif()

# Disable option for older compiler in docker
if(NOT CMAKE_CXX_COMPILER_VERSION STREQUAL "4.8.4")
add_compile_options(
Expand Down Expand Up @@ -451,6 +461,14 @@ if(NOT NEO_DEDICATED)
endif()

add_subdirectory(game/server)
add_subdirectory(raytrace)

if(NEO_BUILD_UTILS)
add_subdirectory(fgdlib)
add_subdirectory(utils)
endif()

add_subdirectory(tests)

if(NEO_COPY_LIBRARIES)
set(COPY_ALL_LIBS_FLAG ALL)
Expand Down Expand Up @@ -480,7 +498,7 @@ if(NEO_INSTALL_LIBRARIES)
set(LIBRARY_INSTALL_PATH "${INSTALL_PATH_PREFIX}-dedicated-${INSTALL_PATH_SUFFIX}")

if(NEO_USE_SEPARATE_BUILD_INFO)
set(SPLIT_DEBUG_INFO_INSTALL_PATH "${INSTALL_PATH_PREFIX}-dedicated-debuginfo-${INSTALL_PATH_SUFFIX}")
set(SPLIT_DEBUG_INFO_LIBRARIES_INSTALL_PATH "${INSTALL_PATH_PREFIX}-dedicated-debuginfo-${INSTALL_PATH_SUFFIX}")

if(OS_WINDOWS)
install(
Expand All @@ -491,7 +509,7 @@ if(NEO_INSTALL_LIBRARIES)

install(
FILES "$<TARGET_PDB_FILE:server>"
DESTINATION "${SPLIT_DEBUG_INFO_INSTALL_PATH}/x64"
DESTINATION "${SPLIT_DEBUG_INFO_LIBRARIES_INSTALL_PATH}/x64"
)
else()
get_target_property(SERVER_STRIPPED_FILE server STRIPPED_FILE)
Expand All @@ -503,7 +521,7 @@ if(NEO_INSTALL_LIBRARIES)
get_target_property(SERVER_SPLIT_DEBUG_INFO_FILE server SPLIT_DEBUG_INFO_FILE)
install(
FILES ${SERVER_SPLIT_DEBUG_INFO_FILE}
DESTINATION "${SPLIT_DEBUG_INFO_INSTALL_PATH}/linux64"
DESTINATION "${SPLIT_DEBUG_INFO_LIBRARIES_INSTALL_PATH}/linux64"
)
endif()
else()
Expand All @@ -515,9 +533,11 @@ if(NEO_INSTALL_LIBRARIES)
endif()
else()
set(LIBRARY_INSTALL_PATH "${INSTALL_PATH_PREFIX}-libraries-${INSTALL_PATH_SUFFIX}")
set(UTILS_INSTALL_PATH "${INSTALL_PATH_PREFIX}-utils-${INSTALL_PATH_SUFFIX}")

if(NEO_USE_SEPARATE_BUILD_INFO)
set(SPLIT_DEBUG_INFO_INSTALL_PATH "${INSTALL_PATH_PREFIX}-libraries-debuginfo-${INSTALL_PATH_SUFFIX}")
set(SPLIT_DEBUG_INFO_LIBRARIES_INSTALL_PATH "${INSTALL_PATH_PREFIX}-libraries-debuginfo-${INSTALL_PATH_SUFFIX}")
set(SPLIT_DEBUG_INFO_UTILS_INSTALL_PATH "${INSTALL_PATH_PREFIX}-utils-debuginfo-${INSTALL_PATH_SUFFIX}")

if(OS_WINDOWS)
install(
Expand All @@ -531,8 +551,25 @@ if(NEO_INSTALL_LIBRARIES)
$<TARGET_PDB_FILE:client>
$<TARGET_PDB_FILE:game_shader_dx9>
$<TARGET_PDB_FILE:server>
DESTINATION "${SPLIT_DEBUG_INFO_INSTALL_PATH}/x64"
DESTINATION "${SPLIT_DEBUG_INFO_LIBRARIES_INSTALL_PATH}/x64"
)

if(NEO_BUILD_UTILS)
install(
TARGETS vbsp vvis vrad vice
LIBRARY DESTINATION "${UTILS_INSTALL_PATH}/x64"
RUNTIME DESTINATION "${UTILS_INSTALL_PATH}/x64"
)

install(
FILES
$<TARGET_PDB_FILE:vbsp>
$<TARGET_PDB_FILE:vvis>
$<TARGET_PDB_FILE:vrad>
$<TARGET_PDB_FILE:vice>
DESTINATION "${SPLIT_DEBUG_INFO_UTILS_INSTALL_PATH}/x64"
)
endif()
else()
get_target_property(CLIENT_STRIPPED_FILE client STRIPPED_FILE)
get_target_property(SHADER_STRIPPED_FILE game_shader_dx9 STRIPPED_FILE)
Expand All @@ -544,24 +581,61 @@ if(NEO_INSTALL_LIBRARIES)
${SERVER_STRIPPED_FILE}
DESTINATION "${LIBRARY_INSTALL_PATH}/linux64"
)

get_target_property(CLIENT_SPLIT_DEBUG_INFO_FILE client SPLIT_DEBUG_INFO_FILE)
get_target_property(SHADER_SPLIT_DEBUG_INFO_FILE game_shader_dx9 SPLIT_DEBUG_INFO_FILE)
get_target_property(SERVER_SPLIT_DEBUG_INFO_FILE server SPLIT_DEBUG_INFO_FILE)

install(
FILES
${CLIENT_SPLIT_DEBUG_INFO_FILE}
${SHADER_SPLIT_DEBUG_INFO_FILE}
${SERVER_SPLIT_DEBUG_INFO_FILE}
DESTINATION "${SPLIT_DEBUG_INFO_INSTALL_PATH}/linux64"
DESTINATION "${SPLIT_DEBUG_INFO_LIBRARIES_INSTALL_PATH}/linux64"
)

if(NEO_BUILD_UTILS)
get_target_property(VBSP_STRIPPED_FILE vbsp STRIPPED_FILE)
get_target_property(VVIS_STRIPPED_FILE vvis STRIPPED_FILE)
get_target_property(VRAD_STRIPPED_FILE vrad STRIPPED_FILE)
get_target_property(VICE_STRIPPED_FILE vice STRIPPED_FILE)

install(
FILES
${VBSP_STRIPPED_FILE}
${VVIS_STRIPPED_FILE}
${VRAD_STRIPPED_FILE}
${VICE_STRIPPED_FILE}
DESTINATION "${UTILS_INSTALL_PATH}/linux64"
)

get_target_property(VBSP_SPLIT_DEBUG_INFO_FILE vbsp SPLIT_DEBUG_INFO_FILE)
get_target_property(VVIS_SPLIT_DEBUG_INFO_FILE vvis SPLIT_DEBUG_INFO_FILE)
get_target_property(VRAD_SPLIT_DEBUG_INFO_FILE vrad SPLIT_DEBUG_INFO_FILE)
get_target_property(VICE_SPLIT_DEBUG_INFO_FILE vice SPLIT_DEBUG_INFO_FILE)

install(
FILES
${VBSP_SPLIT_DEBUG_INFO_FILE}
${VVIS_SPLIT_DEBUG_INFO_FILE}
${VRAD_SPLIT_DEBUG_INFO_FILE}
${VICE_SPLIT_DEBUG_INFO_FILE}
DESTINATION "${SPLIT_DEBUG_INFO_UTILS_INSTALL_PATH}/linux64"
)
endif()
endif()
else()
install(
TARGETS client game_shader_dx9 server
LIBRARY DESTINATION "${LIBRARY_INSTALL_PATH}/${PLATSUBDIR}"
RUNTIME DESTINATION "${LIBRARY_INSTALL_PATH}/${PLATSUBDIR}"
)

install(
TARGETS vbsp vvis vrad vice
LIBRARY DESTINATION "${UTILS_INSTALL_PATH}/${PLATSUBDIR}"
RUNTIME DESTINATION "${UTILS_INSTALL_PATH}/${PLATSUBDIR}"
)
endif()
endif()

Expand Down Expand Up @@ -620,6 +694,3 @@ if(NEO_EXTRA_ASSETS)
"${CMAKE_SOURCE_DIR}/../game/neo")
endif()
endif()

add_subdirectory(tests)

File renamed without changes.
22 changes: 22 additions & 0 deletions src/cmake/FindLibZ.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
if(OS_WINDOWS)
set(LIBZ_LIBRARY_NAME libz.lib)
elseif(OS_LINUX OR OS_MACOS)
return() # TODO Linux
endif()

find_file(LIBZ_LIBRARY
NAMES ${LIBZ_LIBRARY_NAME}
PATHS "${LIBPUBLIC}"
NO_CACHE
NO_DEFAULT_PATH
REQUIRED
)

mark_as_advanced(LIBZ_LIBRARY)

add_library(libz_libz STATIC IMPORTED GLOBAL)
add_library(libz::libz ALIAS libz_libz)

set_target_properties(libz_libz PROPERTIES
IMPORTED_LOCATION "${LIBZ_LIBRARY}"
)
7 changes: 6 additions & 1 deletion src/cmake/FindTier0.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,9 @@ elseif(OS_LINUX OR OS_MACOS)
)
endif()

set_target_properties(tier0_tier0 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/public/tier0")
target_include_directories(tier0_tier0
INTERFACE
"${CMAKE_SOURCE_DIR}/common"
"${CMAKE_SOURCE_DIR}/public"
"${CMAKE_SOURCE_DIR}/public/tier0"
)
11 changes: 10 additions & 1 deletion src/cmake/FindTier2.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,14 @@ add_library(tier2::tier2 ALIAS tier2_tier2)

set_target_properties(tier2_tier2 PROPERTIES
IMPORTED_LOCATION "${TIER2_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/public/tier2"
)

target_include_directories(tier2_tier2
INTERFACE
"${CMAKE_SOURCE_DIR}/public/tier2"
)

target_link_libraries(tier2_tier2
INTERFACE
tier1::tier1
)
11 changes: 10 additions & 1 deletion src/cmake/FindTier3.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,14 @@ add_library(tier3::tier3 ALIAS tier3_tier3)

set_target_properties(tier3_tier3 PROPERTIES
IMPORTED_LOCATION "${TIER3_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/public/tier3"
)

target_include_directories(tier3_tier3
INTERFACE
"${CMAKE_SOURCE_DIR}/public/tier3"
)

target_link_libraries(tier3_tier3
INTERFACE
tier2::tier2
)
5 changes: 4 additions & 1 deletion src/cmake/FindVSTDLib.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,7 @@ elseif(OS_LINUX OR OS_MACOS)
)
endif()

set_target_properties(vstdlib_vstdlib PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/public/vstdlib")
target_include_directories(vstdlib_vstdlib
INTERFACE
"${CMAKE_SOURCE_DIR}/public/vstdlib"
)
33 changes: 29 additions & 4 deletions src/cmake/utils.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -129,14 +129,39 @@ function(split_debug_information)
endif()

get_target_property(TARGET_OUTPUT_NAME ${PARSED_ARGS_TARGET} OUTPUT_NAME)

if(NOT TARGET_OUTPUT_NAME)
set(TARGET_OUTPUT_NAME "${PARSED_ARGS_TARGET}")
endif()

set(SPLITDEBUG_SOURCE "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_OUTPUT_NAME}.so")
set(SPLITDEBUG_TARGET "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_SUBDIRECTORY}/${TARGET_OUTPUT_NAME}.so")
set(SPLITDEBUG_TARGET_DEBUG "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_SUBDIRECTORY}/${TARGET_OUTPUT_NAME}.so.debug")
get_target_property(TARGET_PREFIX ${PARSED_ARGS_TARGET} PREFIX)
if("${TARGET_PREFIX}" STREQUAL "TARGET_PREFIX-NOTFOUND")
get_target_property(TARGET_TYPE ${PARSED_ARGS_TARGET} TYPE)
if(TARGET_TYPE STREQUAL "EXECUTABLE")
set(TARGET_PREFIX "")
elseif(TARGET_TYPE STREQUAL "SHARED_LIBRARY")
set(TARGET_PREFIX "${CMAKE_SHARED_LIBRARY_PREFIX}")
else()
message(WARNING "Unknown TARGET_TYPE value")
endif()
endif()

get_target_property(TARGET_SUFFIX ${PARSED_ARGS_TARGET} SUFFIX)
if("${TARGET_SUFFIX}" STREQUAL "TARGET_SUFFIX-NOTFOUND")
get_target_property(TARGET_TYPE ${PARSED_ARGS_TARGET} TYPE)
if(TARGET_TYPE STREQUAL "EXECUTABLE")
set(TARGET_SUFFIX "${CMAKE_EXECUTABLE_SUFFIX}")
elseif(TARGET_TYPE STREQUAL "SHARED_LIBRARY")
set(TARGET_SUFFIX "${CMAKE_SHARED_LIBRARY_SUFFIX}")
else()
message(WARNING "Unknown TARGET_TYPE value")
endif()
endif()

message("!!! ${TARGET_PREFIX}${TARGET_OUTPUT_NAME}${TARGET_SUFFIX}") # TODO remove

set(SPLITDEBUG_SOURCE "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PREFIX}${TARGET_OUTPUT_NAME}${TARGET_SUFFIX}")
set(SPLITDEBUG_TARGET "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_SUBDIRECTORY}/${TARGET_PREFIX}${TARGET_OUTPUT_NAME}${TARGET_SUFFIX}")
set(SPLITDEBUG_TARGET_DEBUG "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_SUBDIRECTORY}/${TARGET_PREFIX}${TARGET_OUTPUT_NAME}${TARGET_SUFFIX}.debug")

add_custom_target(
${PARSED_ARGS_TARGET}_split_debug_information
Expand Down
Loading
Loading