2
0
mirror of https://github.com/rehlds/revoice.git synced 2025-03-03 09:05:29 +03:00

Replace Gradle and MSVC with CMake build system

This commit is contained in:
the_hunter 2025-02-17 11:12:44 +02:00 committed by the_hunter
parent f830f79f33
commit ac92a1fbc8
24 changed files with 2296 additions and 35 deletions

167
CMakeLists.txt Normal file
View File

@ -0,0 +1,167 @@
cmake_minimum_required(VERSION 3.21...3.30)
#-------------------------------------------------------------------------------
# Project Definition
#-------------------------------------------------------------------------------
project( "ReVoice"
DESCRIPTION "Fix for voice chat between Steam and non-Steam clients for ReHLDS"
HOMEPAGE_URL "https://github.com/rehlds/ReVoice"
LANGUAGES "C" "CXX"
)
#-------------------------------------------------------------------------------
# Options
#-------------------------------------------------------------------------------
option(USE_LINKER_GOLD "Use the Gold linker when compiling with GCC" ON )
option(USE_LINKER_LLD "Use the LLD linker when compiling with Clang" ON )
option(LINK_STATIC_MSVC_RT "Link MSVC runtime library statically" OFF)
option(LINK_STATIC_GCC "Link libgcc library statically" OFF)
option(LINK_STATIC_STDCPP "Link C++ standard library statically" OFF)
option(LINK_LIBCPP "Link libc++ as the C++ standard library instead of libstdc++" OFF)
option(ENABLE_RTTI "Enable support for run-time type information" OFF)
option(ENABLE_EXCEPTIONS "Enable support for exception handling" OFF)
option(ENABLE_ASAN "Enable AddressSanitizer" OFF)
option(ENABLE_UBSAN "Enable UndefinedBehaviorSanitizer" OFF)
option(ENABLE_LINK_TRACE "Enable linker trace flag (detailed output of the linking process)" OFF)
option(OPTIMIZE_FOR_CURRENT_CPU "Generate code optimized for the current (native) processor" OFF)
#-------------------------------------------------------------------------------
# Output Directories
#-------------------------------------------------------------------------------
if(NOT BIN_OUTPUT_DIR)
set(BIN_OUTPUT_DIR "${CMAKE_SOURCE_DIR}/bin/${CMAKE_CXX_COMPILER_ID}-$<CONFIG>")
endif()
#-------------------------------------------------------------------------------
# System Environment
#-------------------------------------------------------------------------------
include("ProcessorCount")
ProcessorCount(NUM_CORES)
if(NUM_CORES EQUAL 0)
set(NUM_CORES 4)
endif()
if(PROCESSOR_CORES GREATER 8)
set(PROCESSOR_CORES 8)
endif()
string(TIMESTAMP CURRENT_YEAR "%Y")
#-------------------------------------------------------------------------------
# CMake Policies
#-------------------------------------------------------------------------------
# Honor visibility properties for all target types
set(CMAKE_POLICY_DEFAULT_CMP0063 NEW)
# INTERPROCEDURAL_OPTIMIZATION is enforced when enabled
set(CMAKE_POLICY_DEFAULT_CMP0069 NEW)
# target_sources() command converts relative paths to absolute
set(CMAKE_POLICY_DEFAULT_CMP0076 NEW)
# option() honors normal variables
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
# Control generation of Position Independent Executable (PIE)
set(CMAKE_POLICY_DEFAULT_CMP0083 NEW)
# MSVC runtime library flags are selected by an abstraction (CMAKE_MSVC_RUNTIME_LIBRARY)
set(CMAKE_POLICY_DEFAULT_CMP0091 NEW)
# MSVC warning flags are not in CMAKE_<LANG>_FLAGS by default
set(CMAKE_POLICY_DEFAULT_CMP0092 NEW)
# Link properties are transitive over private dependencies of static libraries
set(CMAKE_POLICY_DEFAULT_CMP0099 NEW)
# Makefile generators do not repeat custom commands from target dependencies
set(CMAKE_POLICY_DEFAULT_CMP0113 NEW)
# ExternalProject step targets fully adopt their steps
set(CMAKE_POLICY_DEFAULT_CMP0114 NEW)
# Ninja generators transform DEPFILEs from add_custom_command()
set(CMAKE_POLICY_DEFAULT_CMP0116 NEW)
# MSVC RTTI flag /GR is not added to CMAKE_CXX_FLAGS by default
set(CMAKE_POLICY_DEFAULT_CMP0117 NEW)
# LANGUAGE source file property explicitly compiles as language
set(CMAKE_POLICY_DEFAULT_CMP0119 NEW)
#-------------------------------------------------------------------------------
# Build Configuration
#-------------------------------------------------------------------------------
# Building shared libraries instead of static by default
set(BUILD_SHARED_LIBS OFF)
# First search using Config mode before falling back to Module mode
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
# Set the possible build types
set(CMAKE_CONFIGURATION_TYPES "Debug" "Release" "RelWithDebInfo")
# Set the C language standard
set(CMAKE_C_STANDARD 11)
# Enforce the use of the C language standard
set(CMAKE_C_STANDARD_REQUIRED ON)
# Set the visibility of symbols in C object files
set(CMAKE_C_VISIBILITY_PRESET hidden)
# Set the C++ language standard
set(CMAKE_CXX_STANDARD 14)
# Enforce the use of the C++ language standard
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Set the visibility of symbols in C++ object files
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
# Interprocedural optimization for specified build types
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_DEBUG OFF)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_MINSIZEREL ON)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO ON)
# Dependency optimization for faster builds
set(CMAKE_OPTIMIZE_DEPENDENCIES ON)
# Position independent code generation
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
# Hiding of inline functions in shared libraries
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
# Export the compile commands to a JSON file
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# Enable error reporting for deprecated features
set(CMAKE_ERROR_DEPRECATED ON)
#-------------------------------------------------------------------------------
# CMake Modules and Dependencies
#-------------------------------------------------------------------------------
include("cmake/AppVersion.cmake")
include("cmake/CompileOptions.cmake")
#-------------------------------------------------------------------------------
# Subdirectories
#-------------------------------------------------------------------------------
add_subdirectory("dep/speex")
add_subdirectory("dep/silk")
add_subdirectory("dep/opus")
add_subdirectory("dep/rehlsdk")
add_subdirectory("dep/metamod")
add_subdirectory("revoice")

404
CMakePresets.json Normal file
View File

@ -0,0 +1,404 @@
{
"version": 3,
"cmakeMinimumRequired": {
"major": 3,
"minor": 21
},
"configurePresets": [
{
"name": "base",
"description": "Base configuration with common settings and options",
"binaryDir": "${sourceDir}/build/${presetName}",
"warnings": {
"deprecated": true,
"dev": true,
"systemVars": true,
"uninitialized": false,
"unusedCli": false
},
"hidden": true
},
{
"name": "ninja",
"description": "Use Ninja generator",
"generator": "Ninja",
"architecture": {
"value": "x86",
"strategy": "external"
},
"hidden": true
},
{
"name": "ninja-multi-config",
"description": "Use Ninja Multi-Config generator",
"generator": "Ninja Multi-Config",
"architecture": {
"value": "x86",
"strategy": "external"
},
"hidden": true
},
{
"name": "vs2022",
"description": "Use Visual Studio 2022 generator",
"generator": "Visual Studio 17 2022",
"architecture": {
"value": "Win32",
"strategy": "set"
},
"hidden": true
},
{
"name": "gcc",
"description": "Use GCC compiler",
"cacheVariables": {
"CMAKE_C_COMPILER": "gcc",
"CMAKE_CXX_COMPILER": "g++"
},
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"inheritEnvironments": "linux_x86",
"intelliSenseMode": "linux-gcc-x86"
}
},
"hidden": true
},
{
"name": "clang",
"description": "Use Clang compiler",
"cacheVariables": {
"CMAKE_C_COMPILER": "clang",
"CMAKE_CXX_COMPILER": "clang++"
},
"hidden": true
},
{
"name": "msvc",
"description": "Use MSVC compiler",
"cacheVariables": {
"CMAKE_C_COMPILER": "cl",
"CMAKE_CXX_COMPILER": "cl"
},
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"inheritEnvironments": "msvc_x86_x64",
"intelliSenseMode": "windows-msvc-x86"
}
},
"hidden": true
},
{
"name": "clang-cl",
"description": "Use Clang-CL compiler",
"cacheVariables": {
"CMAKE_C_COMPILER": "clang-cl",
"CMAKE_CXX_COMPILER": "clang-cl",
"CMAKE_C_COMPILER_TARGET": "i386-pc-windows-msvc",
"CMAKE_CXX_COMPILER_TARGET": "i386-pc-windows-msvc"
},
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"inheritEnvironments": [
"msvc_x86_x64",
"clang_cl_x86"
],
"intelliSenseMode": "windows-clang-x86"
}
},
"hidden": true
},
{
"name": "linux",
"description": "Configuration for Linux",
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"hostOS": [
"Linux"
]
},
"microsoft.com/VisualStudioRemoteSettings/CMake/1.0": {
"copySources": true,
"copyBuildOutput": true,
"sourceDir": "$env{HOME}/.vs/$ms{projectDirName}",
"copySourcesOptions": {
"exclusionList": [
".git",
".vs",
"artifacts",
"bin",
"build",
"out",
"publish"
]
}
}
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Linux"
},
"hidden": true
},
{
"name": "windows",
"description": "Configuration for Windows",
"cacheVariables": {
"CMAKE_C_SIMULATE_ID": "MSVC",
"CMAKE_CXX_SIMULATE_ID": "MSVC"
},
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"hostOS": [
"Windows"
]
}
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
},
"hidden": true
},
{
"name": "ninja-gcc-linux",
"inherits": [
"base",
"ninja-multi-config",
"gcc",
"linux"
]
},
{
"name": "ninja-clang-linux",
"inherits": [
"base",
"ninja-multi-config",
"clang",
"linux"
]
},
{
"name": "ninja-msvc-windows",
"inherits": [
"base",
"ninja-multi-config",
"msvc",
"windows"
]
},
{
"name": "vs2022-msvc-windows",
"inherits": [
"base",
"vs2022",
"msvc",
"windows"
]
},
{
"name": "ninja-clang-windows",
"inherits": [
"base",
"ninja-multi-config",
"clang-cl",
"windows"
],
"hidden": true
}
],
"buildPresets": [
{
"name": "base",
"description": "Base configuration with common settings and options",
"verbose": false,
"hidden": true
},
{
"name": "linux",
"description": "Configuration for Linux",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Linux"
},
"hidden": true
},
{
"name": "windows",
"description": "Configuration for Windows",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
},
"hidden": true
},
{
"name": "ninja-gcc-linux-debug",
"displayName": "Ninja GCC Debug",
"description": "Build using Ninja Multi-Config generator and GCC compiler with Debug configuration",
"configurePreset": "ninja-gcc-linux",
"configuration": "Debug",
"inherits": [
"base",
"linux"
]
},
{
"name": "ninja-gcc-linux-release",
"displayName": "Ninja GCC Release",
"description": "Build using Ninja Multi-Config generator and GCC compiler with Release configuration",
"configurePreset": "ninja-gcc-linux",
"configuration": "Release",
"inherits": [
"base",
"linux"
]
},
{
"name": "ninja-gcc-linux-reldebinfo",
"displayName": "Ninja GCC RelWithDebInfo",
"description": "Build using Ninja Multi-Config generator and GCC compiler with RelWithDebInfo configuration",
"configurePreset": "ninja-gcc-linux",
"configuration": "RelWithDebInfo",
"inherits": [
"base",
"linux"
]
},
{
"name": "ninja-clang-linux-debug",
"displayName": "Ninja Clang Debug",
"description": "Build using Ninja Multi-Config generator and Clang compiler with Debug configuration",
"configurePreset": "ninja-clang-linux",
"configuration": "Debug",
"inherits": [
"base",
"linux"
]
},
{
"name": "ninja-clang-linux-release",
"displayName": "Ninja Clang Release",
"description": "Build using Ninja Multi-Config generator and Clang compiler with Release configuration",
"configurePreset": "ninja-clang-linux",
"configuration": "Release",
"inherits": [
"base",
"linux"
]
},
{
"name": "ninja-clang-linux-reldebinfo",
"displayName": "Ninja Clang RelWithDebInfo",
"description": "Build using Ninja Multi-Config generator and Clang compiler with RelWithDebInfo configuration",
"configurePreset": "ninja-clang-linux",
"configuration": "RelWithDebInfo",
"inherits": [
"base",
"linux"
]
},
{
"name": "ninja-clang-windows-debug",
"displayName": "Ninja Clang Debug",
"description": "Build using Ninja Multi-Config generator and Clang compiler with Debug configuration",
"configurePreset": "ninja-clang-windows",
"configuration": "Debug",
"inherits": [
"base",
"windows"
]
},
{
"name": "ninja-clang-windows-release",
"displayName": "Ninja Clang Release",
"description": "Build using Ninja Multi-Config generator and Clang compiler with Release configuration",
"configurePreset": "ninja-clang-windows",
"configuration": "Release",
"inherits": [
"base",
"windows"
]
},
{
"name": "ninja-clang-windows-reldebinfo",
"displayName": "Ninja Clang RelWithDebInfo",
"description": "Build using Ninja Multi-Config generator and Clang compiler with RelWithDebInfo configuration",
"configurePreset": "ninja-clang-windows",
"configuration": "RelWithDebInfo",
"inherits": [
"base",
"windows"
]
},
{
"name": "ninja-msvc-windows-debug",
"displayName": "Ninja MSVC Debug",
"description": "Build using Ninja Multi-Config generator and MSVC compiler with Debug configuration",
"configurePreset": "ninja-msvc-windows",
"configuration": "Debug",
"inherits": [
"base",
"windows"
]
},
{
"name": "ninja-msvc-windows-release",
"displayName": "Ninja MSVC Release",
"description": "Build using Ninja Multi-Config generator and MSVC compiler with Release configuration",
"configurePreset": "ninja-msvc-windows",
"configuration": "Release",
"inherits": [
"base",
"windows"
]
},
{
"name": "ninja-msvc-windows-reldebinfo",
"displayName": "Ninja MSVC RelWithDebInfo",
"description": "Build using Ninja Multi-Config generator and MSVC compiler with RelWithDebInfo configuration",
"configurePreset": "ninja-msvc-windows",
"configuration": "RelWithDebInfo",
"inherits": [
"base",
"windows"
]
},
{
"name": "vs2022-msvc-windows-debug",
"displayName": "VS 2022 MSVC Debug",
"description": "Build using Visual Studio 17 2022 generator and MSVC compiler with Debug configuration",
"configurePreset": "vs2022-msvc-windows",
"configuration": "Debug",
"inherits": [
"base",
"windows"
]
},
{
"name": "vs2022-msvc-windows-release",
"displayName": "VS 2022 MSVC Release",
"description": "Build using Visual Studio 17 2022 generator and MSVC compiler with Release configuration",
"configurePreset": "vs2022-msvc-windows",
"configuration": "Release",
"inherits": [
"base",
"windows"
]
},
{
"name": "vs2022-msvc-windows-reldebinfo",
"displayName": "VS 2022 MSVC RelWithDebInfo",
"description": "Build using Visual Studio 17 2022 generator and MSVC compiler with RelWithDebInfo configuration",
"configurePreset": "vs2022-msvc-windows",
"configuration": "RelWithDebInfo",
"inherits": [
"base",
"windows"
]
}
]
}

103
cmake/AppVersion.cmake Normal file
View File

@ -0,0 +1,103 @@
# Set the main version numbers
set(CMAKE_PROJECT_VERSION_MAJOR 1)
set(CMAKE_PROJECT_VERSION_MINOR 0)
set(SVN_OLD_NUMBER 664) # Base commit count offset
# Search for Git on the system
find_package(Git QUIET)
if(GIT_FOUND)
# Get the current branch name
execute_process(
COMMAND "${GIT_EXECUTABLE}" rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Get the total number of commits in the current branch
execute_process(
COMMAND "${GIT_EXECUTABLE}" rev-list --count ${GIT_BRANCH}
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_COMMIT_COUNT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Add the base commit count offset to the total commit count
math(EXPR GIT_COMMIT_COUNT "${GIT_COMMIT_COUNT} + ${SVN_OLD_NUMBER}")
# Get the full SHA hash of the current commit
execute_process(
COMMAND "${GIT_EXECUTABLE}" rev-parse --verify HEAD
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_SHA_FULL
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Extract the first 7 characters of the SHA
string(SUBSTRING "${GIT_SHA_FULL}" 0 7 GIT_COMMIT_SHA)
# Get the date of the last commit
execute_process(
COMMAND "${GIT_EXECUTABLE}" log -1 --format=%cd --date=format:%Y-%m-%d
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_COMMIT_DATE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Get the time of the last commit
execute_process(
COMMAND "${GIT_EXECUTABLE}" log -1 --format=%cd --date=format:%H:%M:%S
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_COMMIT_TIME
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Check if there are any local modifications (uncommitted changes)
execute_process(
COMMAND "${GIT_EXECUTABLE}" ls-files -m
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_MODIFIED
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# If there are modified files, mark the version as modified
if(GIT_MODIFIED)
set(VERSION_MODIFIED "+m")
else()
set(VERSION_MODIFIED "")
endif()
# Get the repository's remote URL
execute_process(
COMMAND "${GIT_EXECUTABLE}" config --get remote.origin.url
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_URL
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Remove the ".git" suffix from the URL if it exists
string(REGEX REPLACE "\\.git$" "" GIT_URL "${GIT_URL}")
# Format the commit URL based on the hosting platform
if(GIT_URL MATCHES "bitbucket.org")
set(GIT_COMMIT_URL "${GIT_URL}/commits/")
else()
set(GIT_COMMIT_URL "${GIT_URL}/commit/")
endif()
else()
message(WARNING "Git not found, auto-versioning disabled")
set(GIT_COMMIT_COUNT 0)
set(GIT_COMMIT_SHA "unknown")
set(VERSION_MODIFIED "")
set(GIT_COMMIT_URL "unknown")
set(GIT_COMMIT_DATE "unknown")
set(GIT_COMMIT_TIME "unknown")
endif()
# Format the project version
set(CMAKE_PROJECT_VERSION_PATCH "${GIT_COMMIT_COUNT}")
set(CMAKE_PROJECT_VERSION_TWEAK "0")
set(CMAKE_PROJECT_VERSION
"${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}.${CMAKE_PROJECT_VERSION_PATCH}${VERSION_MODIFIED}"
)

View File

@ -0,0 +1,57 @@
#-------------------------------------------------------------------------------
# Platform-specific compile options
#-------------------------------------------------------------------------------
set(PLATFORM_OPTIONS_FILE "CompileOptions${CMAKE_SYSTEM_NAME}.cmake")
set(PLATFORM_OPTIONS_PATH "${CMAKE_SOURCE_DIR}/cmake/${PLATFORM_OPTIONS_FILE}")
include("${PLATFORM_OPTIONS_PATH}"
OPTIONAL
RESULT_VARIABLE IS_PLATFORM_OPTIONS_INCLUDED
)
if(IS_PLATFORM_OPTIONS_INCLUDED)
message(STATUS "Applied platform-specific compile options.")
else()
message(STATUS "No platform-specific compile options found. Using defaults.")
endif()
#-------------------------------------------------------------------------------
# Compiler-specific options
#-------------------------------------------------------------------------------
get_property(ENABLED_LANG_LIST GLOBAL PROPERTY ENABLED_LANGUAGES)
if(ENABLED_LANG_LIST)
foreach(lang IN LISTS ENABLED_LANG_LIST)
string(TOUPPER "${lang}" lang_prefix)
if(DEFINED CMAKE_${lang_prefix}_COMPILER_ID)
list(APPEND COMPILER_LIST "${CMAKE_${lang_prefix}_COMPILER_ID}")
endif()
endforeach()
list(REMOVE_DUPLICATES COMPILER_LIST)
foreach(compiler_id IN LISTS COMPILER_LIST)
if(NOT compiler_id OR "${compiler_id}" STREQUAL "")
continue()
endif()
set(COMPILER_OPTIONS_FILE "CompileOptions${CMAKE_SYSTEM_NAME}${compiler_id}.cmake")
set(COMPILER_OPTIONS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/${COMPILER_OPTIONS_FILE}")
include("${COMPILER_OPTIONS_PATH}"
OPTIONAL
RESULT_VARIABLE IS_COMPILER_OPTIONS_INCLUDED
)
if(IS_COMPILER_OPTIONS_INCLUDED)
message(STATUS "Applied ${compiler_id} compiler options.")
else()
message(STATUS "No ${compiler_id} compiler options found. Using defaults.")
endif()
endforeach()
else()
message(WARNING "No enabled languages found - skipping applying compiler-specific options.")
endif()

View File

@ -0,0 +1,126 @@
#-------------------------------------------------------------------------------
# C/CXX Flags
#-------------------------------------------------------------------------------
set(CMAKE_C_FLAGS_DEBUG
"-g -fno-omit-frame-pointer"
)
set(CMAKE_C_FLAGS_RELEASE
"-O3 -fno-stack-protector -fomit-frame-pointer -DNDEBUG"
)
set(CMAKE_C_FLAGS_MINSIZEREL
"-Os -fno-stack-protector -fomit-frame-pointer -DNDEBUG"
)
set(CMAKE_C_FLAGS_RELWITHDEBINFO
"-O2 -g -DNDEBUG"
)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
#-------------------------------------------------------------------------------
# Machine Architecture Flag
#-------------------------------------------------------------------------------
function(set_march_flag lang compiler_id compiler_version)
if(NOT compiler_id OR "${compiler_id}" STREQUAL "")
return()
endif()
if(OPTIMIZE_FOR_CURRENT_CPU)
set(march_flag "-march=native")
elseif("${compiler_id}" STREQUAL "GNU" AND "${compiler_version}" VERSION_LESS "11")
set(march_flag "-march=nehalem") # nehalem is close to x86-64-v2
elseif("${compiler_id}" STREQUAL "Clang" AND "${compiler_version}" VERSION_LESS "12")
set(march_flag "-march=nehalem")
else()
set(march_flag "-march=x86-64-v2")
endif()
string(STRIP "${CMAKE_${lang}_FLAGS} ${march_flag}" march_flag)
set(CMAKE_${lang}_FLAGS "${march_flag}" PARENT_SCOPE)
endfunction()
set_march_flag("C" "${CMAKE_C_COMPILER_ID}" "${CMAKE_C_COMPILER_VERSION}")
set_march_flag("CXX" "${CMAKE_CXX_COMPILER_ID}" "${CMAKE_CXX_COMPILER_VERSION}")
#-------------------------------------------------------------------------------
# Compile Options
#-------------------------------------------------------------------------------
add_compile_options(
-m32 # Generate 32-bit code
-mmmx # Enable MMX instruction set
-msse # Enable SSE instruction set
-msse2 # Enable SSE2 instruction set
-msse3 # Enable SSE3 instruction set
-mssse3 # Enable SSSE3 instruction set
-msse4 # Enable SSE4 instruction set
-msse4.1 # Enable SSE4.1 instruction set
-msse4.2 # Enable SSE4.2 instruction set
-mfpmath=sse # Use SSE for floating-point math
-pipe # Use pipes rather than intermediate files
-fdata-sections # Place data items in separate sections
-ffunction-sections # Place each function in its own section
# Link libc++ as the C++ standard library
$<$<BOOL:${LINK_LIBCPP}>:-stdlib=libc++>
# Enable AddressSanitizer instrumentation
$<$<BOOL:${ENABLE_ASAN}>:-fsanitize=address>
# Enable UndefinedBehaviorSanitizer instrumentation
$<$<BOOL:${ENABLE_UBSAN}>:-fsanitize=undefined>
# Enable/disable Run-Time Type Information
$<$<COMPILE_LANGUAGE:CXX>:$<IF:$<BOOL:${ENABLE_RTTI}>,-frtti,-fno-rtti>>
# Enable/disable exception handling
$<$<COMPILE_LANGUAGE:CXX>:$<IF:$<BOOL:${ENABLE_EXCEPTIONS}>,-fexceptions,-fno-exceptions>>
)
#-------------------------------------------------------------------------------
# Link Options
#-------------------------------------------------------------------------------
add_link_options(
-m32 # Generate 32-bit code
-Wl,--as-needed # Only link libraries that are actually used
-Wl,--gc-sections # Remove unused code sections during linking
-Wl,--no-undefined # Report undefined symbols as errors
# ASAN is disabled: Warn about common symbols
$<$<NOT:$<BOOL:${ENABLE_ASAN}>>:-Wl,--warn-common>
# RelWithDebInfo: Compress debug sections using zlib
# $<$<CONFIG:RelWithDebInfo>:-Wl,--compress-debug-sections=zlib>
# Release and MinSizeRel: Strip all symbols
$<$<OR:$<CONFIG:Release>,$<CONFIG:MinSizeRel>>:-Wl,--strip-all>
# Non-Debug: Discard local symbols
$<$<NOT:$<CONFIG:Debug>>:-Wl,--discard-all>
# Link libc++ as the C++ standard library
$<$<BOOL:${LINK_LIBCPP}>:-stdlib=libc++>
# Enable AddressSanitizer instrumentation
$<$<BOOL:${ENABLE_ASAN}>:-fsanitize=address>
# Enable UndefinedBehaviorSanitizer instrumentation
$<$<BOOL:${ENABLE_UBSAN}>:-fsanitize=undefined>
# Link libgcc statically
$<$<BOOL:${LINK_STATIC_GCC}>:-static-libgcc>
# Link libstdc++ statically
$<$<BOOL:${LINK_STATIC_STDCPP}>:-static-libstdc++>
# Enable linker trace output
$<$<BOOL:${ENABLE_LINK_TRACE}>:-Wl,--trace>
)

View File

@ -0,0 +1,53 @@
#-------------------------------------------------------------------------------
# Compile Options
#-------------------------------------------------------------------------------
add_compile_options(
# Debug: Optimize for debugging experience
$<$<CONFIG:Debug>:-Og>
# Debug and RelWithDebInfo: Generate debug information for GDB
$<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:-ggdb>
)
# Enable full Link-Time Optimization for C
set(CMAKE_C_COMPILE_OPTIONS_IPO -flto=full)
# Enable full Link-Time Optimization for C++
set(CMAKE_CXX_COMPILE_OPTIONS_IPO -flto=full)
#-------------------------------------------------------------------------------
# Link Options
#-------------------------------------------------------------------------------
if(USE_LINKER_LLD)
add_link_options(
-fuse-ld=lld # Use the LLVM LLD linker
-Wl,--check-sections # Check section address conflicts
-Wl,--icf=safe # Enable safe identical code folding
-Wl,--warn-backrefs # Warn about backward references in the symbol table
-Wl,--warn-ifunc-textrel # Warn about text relocations in indirect functions
-Wl,--warn-symbol-ordering # Warn when symbol ordering is not as expected
#-Wl,--print-gc-sections # Print removed unused sections
#-Wl,--print-icf-sections # Print folded identical sections
# Non-Debug: Set linker optimization level
$<$<NOT:$<CONFIG:Debug>>:-Wl,-O2>
# Release and MinSizeRel: Set LTO optimization level
$<$<OR:$<CONFIG:Release>,$<CONFIG:MinSizeRel>>:-Wl,--lto-O3>
)
else()
add_link_options(
-Wl,--check-sections # Check section address conflicts
-Wl,--no-allow-shlib-undefined # Do not allow undefined symbols in shared libraries
-Wl,--warn-alternate-em # Warn about ELF machine type mismatches
# Non-Debug: Set linker optimization level
$<$<NOT:$<CONFIG:Debug>>:-Wl,-O3>
# Non-Debug: Enable linker relaxation optimizations
$<$<NOT:$<CONFIG:Debug>>:-Wl,--relax>
)
endif()

View File

@ -0,0 +1,76 @@
#-------------------------------------------------------------------------------
# Compile Options
#-------------------------------------------------------------------------------
add_compile_options(
# Debug: Optimize for debugging experience
$<$<CONFIG:Debug>:-Og>
# Debug and RelWithDebInfo: Generate debug information for GDB
$<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:-ggdb>
)
# Check if the GCC compiler version is greater than or equal to 12
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12)
set(CMAKE_C_COMPILE_OPTIONS_IPO
-flto=auto # Enable Link Time Optimization with automatic parallelization
-fno-fat-lto-objects # Disable generation of fat LTO objects
)
endif()
# Check if the G++ compiler version is greater than or equal to 12
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 12)
set(CMAKE_CXX_COMPILE_OPTIONS_IPO
-flto=auto
-fno-fat-lto-objects
)
endif()
#-------------------------------------------------------------------------------
# Link Options
#-------------------------------------------------------------------------------
if(USE_LINKER_GOLD)
add_link_options(
-fuse-ld=gold # Use the Gold linker
-Wl,--icf=safe # Enable safe identical code folding
-Wl,--icf-iterations=5 # Set identical code folding iterations
-Wl,--no-whole-archive # Do not force inclusion of entire static libraries
-Wl,--unresolved-symbols=report-all # Report all unresolved symbols
-Wl,--warn-execstack # Warn if an executable stack is detected
-Wl,--warn-search-mismatch # Warn about mismatches in library search paths
-Wl,--warn-shared-textrel # Warn about text relocations in shared objects
#-Wl,--warn-drop-version # Warn when version information is dropped
#-Wl,--print-gc-sections # Print removed unused sections
#-Wl,--print-icf-sections # Print folded identical sections
#-Wl,--stats # Print statistics about the linking process
# Non-Debug: Set linker optimization level
$<$<NOT:$<CONFIG:Debug>>:-Wl,-O3>
# Non-Debug: Enable linker relaxation optimizations
$<$<NOT:$<CONFIG:Debug>>:-Wl,--relax>
# Non-Debug: Disable incremental linking
$<$<NOT:$<CONFIG:Debug>>:-Wl,--no-incremental>
# ASAN is disabled: Detect One Definition Rule violations
$<$<NOT:$<BOOL:${ENABLE_ASAN}>>:-Wl,--detect-odr-violations>
# Release and MinSizeRel: Disable generation of unwind info
$<$<OR:$<CONFIG:Release>,$<CONFIG:MinSizeRel>>:-Wl,--no-ld-generated-unwind-info>
)
else()
add_link_options(
-Wl,--check-sections # Check section address conflicts
-Wl,--no-allow-shlib-undefined # Do not allow undefined symbols in shared libraries
-Wl,--warn-alternate-em # Warn about ELF machine type mismatches
# Non-Debug: Set linker optimization level
$<$<NOT:$<CONFIG:Debug>>:-Wl,-O3>
# Non-Debug: Enable linker relaxation optimizations
$<$<NOT:$<CONFIG:Debug>>:-Wl,--relax>
)
endif()

View File

@ -0,0 +1,157 @@
#-------------------------------------------------------------------------------
# C/CXX Flags
#-------------------------------------------------------------------------------
set(CMAKE_C_FLAGS
"/DWIN32 /D_WINDOWS"
)
set(CMAKE_C_FLAGS_DEBUG
"/Ob0 /Oi- /Od /Oy- /RTC1 /D_DEBUG"
)
set(CMAKE_C_FLAGS_RELEASE
"/O2 /Oi /Ob2 /Ot /Oy /DNDEBUG"
)
set(CMAKE_C_FLAGS_MINSIZEREL
"/O1 /Oi- /Ob1 /Os /Oy /DNDEBUG"
)
set(CMAKE_C_FLAGS_RELWITHDEBINFO
"/O2 /Oi /Ob1 /Ot /DNDEBUG"
)
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
#-------------------------------------------------------------------------------
# Compile Definitions
#-------------------------------------------------------------------------------
add_compile_definitions(
# Shared library definitions
$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:_USRDLL>
$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:_WINDLL>
$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:_WINDOWS>
# Static library definitions
$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,STATIC_LIBRARY>:_LIB>
# Enable/disable exception support
$<$<BOOL:${ENABLE_EXCEPTIONS}>:_HAS_EXCEPTIONS=1>
$<$<NOT:$<BOOL:${ENABLE_EXCEPTIONS}>>:_HAS_EXCEPTIONS=0>
)
#-------------------------------------------------------------------------------
# Compile Options
#-------------------------------------------------------------------------------
# Code generation
add_compile_options(
/QIntel-jcc-erratum # Mitigate performance impact of the Intel JCC erratum microcode update
/Gy # Enable function-level linking
# Non-Debug: Enable string pooling
$<IF:$<CONFIG:Debug>,/GF-,/GF>
# Non-Debug: Enable whole-program global data optimization
$<IF:$<CONFIG:Debug>,/Gw-,/Gw>
# Non-Debug executables: Optimize for Windows applications
$<$<AND:$<NOT:$<CONFIG:Debug>>,$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>>:/GA>
# Enable/disable standard exception handling
$<$<BOOL:${ENABLE_EXCEPTIONS}>:/EHsc>
$<$<NOT:$<BOOL:${ENABLE_EXCEPTIONS}>>:/EHs-c->
# Enable/disable Run-Time Type Information
$<$<COMPILE_LANGUAGE:CXX>:$<IF:$<BOOL:${ENABLE_RTTI}>,/GR,/GR->>
# Enable AddressSanitizer instrumentation
$<$<BOOL:${ENABLE_ASAN}>:/fsanitize=address>
)
# Language
add_compile_options(
# Non-Debug: Strip unreferenced COMDAT
$<$<NOT:$<CONFIG:Debug>>:/Zc:inline>
)
# Miscellaneous
add_compile_options(
/cgthreads${NUM_CORES} # Thread count for code generation
/utf-8 # Set source and execution character sets to UTF-8
/validate-charset # Validate the source file charset
# Debug and RelWithDebInfo: Enable concurrent PDB writes for shared access
$<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:/FS>
)
# Diagnostics
add_compile_options(
/diagnostics:caret # Display error diagnostics with caret indicators
/external:W0 # Suppress warnings from external headers
)
# Debug: Enable Just My Code debugging in Visual Studio
set(CMAKE_VS_JUST_MY_CODE_DEBUGGING $<CONFIG:Debug>)
#-------------------------------------------------------------------------------
# Link Options
#-------------------------------------------------------------------------------
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/INCREMENTAL")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/INCREMENTAL:NO")
set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "/INCREMENTAL:NO")
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/INCREMENTAL:NO")
set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
set(CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL}")
set(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}")
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL}")
set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}")
add_link_options(
# Debug and RelWithDebInfo: Generate debug information in PDB files
$<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:/DEBUG>
# Release and MinSizeRel: Disable debug information generation
$<$<OR:$<CONFIG:Release>,$<CONFIG:MinSizeRel>>:/DEBUG:NONE>
# Non-Debug: Enable Link Time Code Generation
$<$<NOT:$<CONFIG:Debug>>:/LTCG>
# Non-Debug: Apply link-time optimizations
$<$<NOT:$<CONFIG:Debug>>:/OPT:REF,ICF,LBR>
# Non-Debug: Treat warnings as errors
$<$<NOT:$<CONFIG:Debug>>:/WX>
# Enable/disable Safe Exception Handlers
$<$<BOOL:${ENABLE_EXCEPTIONS}>:/SAFESEH>
$<$<NOT:$<BOOL:${ENABLE_EXCEPTIONS}>>:/SAFESEH:NO>
# Enable AddressSanitizer instrumentation
$<$<BOOL:${ENABLE_ASAN}>:/fsanitize=address>
$<$<BOOL:${ENABLE_ASAN}>:/INFERASANLIBS>
# Enable/disable Output detailed linking info
$<$<BOOL:${ENABLE_LINK_TRACE}>:/VERBOSE:LIB>
)
#-------------------------------------------------------------------------------
# Link Libraries
#-------------------------------------------------------------------------------
# Set the MSVC runtime library variant (debug/release, static/dynamic)
set(CMAKE_MSVC_RUNTIME_LIBRARY
"MultiThreaded$<$<CONFIG:Debug>:Debug>$<$<NOT:$<BOOL:${LINK_STATIC_MSVC_RT}>>:DLL>"
)

View File

@ -0,0 +1,28 @@
#-------------------------------------------------------------------------------
# Compile Options
#-------------------------------------------------------------------------------
add_compile_options(
-mmmx # Enable MMX extended instruction set
-msse # Enable SSE extended instruction set
-msse2 # Enable SSE2 extended instruction set
-msse3 # Enable SSE3 extended instruction set
-mssse3 # Enable SSSE3 extended instruction set
-msse4.1 # Enable SSE4.1 extended instruction set
-msse4.2 # Enable SSE4.2 extended instruction set
-fcf-protection=none # Instrument control-flow architecture protection
# Debug and RelWithDebInfo: Generate complete debug information in PDB files
$<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:/Zi>
# Non-Debug: Enable automatic parallelization of loops
$<$<NOT:$<CONFIG:Debug>>:/Qvec>
# Generate instructions for a specified machine type
$<IF:$<BOOL:${OPTIMIZE_FOR_CURRENT_CPU}>,-march=native,-march=x86-64-v2>
)
# Set the MSVC debug information format (/Zi (ProgramDatabase))
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT
"$<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:ProgramDatabase>"
)

View File

@ -0,0 +1,51 @@
#-------------------------------------------------------------------------------
# Compile Options
#-------------------------------------------------------------------------------
if(ENABLE_ASAN)
set(DEBUG_FORMAT_FLAG "/Zi")
set(MSVC_DEBUG_INFORMATION_FORMAT "$<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:ProgramDatabase>")
else()
set(DEBUG_FORMAT_FLAG "/ZI")
set(MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug>:EditAndContinue>$<$<CONFIG:RelWithDebInfo>:ProgramDatabase>")
endif()
add_compile_options(
/MP # Multi-processor compilation
/arch:SSE2 # Minimum required instruction set
/fpcvt:BC # Floating-point to integer conversion compatibility
/Qspectre- # Disable Spectre variant 1 mitigations
/external:anglebrackets # Treat headers included with angle brackets < > as external
# Debug: Ensure distinct function addresses
$<$<CONFIG:Debug>:/Gu>
# Debug: Zero initialize padding for stack based class types
$<$<CONFIG:Debug>:/presetPadding>
# Debug: Generate enhanced debug info with 'Edit and Continue' support
$<$<CONFIG:Debug>:${DEBUG_FORMAT_FLAG}>
# RelWithDebInfo: Generate complete debug information in PDB files
$<$<CONFIG:RelWithDebInfo>:/Zi>
# Debug and RelWithDebInfo: Enable faster PDB generation
$<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:/Zf>
# Non-Debug: Enable whole program optimization
$<IF:$<CONFIG:Debug>,/GL-,/GL>
# Non-Debug: Enable automatic parallelization of loops
$<$<NOT:$<CONFIG:Debug>>:/Qpar>
)
# Set the MSVC debug information format (/ZI (EditAndContinue), /Zi (ProgramDatabase))
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "${MSVC_DEBUG_INFORMATION_FORMAT}")
#-------------------------------------------------------------------------------
# Link Options
#-------------------------------------------------------------------------------
add_link_options(
/CGTHREADS:${NUM_CORES} # Thread count for parallel linking
)

View File

@ -0,0 +1,54 @@
#-------------------------------------------------------------------------------
# Project Definition
#-------------------------------------------------------------------------------
project("MetamodSDK")
#-------------------------------------------------------------------------------
# Target Definition
#-------------------------------------------------------------------------------
set(TARGET_NAME "metamod")
set(TARGET_ALIAS "Metamod::${TARGET_NAME}")
add_library("${TARGET_NAME}" INTERFACE)
add_library("${TARGET_ALIAS}" ALIAS "${TARGET_NAME}")
#-------------------------------------------------------------------------------
# Source Files
#-------------------------------------------------------------------------------
target_sources("${TARGET_NAME}"
INTERFACE
"dllapi.h"
"engine_api.h"
"enginecallbacks.h"
"h_export.h"
"log_meta.h"
"meta_api.h"
"mhook.h"
"mreg.h"
"mutil.h"
"osdep.h"
"plinfo.h"
"sdk_util.h"
"types_meta.h"
)
#-------------------------------------------------------------------------------
# Include Directories
#-------------------------------------------------------------------------------
target_include_directories("${TARGET_NAME}"
INTERFACE
"${PROJECT_SOURCE_DIR}"
)
#-------------------------------------------------------------------------------
# Link Libraries
#-------------------------------------------------------------------------------
target_link_libraries("${TARGET_NAME}"
INTERFACE
"ReHLSDK::rehlsdk"
)

280
dep/opus/CMakeLists.txt Normal file
View File

@ -0,0 +1,280 @@
#-------------------------------------------------------------------------------
# Project Definition
#-------------------------------------------------------------------------------
project("Opus")
#-------------------------------------------------------------------------------
# Target Definition
#-------------------------------------------------------------------------------
set(TARGET_NAME "opus")
set(TARGET_ALIAS "Opus::${TARGET_NAME}")
add_library("${TARGET_NAME}")
add_library("${TARGET_ALIAS}" ALIAS "${TARGET_NAME}")
#-------------------------------------------------------------------------------
# Source Files
#-------------------------------------------------------------------------------
target_sources("${TARGET_NAME}"
PUBLIC
"include/opus_custom.h"
"include/opus_defines.h"
"include/opus_multistream.h"
"include/opus_types.h"
"include/opus.h"
PRIVATE
"src/analysis.c"
"src/analysis.h"
"src/mlp_data.c"
"src/mlp.c"
"src/mlp.h"
"src/opus_decoder.c"
"src/opus_encoder.c"
"src/opus_multistream_decoder.c"
"src/opus_multistream_encoder.c"
"src/opus_multistream.c"
"src/opus_private.h"
"src/opus.c"
"src/repacketizer.c"
"src/tansig_table.h"
"celt/_kiss_fft_guts.h"
"celt/arch.h"
"celt/bands.c"
"celt/bands.h"
"celt/celt_decoder.c"
"celt/celt_encoder.c"
"celt/celt_lpc.c"
"celt/celt_lpc.h"
"celt/celt.c"
"celt/celt.h"
"celt/cpu_support.h"
"celt/cwrs.c"
"celt/cwrs.h"
"celt/ecintrin.h"
"celt/entcode.c"
"celt/entcode.h"
"celt/entdec.c"
"celt/entdec.h"
"celt/entenc.c"
"celt/entenc.h"
"celt/fixed_debug.h"
"celt/fixed_generic.h"
"celt/float_cast.h"
"celt/kiss_fft.c"
"celt/kiss_fft.h"
"celt/laplace.c"
"celt/laplace.h"
"celt/mathops.c"
"celt/mathops.h"
"celt/mdct.c"
"celt/mdct.h"
"celt/mfrngcod.h"
"celt/modes.c"
"celt/modes.h"
"celt/os_support.h"
"celt/pitch.c"
"celt/pitch.h"
"celt/quant_bands.c"
"celt/quant_bands.h"
"celt/rate.c"
"celt/rate.h"
"celt/stack_alloc.h"
"celt/static_modes_fixed_arm_ne10.h"
"celt/static_modes_fixed.h"
"celt/static_modes_float_arm_ne10.h"
"celt/static_modes_float.h"
"celt/vq.c"
"celt/vq.h"
"celt/x86/celt_lpc_sse.c"
"celt/x86/celt_lpc_sse.h"
"celt/x86/pitch_sse.c"
"celt/x86/pitch_sse.h"
"celt/x86/pitch_sse2.c"
"celt/x86/pitch_sse4_1.c"
"celt/x86/x86_celt_map.c"
"celt/x86/x86cpu.c"
"celt/x86/x86cpu.h"
"silk/A2NLSF.c"
"silk/ana_filt_bank_1.c"
"silk/API.h"
"silk/biquad_alt.c"
"silk/bwexpander_32.c"
"silk/bwexpander.c"
"silk/check_control_input.c"
"silk/CNG.c"
"silk/code_signs.c"
"silk/control_audio_bandwidth.c"
"silk/control_codec.c"
"silk/control_SNR.c"
"silk/control.h"
"silk/debug.c"
"silk/debug.h"
"silk/dec_API.c"
"silk/decode_core.c"
"silk/decode_frame.c"
"silk/decode_indices.c"
"silk/decode_parameters.c"
"silk/decode_pitch.c"
"silk/decode_pulses.c"
"silk/decoder_set_fs.c"
"silk/define.h"
"silk/enc_API.c"
"silk/encode_indices.c"
"silk/encode_pulses.c"
"silk/errors.h"
"silk/gain_quant.c"
"silk/HP_variable_cutoff.c"
"silk/init_decoder.c"
"silk/init_encoder.c"
"silk/Inlines.h"
"silk/inner_prod_aligned.c"
"silk/interpolate.c"
"silk/lin2log.c"
"silk/log2lin.c"
"silk/LP_variable_cutoff.c"
"silk/LPC_analysis_filter.c"
"silk/LPC_inv_pred_gain.c"
"silk/MacroCount.h"
"silk/MacroDebug.h"
"silk/macros.h"
"silk/main.h"
"silk/NLSF_decode.c"
"silk/NLSF_del_dec_quant.c"
"silk/NLSF_encode.c"
"silk/NLSF_stabilize.c"
"silk/NLSF_unpack.c"
"silk/NLSF_VQ_weights_laroia.c"
"silk/NLSF_VQ.c"
"silk/NLSF2A.c"
"silk/NSQ_del_dec.c"
"silk/NSQ.c"
"silk/NSQ.h"
"silk/pitch_est_defines.h"
"silk/pitch_est_tables.c"
"silk/PLC.c"
"silk/PLC.h"
"silk/process_NLSFs.c"
"silk/quant_LTP_gains.c"
"silk/resampler_down2_3.c"
"silk/resampler_down2.c"
"silk/resampler_private_AR2.c"
"silk/resampler_private_down_FIR.c"
"silk/resampler_private_IIR_FIR.c"
"silk/resampler_private_up2_HQ.c"
"silk/resampler_private.h"
"silk/resampler_rom.c"
"silk/resampler_rom.h"
"silk/resampler_structs.h"
"silk/resampler.c"
"silk/shell_coder.c"
"silk/sigm_Q15.c"
"silk/SigProc_FIX.h"
"silk/sort.c"
"silk/stereo_decode_pred.c"
"silk/stereo_encode_pred.c"
"silk/stereo_find_predictor.c"
"silk/stereo_LR_to_MS.c"
"silk/stereo_MS_to_LR.c"
"silk/stereo_quant_pred.c"
"silk/structs.h"
"silk/sum_sqr_shift.c"
"silk/table_LSF_cos.c"
"silk/tables_gain.c"
"silk/tables_LTP.c"
"silk/tables_NLSF_CB_NB_MB.c"
"silk/tables_NLSF_CB_WB.c"
"silk/tables_other.c"
"silk/tables_pitch_lag.c"
"silk/tables_pulses_per_block.c"
"silk/tables.h"
"silk/tuning_parameters.h"
"silk/typedef.h"
"silk/VAD.c"
"silk/VQ_WMat_EC.c"
"silk/float/apply_sine_window_FLP.c"
"silk/float/autocorrelation_FLP.c"
"silk/float/burg_modified_FLP.c"
"silk/float/bwexpander_FLP.c"
"silk/float/corrMatrix_FLP.c"
"silk/float/encode_frame_FLP.c"
"silk/float/energy_FLP.c"
"silk/float/find_LPC_FLP.c"
"silk/float/find_LTP_FLP.c"
"silk/float/find_pitch_lags_FLP.c"
"silk/float/find_pred_coefs_FLP.c"
"silk/float/inner_product_FLP.c"
"silk/float/k2a_FLP.c"
"silk/float/levinsondurbin_FLP.c"
"silk/float/LPC_analysis_filter_FLP.c"
"silk/float/LPC_inv_pred_gain_FLP.c"
"silk/float/LTP_analysis_filter_FLP.c"
"silk/float/LTP_scale_ctrl_FLP.c"
"silk/float/main_FLP.h"
"silk/float/noise_shape_analysis_FLP.c"
"silk/float/pitch_analysis_core_FLP.c"
"silk/float/prefilter_FLP.c"
"silk/float/process_gains_FLP.c"
"silk/float/regularize_correlations_FLP.c"
"silk/float/residual_energy_FLP.c"
"silk/float/scale_copy_vector_FLP.c"
"silk/float/scale_vector_FLP.c"
"silk/float/schur_FLP.c"
"silk/float/SigProc_FLP.h"
"silk/float/solve_LS_FLP.c"
"silk/float/sort_FLP.c"
"silk/float/structs_FLP.h"
"silk/float/warped_autocorrelation_FLP.c"
"silk/float/wrappers_FLP.c"
)
#-------------------------------------------------------------------------------
# Include Directories
#-------------------------------------------------------------------------------
target_include_directories("${TARGET_NAME}"
PUBLIC
"${PROJECT_SOURCE_DIR}/include"
"${PROJECT_SOURCE_DIR}/celt"
"${PROJECT_SOURCE_DIR}/silk"
"${PROJECT_SOURCE_DIR}/silk/float"
)
#-------------------------------------------------------------------------------
# Target Properties
#-------------------------------------------------------------------------------
if(NOT WIN32)
set_target_properties("${TARGET_NAME}"
PROPERTIES
# Disable IPO as it causes some warnings
INTERPROCEDURAL_OPTIMIZATION OFF
INTERPROCEDURAL_OPTIMIZATION_MINSIZEREL OFF
INTERPROCEDURAL_OPTIMIZATION_RELEASE OFF
INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO OFF
)
endif()
#-------------------------------------------------------------------------------
# Compile Definitions
#-------------------------------------------------------------------------------
target_compile_definitions("${TARGET_NAME}"
PRIVATE
OPUS_BUILD
USE_ALLOCA
)
#-------------------------------------------------------------------------------
# Compile Options
#-------------------------------------------------------------------------------
target_compile_options("${TARGET_NAME}"
PRIVATE
$<IF:$<CXX_COMPILER_ID:MSVC>,/W0,-w>
)

177
dep/rehlsdk/CMakeLists.txt Normal file
View File

@ -0,0 +1,177 @@
#-------------------------------------------------------------------------------
# Project Definition
#-------------------------------------------------------------------------------
project("ReHLSDK")
#-------------------------------------------------------------------------------
# Target Definition
#-------------------------------------------------------------------------------
set(TARGET_NAME "rehlsdk")
set(TARGET_ALIAS "ReHLSDK::${TARGET_NAME}")
add_library("${TARGET_NAME}" INTERFACE)
add_library("${TARGET_ALIAS}" ALIAS "${TARGET_NAME}")
#-------------------------------------------------------------------------------
# Source Files
#-------------------------------------------------------------------------------
target_sources("${TARGET_NAME}"
INTERFACE
"common/BaseSystemModule.h"
"common/beamdef.h"
"common/cl_entity.h"
"common/com_model.h"
"common/con_nprint.h"
"common/const.h"
"common/crc.h"
"common/cvardef.h"
"common/demo_api.h"
"common/director_cmds.h"
"common/dlight.h"
"common/dll_state.h"
"common/entity_state.h"
"common/entity_types.h"
"common/enums.h"
"common/event_api.h"
"common/event_args.h"
"common/event_flags.h"
"common/hltv.h"
"common/IAdminServer.h"
"common/IBaseSystem.h"
"common/IDemoPlayer.h"
"common/IEngineWrapper.h"
"common/IGameServerData.h"
"common/in_buttons.h"
"common/IObjectContainer.h"
"common/ISystemModule.h"
"common/IVGuiModule.h"
"common/ivoicetweak.h"
"common/kbutton.h"
"common/mathlib.h"
"common/md5.h"
"common/net_api.h"
"common/netadr.h"
"common/netapi.h"
"common/nowin.h"
"common/ObjectDictionary.h"
"common/ObjectList.h"
"common/parsemsg.h"
"common/particledef.h"
"common/pmtrace.h"
"common/port.h"
"common/qfont.h"
"common/qlimits.h"
"common/quakedef.h"
"common/r_efx.h"
"common/r_studioint.h"
"common/ref_params.h"
"common/screenfade.h"
"common/Sequence.h"
"common/SteamAppStartUp.h"
"common/SteamCommon.h"
"common/studio_event.h"
"common/textconsole.h"
"common/TextConsoleUnix.h"
"common/TextConsoleWin32.h"
"common/TokenLine.h"
"common/triangleapi.h"
"common/usercmd.h"
"common/vmodes.h"
"common/weaponinfo.h"
"common/winsani_in.h"
"common/winsani_out.h"
"dlls/activity.h"
"dlls/activitymap.h"
"dlls/animation.h"
"dlls/basemonster.h"
"dlls/cbase.h"
"dlls/cdll_dll.h"
"dlls/client.h"
"dlls/decals.h"
"dlls/doors.h"
"dlls/effects.h"
"dlls/enginecallback.h"
"dlls/explode.h"
"dlls/extdll.h"
"dlls/func_break.h"
"dlls/game.h"
"dlls/gamerules.h"
"dlls/hornet.h"
"dlls/items.h"
"dlls/maprules.h"
"dlls/monsterevent.h"
"dlls/monsters.h"
"dlls/nodes.h"
"dlls/plane.h"
"dlls/player.h"
"dlls/saverestore.h"
"dlls/schedule.h"
"dlls/scriptevent.h"
"dlls/skill.h"
"dlls/soundent.h"
"dlls/spectator.h"
"dlls/talkmonster.h"
"dlls/teamplay_gamerules.h"
"dlls/trains.h"
"dlls/util.h"
"dlls/vector.h"
"dlls/weapons.h"
"engine/archtypes.h"
"engine/bspfile.h"
"engine/cmd_rehlds.h"
"engine/common_rehlds.h"
"engine/crc32c.h"
"engine/custom.h"
"engine/customentity.h"
"engine/d_local.h"
"engine/edict.h"
"engine/eiface.h"
"engine/FlightRecorder.h"
"engine/hookchains.h"
"engine/keydefs.h"
"engine/maintypes.h"
"engine/model.h"
"engine/modelgen.h"
"engine/osconfig.h"
"engine/pr_dlls.h"
"engine/progdefs.h"
"engine/progs.h"
"engine/rehlds_api.h"
"engine/rehlds_interfaces.h"
"engine/Sequence.h"
"engine/shake.h"
"engine/spritegn.h"
"engine/static_map.h"
"engine/studio.h"
"engine/sys_shared.h"
"engine/userid_rehlds.h"
"pm_shared/pm_debug.h"
"pm_shared/pm_defs.h"
"pm_shared/pm_info.h"
"pm_shared/pm_materials.h"
"pm_shared/pm_movevars.h"
"pm_shared/pm_shared.h"
"public/commonmacros.h"
"public/FileSystem.h"
"public/interface.h"
)
#-------------------------------------------------------------------------------
# Include Directories
#-------------------------------------------------------------------------------
target_include_directories("${TARGET_NAME}" SYSTEM
INTERFACE
"${PROJECT_SOURCE_DIR}/common"
"${PROJECT_SOURCE_DIR}/dlls"
"${PROJECT_SOURCE_DIR}/engine"
"${PROJECT_SOURCE_DIR}/pm_shared"
"${PROJECT_SOURCE_DIR}/public"
)

210
dep/silk/CMakeLists.txt Normal file
View File

@ -0,0 +1,210 @@
#-------------------------------------------------------------------------------
# Project Definition
#-------------------------------------------------------------------------------
project("Silk")
#-------------------------------------------------------------------------------
# Target Definition
#-------------------------------------------------------------------------------
set(TARGET_NAME "silk")
set(TARGET_ALIAS "Silk::${TARGET_NAME}")
add_library("${TARGET_NAME}")
add_library("${TARGET_ALIAS}" ALIAS "${TARGET_NAME}")
#-------------------------------------------------------------------------------
# Source Files
#-------------------------------------------------------------------------------
target_sources("${TARGET_NAME}"
PUBLIC
"include/SKP_Silk_control.h"
"include/SKP_Silk_errors.h"
"include/SKP_Silk_SDK_API.h"
"include/SKP_Silk_typedef.h"
PRIVATE
"src/SKP_Silk_A2NLSF.c"
"src/SKP_Silk_allpass_int_FLP.c"
"src/SKP_Silk_allpass_int.c"
"src/SKP_Silk_ana_filt_bank_1.c"
"src/SKP_Silk_apply_sine_window_FLP.c"
"src/SKP_Silk_autocorrelation_FLP.c"
"src/SKP_Silk_biquad_alt.c"
"src/SKP_Silk_biquad.c"
"src/SKP_Silk_burg_modified_FLP.c"
"src/SKP_Silk_bwexpander_32.c"
"src/SKP_Silk_bwexpander_FLP.c"
"src/SKP_Silk_bwexpander.c"
"src/SKP_Silk_CNG.c"
"src/SKP_Silk_code_signs.c"
"src/SKP_Silk_common_pitch_est_defines.h"
"src/SKP_Silk_control_audio_bandwidth.c"
"src/SKP_Silk_control_codec_FLP.c"
"src/SKP_Silk_corrMatrix_FLP.c"
"src/SKP_Silk_create_init_destroy.c"
"src/SKP_Silk_dec_API.c"
"src/SKP_Silk_decimate2_coarse_FLP.c"
"src/SKP_Silk_decimate2_coarsest_FLP.c"
"src/SKP_Silk_decode_core.c"
"src/SKP_Silk_decode_frame.c"
"src/SKP_Silk_decode_parameters.c"
"src/SKP_Silk_decode_pitch.c"
"src/SKP_Silk_decode_pulses.c"
"src/SKP_Silk_decoder_set_fs.c"
"src/SKP_Silk_define.h"
"src/SKP_Silk_detect_SWB_input.c"
"src/SKP_Silk_enc_API.c"
"src/SKP_Silk_encode_frame_FLP.c"
"src/SKP_Silk_encode_parameters.c"
"src/SKP_Silk_encode_pulses.c"
"src/SKP_Silk_energy_FLP.c"
"src/SKP_Silk_find_LPC_FLP.c"
"src/SKP_Silk_find_LTP_FLP.c"
"src/SKP_Silk_find_pitch_lags_FLP.c"
"src/SKP_Silk_find_pred_coefs_FLP.c"
"src/SKP_Silk_gain_quant.c"
"src/SKP_Silk_HP_variable_cutoff_FLP.c"
"src/SKP_Silk_init_encoder_FLP.c"
"src/SKP_Silk_Inlines.h"
"src/SKP_Silk_inner_product_FLP.c"
"src/SKP_Silk_interpolate.c"
"src/SKP_Silk_k2a_FLP.c"
"src/SKP_Silk_LBRR_reset.c"
"src/SKP_Silk_levinsondurbin_FLP.c"
"src/SKP_Silk_lin2log.c"
"src/SKP_Silk_log2lin.c"
"src/SKP_Silk_lowpass_int.c"
"src/SKP_Silk_lowpass_short.c"
"src/SKP_Silk_LP_variable_cutoff.c"
"src/SKP_Silk_LPC_analysis_filter_FLP.c"
"src/SKP_Silk_LPC_inv_pred_gain_FLP.c"
"src/SKP_Silk_LPC_inv_pred_gain.c"
"src/SKP_Silk_LPC_synthesis_filter.c"
"src/SKP_Silk_LPC_synthesis_order16.c"
"src/SKP_Silk_LSF_cos_table.c"
"src/SKP_Silk_LTP_analysis_filter_FLP.c"
"src/SKP_Silk_LTP_scale_ctrl_FLP.c"
"src/SKP_Silk_MA.c"
"src/SKP_Silk_macros.h"
"src/SKP_Silk_main_FLP.h"
"src/SKP_Silk_main.h"
"src/SKP_Silk_NLSF_MSVQ_decode_FLP.c"
"src/SKP_Silk_NLSF_MSVQ_decode.c"
"src/SKP_Silk_NLSF_MSVQ_encode_FLP.c"
"src/SKP_Silk_NLSF_stabilize.c"
"src/SKP_Silk_NLSF_VQ_rate_distortion_FLP.c"
"src/SKP_Silk_NLSF_VQ_sum_error_FLP.c"
"src/SKP_Silk_NLSF_VQ_weights_laroia_FLP.c"
"src/SKP_Silk_NLSF2A_stable.c"
"src/SKP_Silk_NLSF2A.c"
"src/SKP_Silk_noise_shape_analysis_FLP.c"
"src/SKP_Silk_NSQ_del_dec.c"
"src/SKP_Silk_NSQ.c"
"src/SKP_Silk_pitch_analysis_core_FLP.c"
"src/SKP_Silk_pitch_est_defines_FLP.h"
"src/SKP_Silk_pitch_est_defines.h"
"src/SKP_Silk_pitch_est_tables.c"
"src/SKP_Silk_PLC.c"
"src/SKP_Silk_PLC.h"
"src/SKP_Silk_prefilter_FLP.c"
"src/SKP_Silk_process_gains_FLP.c"
"src/SKP_Silk_process_NLSFs_FLP.c"
"src/SKP_Silk_quant_LTP_gains_FLP.c"
"src/SKP_Silk_range_coder.c"
"src/SKP_Silk_regularize_correlations_FLP.c"
"src/SKP_Silk_resampler_down2_3.c"
"src/SKP_Silk_resampler_down2.c"
"src/SKP_Silk_resampler_down3.c"
"src/SKP_Silk_resampler_private_AR2.c"
"src/SKP_Silk_resampler_private_ARMA4.c"
"src/SKP_Silk_resampler_private_copy.c"
"src/SKP_Silk_resampler_private_down_FIR.c"
"src/SKP_Silk_resampler_private_down4.c"
"src/SKP_Silk_resampler_private_IIR_FIR.c"
"src/SKP_Silk_resampler_private_up2_HQ.c"
"src/SKP_Silk_resampler_private_up4.c"
"src/SKP_Silk_resampler_private.h"
"src/SKP_Silk_resampler_rom.c"
"src/SKP_Silk_resampler_rom.h"
"src/SKP_Silk_resampler_structs.h"
"src/SKP_Silk_resampler_up2.c"
"src/SKP_Silk_resampler.c"
"src/SKP_Silk_residual_energy_FLP.c"
"src/SKP_Silk_scale_copy_vector_FLP.c"
"src/SKP_Silk_scale_vector_FLP.c"
"src/SKP_Silk_schur_FLP.c"
"src/SKP_Silk_setup_complexity.h"
"src/SKP_Silk_shell_coder.c"
"src/SKP_Silk_sigm_Q15.c"
"src/SKP_Silk_SigProc_FIX.h"
"src/SKP_Silk_SigProc_FLP.h"
"src/SKP_Silk_solve_LS_FLP.c"
"src/SKP_Silk_sort_FLP.c"
"src/SKP_Silk_sort.c"
"src/SKP_Silk_structs_FLP.h"
"src/SKP_Silk_structs.h"
"src/SKP_Silk_sum_sqr_shift.c"
"src/SKP_Silk_tables_FLP.h"
"src/SKP_Silk_tables_gain.c"
"src/SKP_Silk_tables_LTP.c"
"src/SKP_Silk_tables_NLSF_CB0_10_FLP.c"
"src/SKP_Silk_tables_NLSF_CB0_10.c"
"src/SKP_Silk_tables_NLSF_CB0_10.h"
"src/SKP_Silk_tables_NLSF_CB0_16_FLP.c"
"src/SKP_Silk_tables_NLSF_CB0_16.c"
"src/SKP_Silk_tables_NLSF_CB0_16.h"
"src/SKP_Silk_tables_NLSF_CB1_10_FLP.c"
"src/SKP_Silk_tables_NLSF_CB1_10.c"
"src/SKP_Silk_tables_NLSF_CB1_10.h"
"src/SKP_Silk_tables_NLSF_CB1_16_FLP.c"
"src/SKP_Silk_tables_NLSF_CB1_16.c"
"src/SKP_Silk_tables_NLSF_CB1_16.h"
"src/SKP_Silk_tables_other_FLP.c"
"src/SKP_Silk_tables_other.c"
"src/SKP_Silk_tables_pitch_lag.c"
"src/SKP_Silk_tables_pulses_per_block.c"
"src/SKP_Silk_tables_sign.c"
"src/SKP_Silk_tables_type_offset.c"
"src/SKP_Silk_tables.h"
"src/SKP_Silk_tuning_parameters.h"
"src/SKP_Silk_VAD.c"
"src/SKP_Silk_VQ_nearest_neighbor_FLP.c"
"src/SKP_Silk_warped_autocorrelation_FLP.c"
"src/SKP_Silk_wrappers_FLP.c"
)
#-------------------------------------------------------------------------------
# Include Directories
#-------------------------------------------------------------------------------
target_include_directories("${TARGET_NAME}"
PUBLIC
"${PROJECT_SOURCE_DIR}/include"
)
#-------------------------------------------------------------------------------
# Target Properties
#-------------------------------------------------------------------------------
if(NOT WIN32)
set_target_properties("${TARGET_NAME}"
PROPERTIES
# Disable IPO as it causes some warnings
INTERPROCEDURAL_OPTIMIZATION OFF
INTERPROCEDURAL_OPTIMIZATION_MINSIZEREL OFF
INTERPROCEDURAL_OPTIMIZATION_RELEASE OFF
INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO OFF
)
endif()
#-------------------------------------------------------------------------------
# Compile Options
#-------------------------------------------------------------------------------
target_compile_options("${TARGET_NAME}"
PRIVATE
$<IF:$<CXX_COMPILER_ID:MSVC>,/W0,-w>
)

93
dep/speex/CMakeLists.txt Normal file
View File

@ -0,0 +1,93 @@
#-------------------------------------------------------------------------------
# Project Definition
#-------------------------------------------------------------------------------
project("Speex")
#-------------------------------------------------------------------------------
# Target Definition
#-------------------------------------------------------------------------------
set(TARGET_NAME "speex")
set(TARGET_ALIAS "Speex::${TARGET_NAME}")
add_library("${TARGET_NAME}")
add_library("${TARGET_ALIAS}" ALIAS "${TARGET_NAME}")
#-------------------------------------------------------------------------------
# Source Files
#-------------------------------------------------------------------------------
target_sources("${TARGET_NAME}"
PUBLIC
"include/cb_search.h"
"include/filters_sse.h"
"include/filters.h"
"include/lpc.h"
"include/lsp.h"
"include/ltp_sse.h"
"include/ltp.h"
"include/math_approx.h"
"include/misc.h"
"include/modes.h"
"include/nb_celp.h"
"include/quant_lsp.h"
"include/sb_celp.h"
"include/speex_bits.h"
"include/speex_callbacks.h"
"include/speex_header.h"
"include/speex_stereo.h"
"include/speex.h"
"include/stack_alloc.h"
"include/vbr.h"
"include/vq.h"
PRIVATE
"src/bits.c"
"src/cb_search.c"
"src/exc_10_16_table.c"
"src/exc_10_32_table.c"
"src/exc_20_32_table.c"
"src/exc_5_256_table.c"
"src/exc_5_64_table.c"
"src/exc_8_128_table.c"
"src/filters.c"
"src/gain_table_lbr.c"
"src/gain_table.c"
"src/hexc_10_32_table.c"
"src/hexc_table.c"
"src/high_lsp_tables.c"
"src/lpc.c"
"src/lsp_tables_nb.c"
"src/lsp.c"
"src/ltp.c"
"src/math_approx.c"
"src/misc.c"
"src/modes.c"
"src/nb_celp.c"
"src/quant_lsp.c"
"src/sb_celp.c"
"src/speex_callbacks.c"
"src/speex_header.c"
"src/stereo.c"
"src/vbr.c"
"src/vq.c"
)
#-------------------------------------------------------------------------------
# Include Directories
#-------------------------------------------------------------------------------
target_include_directories("${TARGET_NAME}"
PUBLIC
"${PROJECT_SOURCE_DIR}/include"
)
#-------------------------------------------------------------------------------
# Compile Options
#-------------------------------------------------------------------------------
target_compile_options("${TARGET_NAME}"
PRIVATE
$<IF:$<CXX_COMPILER_ID:MSVC>,/W0,-w>
)

196
revoice/CMakeLists.txt Normal file
View File

@ -0,0 +1,196 @@
#-------------------------------------------------------------------------------
# Project Definition
#-------------------------------------------------------------------------------
project("${CMAKE_PROJECT_NAME}")
#-------------------------------------------------------------------------------
# Target Definition
#-------------------------------------------------------------------------------
set(TARGET_NAME "revoice")
set(TARGET_ALIAS "ReVoice::${TARGET_NAME}")
add_library("${TARGET_NAME}" SHARED)
add_library("${TARGET_ALIAS}" ALIAS "${TARGET_NAME}")
if(WIN32)
set(BIN_OUTPUT_NAME "${TARGET_NAME}_mm")
else()
set(BIN_OUTPUT_NAME "${TARGET_NAME}_mm_i386")
endif()
#-------------------------------------------------------------------------------
# Source Files
#-------------------------------------------------------------------------------
# Generate appversion.h
set(APP_VERSION_FILE "${PROJECT_BINARY_DIR}/appversion.h")
configure_file("src/appversion.h.in" "${APP_VERSION_FILE}" @ONLY)
# Define the precompiled headers
target_precompile_headers("${TARGET_NAME}"
PRIVATE
"src/precompiled.h"
)
# Define the source files
target_sources("${TARGET_NAME}"
PRIVATE
"${APP_VERSION_FILE}"
"include/dllapi.h"
"include/engine_api.h"
"include/enginecallbacks.h"
"include/h_export.h"
"include/log_meta.h"
"include/meta_api.h"
"include/mhook.h"
"include/mreg.h"
"include/mutil.h"
"include/osdep.h"
"include/plinfo.h"
"include/sdk_util.h"
"include/types_meta.h"
"public/IVoiceCodec.h"
"public/reunion_api.h"
"public/utlbuffer.cpp"
"public/utlbuffer.h"
"public/utlmemory.h"
"src/dllapi.cpp"
"src/engine_api.cpp"
"src/h_export.cpp"
"src/iframeencoder.h"
"src/meta_api.cpp"
"src/osconf.h"
"src/precompiled.cpp"
"src/precompiled.h"
"src/public_amalgamation.cpp"
"src/revoice_cfg.cpp"
"src/revoice_cfg.h"
"src/revoice_main.cpp"
"src/revoice_main.h"
"src/revoice_player.cpp"
"src/revoice_player.h"
"src/revoice_rehlds_api.cpp"
"src/revoice_rehlds_api.h"
"src/revoice_reunion_api.cpp"
"src/revoice_reunion_api.h"
"src/revoice_shared.h"
"src/revoice_utils.cpp"
"src/sdk_util.cpp"
"src/SteamP2PCodec.cpp"
"src/SteamP2PCodec.h"
"src/voice_codec_frame.cpp"
"src/voice_codec_frame.h"
"src/VoiceEncoder_Opus.cpp"
"src/VoiceEncoder_Opus.h"
"src/VoiceEncoder_Silk.cpp"
"src/VoiceEncoder_Silk.h"
"src/VoiceEncoder_Speex.cpp"
"src/VoiceEncoder_Speex.h"
)
if(WIN32)
set(RESOURCE_FILENAME "${BIN_OUTPUT_NAME}.dll.rc")
set(MODULE_DEFINITION_FILENAME "${BIN_OUTPUT_NAME}.dll.def")
configure_file(
"platform/windows/${RESOURCE_FILENAME}.in"
"${PROJECT_BINARY_DIR}/${RESOURCE_FILENAME}"
@ONLY
)
target_sources("${TARGET_NAME}"
PRIVATE
"${PROJECT_BINARY_DIR}/${RESOURCE_FILENAME}"
"platform/windows/${MODULE_DEFINITION_FILENAME}"
)
endif()
#-------------------------------------------------------------------------------
# Include Directories
#-------------------------------------------------------------------------------
target_include_directories("${TARGET_NAME}"
PRIVATE
"$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>"
"${PROJECT_SOURCE_DIR}/include"
"${PROJECT_SOURCE_DIR}/public"
"${PROJECT_SOURCE_DIR}/src"
)
#-------------------------------------------------------------------------------
# Target Properties
#-------------------------------------------------------------------------------
set_target_properties("${TARGET_NAME}"
PROPERTIES
PREFIX ""
OUTPUT_NAME "${BIN_OUTPUT_NAME}"
LIBRARY_OUTPUT_DIRECTORY "${BIN_OUTPUT_DIR}"
RUNTIME_OUTPUT_DIRECTORY "${BIN_OUTPUT_DIR}"
PDB_OUTPUT_DIRECTORY "${BIN_OUTPUT_DIR}"
)
#-------------------------------------------------------------------------------
# Compile Definitions
#-------------------------------------------------------------------------------
target_compile_definitions("${TARGET_NAME}"
PRIVATE
$<$<PLATFORM_ID:Windows>:
_MBCS
_CRT_SECURE_NO_WARNINGS
>
$<$<NOT:$<PLATFORM_ID:Windows>>:
__int16=int16_t
_stricmp=strcasecmp
>
)
#-------------------------------------------------------------------------------
# Compile Options
#-------------------------------------------------------------------------------
target_compile_options("${TARGET_NAME}"
PRIVATE
$<$<NOT:$<CXX_COMPILER_ID:MSVC>>:
-Wno-write-strings
>
)
#-------------------------------------------------------------------------------
# Link Libraries
#-------------------------------------------------------------------------------
target_link_libraries("${TARGET_NAME}"
PRIVATE
"Speex::speex"
"Silk::silk"
"Opus::opus"
"Metamod::metamod"
$<$<NOT:$<PLATFORM_ID:Windows>>:
"c"
"m"
"${CMAKE_DL_LIBS}"
>
)
#-------------------------------------------------------------------------------
# Post-Build Actions
#-------------------------------------------------------------------------------
if(MSVC)
set(ILK_FILE_PATH "$<TARGET_FILE_DIR:${TARGET_NAME}>\\${BIN_OUTPUT_NAME}.ilk")
set(ILK_OUTPUT_DIR "${PROJECT_BINARY_DIR}/$<CONFIG>")
add_custom_command(TARGET "${TARGET_NAME}" POST_BUILD
COMMAND cmd /C "if exist \"${ILK_FILE_PATH}\" move \"${ILK_FILE_PATH}\" \"${ILK_OUTPUT_DIR}\\\""
COMMENT "Moving '${ILK_FILE_PATH}' file to '${ILK_OUTPUT_DIR}' if it exists"
)
endif()

View File

@ -81,7 +81,7 @@ extern mBOOL dlclose_handle_invalid;
// WINAPI should be provided in the windows compiler headers.
// It's usually defined to something like "__stdcall".
#elif defined(__linux__)
#define DLLEXPORT /* */
#define DLLEXPORT __attribute__((visibility("default")))
#define WINAPI /* */
#endif /* linux */

View File

@ -0,0 +1,2 @@
EXPORTS
GiveFnptrsToDll

View File

@ -0,0 +1,36 @@
#include "winres.h"
#pragma code_page(65001)
VS_VERSION_INFO VERSIONINFO
FILEVERSION @CMAKE_PROJECT_VERSION_MAJOR@,@CMAKE_PROJECT_VERSION_MINOR@,@CMAKE_PROJECT_VERSION_PATCH@
PRODUCTVERSION @CMAKE_PROJECT_VERSION_MAJOR@,@CMAKE_PROJECT_VERSION_MINOR@,@CMAKE_PROJECT_VERSION_PATCH@
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "000004b0"
BEGIN
VALUE "CompanyName", "ReHLDS Team"
VALUE "ProductName", "@CMAKE_PROJECT_NAME@"
VALUE "InternalName", "@BIN_OUTPUT_NAME@"
VALUE "OriginalFilename", "@BIN_OUTPUT_NAME@.dll"
VALUE "FileVersion", "@CMAKE_PROJECT_VERSION_MAJOR@.@CMAKE_PROJECT_VERSION_MINOR@.@CMAKE_PROJECT_VERSION_PATCH@"
VALUE "ProductVersion", "@CMAKE_PROJECT_VERSION_MAJOR@.@CMAKE_PROJECT_VERSION_MINOR@.@CMAKE_PROJECT_VERSION_PATCH@"
VALUE "FileDescription", "@CMAKE_PROJECT_DESCRIPTION@"
VALUE "LegalCopyright", "Copyright © 2015-@CURRENT_YEAR@ ReHLDS Team"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0, 1200
END
END

View File

@ -1,4 +1,4 @@
//========= Copyright © 1996-2001, Valve LLC, All rights reserved. ============
//========= Copyright © 1996-2001, Valve LLC, All rights reserved. ============
//
// The copyright to the contents herein is the property of Valve, L.L.C.
// The contents may be used and/or copied only with the written permission of
@ -416,4 +416,4 @@ void CUtlBuffer::SeekPut(SeekType_t type, int offset)
m_Put = m_Memory.NumAllocated() - offset;
break;
}
}
}

View File

@ -1,4 +1,4 @@
//========= Copyright © 1996-2001, Valve LLC, All rights reserved. ============
//========= Copyright © 1996-2001, Valve LLC, All rights reserved. ============
//
// The copyright to the contents herein is the property of Valve, L.L.C.
// The contents may be used and/or copied only with the written permission of

View File

@ -0,0 +1,22 @@
#ifndef __APPVERSION_H__
#define __APPVERSION_H__
//
// This file is generated automatically.
// Don't edit it.
//
// Version defines
#define APP_VERSION "@CMAKE_PROJECT_VERSION@"
#define APP_VERSION_C @CMAKE_PROJECT_VERSION_MAJOR@,@CMAKE_PROJECT_VERSION_MINOR@,@CMAKE_PROJECT_VERSION_PATCH@
#define APP_VERSION_STRD "@CMAKE_PROJECT_VERSION_MAJOR@.@CMAKE_PROJECT_VERSION_MINOR@.@CMAKE_PROJECT_VERSION_PATCH@"
#define APP_VERSION_FLAGS 0x0L
#define APP_COMMIT_DATE "@GIT_COMMIT_DATE@"
#define APP_COMMIT_TIME "@GIT_COMMIT_TIME@"
#define APP_COMMIT_SHA "@GIT_COMMIT_SHA@"
#define APP_COMMIT_URL "@GIT_COMMIT_URL@"
#endif //__APPVERSION_H__

View File

@ -1,21 +0,0 @@
#ifndef __APPVERSION_H__
\#define __APPVERSION_H__
//
// This file is generated automatically.
// Don't edit it.
//
// Version defines
\#define APP_VERSION "$verInfo.asMavenVersion()"
\#define APP_VERSION_C $verInfo.asMavenVersion(false, ",")
\#define APP_VERSION_STRD "$verInfo.asMavenVersion(false)"
\#define APP_VERSION_FLAGS 0x0L
\#define APP_COMMIT_DATE "$verInfo.asCommitDate("yyyy-MM-dd")"
\#define APP_COMMIT_TIME "$verInfo.asCommitTime()"
\#define APP_COMMIT_SHA "$verInfo.commitSHA"
\#define APP_COMMIT_URL "$verInfo.commitURL"
#endif //__APPVERSION_H__

View File

@ -1,10 +0,0 @@
/*
* Version declaration dependency file
*
*/
//
// This file needed just to add the dependency and appversion.h
//
#include "precompiled.h"