diff --git a/CMakeLists.txt b/CMakeLists.txt index f705edf3..e12c1091 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -113,31 +113,39 @@ make_directory(${CMAKE_BINARY_DIR}/resServer) # Create a /logs directory make_directory(${CMAKE_BINARY_DIR}/logs) +# Get DLU config directory +if(DEFINED ENV{DLU_CONFIG_DIR}) + set(DLU_CONFIG_DIR $ENV{DLU_CONFIG_DIR}) +else() + set(DLU_CONFIG_DIR ${PROJECT_BINARY_DIR}) +endif() +message(STATUS "Variable: DLU_CONFIG_DIR = ${DLU_CONFIG_DIR}") + # Copy resource files on first build set(RESOURCE_FILES "sharedconfig.ini" "authconfig.ini" "chatconfig.ini" "worldconfig.ini" "masterconfig.ini" "blocklist.dcf") message(STATUS "Checking resource file integrity") include(Utils) -UpdateConfigOption(${PROJECT_BINARY_DIR}/authconfig.ini "port" "auth_server_port") -UpdateConfigOption(${PROJECT_BINARY_DIR}/chatconfig.ini "port" "chat_server_port") -UpdateConfigOption(${PROJECT_BINARY_DIR}/masterconfig.ini "port" "master_server_port") +UpdateConfigOption(${DLU_CONFIG_DIR}/authconfig.ini "port" "auth_server_port") +UpdateConfigOption(${DLU_CONFIG_DIR}/chatconfig.ini "port" "chat_server_port") +UpdateConfigOption(${DLU_CONFIG_DIR}/masterconfig.ini "port" "master_server_port") foreach(resource_file ${RESOURCE_FILES}) set(file_size 0) - if(EXISTS ${PROJECT_BINARY_DIR}/${resource_file}) - file(SIZE ${PROJECT_BINARY_DIR}/${resource_file} file_size) + if(EXISTS ${DLU_CONFIG_DIR}/${resource_file}) + file(SIZE ${DLU_CONFIG_DIR}/${resource_file} file_size) endif() if(${file_size} EQUAL 0) configure_file( - ${CMAKE_SOURCE_DIR}/resources/${resource_file} ${PROJECT_BINARY_DIR}/${resource_file} + ${CMAKE_SOURCE_DIR}/resources/${resource_file} ${DLU_CONFIG_DIR}/${resource_file} COPYONLY ) - message(STATUS "Moved " ${resource_file} " to project binary directory") + message(STATUS "Moved " ${resource_file} " to DLU config directory") elseif(resource_file MATCHES ".ini") message(STATUS "Checking " ${resource_file} " for missing config options") - file(READ ${PROJECT_BINARY_DIR}/${resource_file} current_file_contents) + file(READ ${DLU_CONFIG_DIR}/${resource_file} current_file_contents) string(REPLACE "\\\n" "" current_file_contents ${current_file_contents}) string(REPLACE "\n" ";" current_file_contents ${current_file_contents}) set(parsed_current_file_contents "") @@ -168,10 +176,10 @@ foreach(resource_file ${RESOURCE_FILES}) set(line_to_add ${line_to_add} ${line}) foreach(line_to_append ${line_to_add}) - file(APPEND ${PROJECT_BINARY_DIR}/${resource_file} "\n" ${line_to_append}) + file(APPEND ${DLU_CONFIG_DIR}/${resource_file} "\n" ${line_to_append}) endforeach() - file(APPEND ${PROJECT_BINARY_DIR}/${resource_file} "\n") + file(APPEND ${DLU_CONFIG_DIR}/${resource_file} "\n") endif() set(line_to_add "") diff --git a/CMakePresets.json b/CMakePresets.json index 6bde8f3b..9c236c23 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -11,6 +11,9 @@ "displayName": "Default configure step", "description": "Use 'build' dir and Unix makefiles", "binaryDir": "${sourceDir}/build", + "environment": { + "DLU_CONFIG_DIR": "${sourceDir}/build" + }, "generator": "Unix Makefiles" }, { @@ -82,9 +85,6 @@ "type": "equals", "lhs": "${hostSystemName}", "rhs": "Linux" - }, - "cacheVariables": { - "CMAKE_CXX_FLAGS_INIT": "-Werror" } }, { @@ -94,7 +94,7 @@ "clang-config", "debug-config" ], - "displayName": "[Debug] Linux (Clang)", + "displayName": "EXPERIMENTAL - [Debug] Linux (Clang)", "description": "Create a debug build using the Clang toolchain for Linux", "binaryDir": "${sourceDir}/build/clang-debug" }, @@ -105,7 +105,7 @@ "clang-config", "relwithdebinfo-config" ], - "displayName": "[RelWithDebInfo] Linux (Clang)", + "displayName": "EXPERIMENTAL - [RelWithDebInfo] Linux (Clang)", "description": "Create a release build with debug info using the Clang toolchain for Linux", "binaryDir": "${sourceDir}/build/clang-relwithdebinfo" }, @@ -116,7 +116,7 @@ "clang-config", "release-config" ], - "displayName": "[Release] Linux (Clang)", + "displayName": "EXPERIMENTAL - [Release] Linux (Clang)", "description": "Create a release build using the Clang toolchain for Linux", "binaryDir": "${sourceDir}/build/clang-release" }, @@ -176,99 +176,99 @@ }, { "name": "windows-msvc-debug", + "inherits": "default", "configurePreset": "windows-msvc", "displayName": "[Debug] Windows (MSVC)", "description": "This preset is used to build in debug mode using the MSVC toolchain on Windows", - "configuration": "Debug", - "jobs": 2 + "configuration": "Debug" }, { "name": "windows-msvc-relwithdebinfo", + "inherits": "default", "configurePreset": "windows-msvc", "displayName": "[RelWithDebInfo] Windows (MSVC)", "description": "This preset is used to build in debug mode using the MSVC toolchain on Windows", - "configuration": "RelWithDebInfo", - "jobs": 2 + "configuration": "RelWithDebInfo" }, { "name": "windows-msvc-release", + "inherits": "default", "configurePreset": "windows-msvc", "displayName": "[Release] Windows (MSVC)", "description": "This preset is used to build in release mode using the MSVC toolchain on Windows", - "configuration": "Release", - "jobs": 2 + "configuration": "Release" }, { "name": "linux-clang-debug", + "inherits": "default", "configurePreset": "linux-clang-debug", - "displayName": "[Debug] Linux (Clang)", + "displayName": "EXPERIMENTAL - [Debug] Linux (Clang)", "description": "This preset is used to build in debug mode using the Clang toolchain on Linux", - "configuration": "Debug", - "jobs": 2 + "configuration": "Debug" }, { "name": "linux-clang-relwithdebinfo", + "inherits": "default", "configurePreset": "linux-clang-relwithdebinfo", - "displayName": "[RelWithDebInfo] Linux (Clang)", + "displayName": "EXPERIMENTAL - [RelWithDebInfo] Linux (Clang)", "description": "This preset is used to build in release mode with debug info using the Clang toolchain on Linux", - "configuration": "RelWithDebInfo", - "jobs": 2 + "configuration": "RelWithDebInfo" }, { "name": "linux-clang-release", + "inherits": "default", "configurePreset": "linux-clang-release", - "displayName": "[Release] Linux (Clang)", + "displayName": "EXPERIMENTAL - [Release] Linux (Clang)", "description": "This preset is used to build in release mode using the Clang toolchain on Linux", - "configuration": "Release", - "jobs": 2 + "configuration": "Release" }, { "name": "linux-gnu-debug", + "inherits": "default", "configurePreset": "linux-gnu-debug", "displayName": "[Debug] Linux (GNU)", "description": "This preset is used to build in debug mode using the GNU toolchain on Linux", - "configuration": "Debug", - "jobs": 2 + "configuration": "Debug" }, { "name": "linux-gnu-relwithdebinfo", + "inherits": "default", "configurePreset": "linux-gnu-relwithdebinfo", "displayName": "[RelWithDebInfo] Linux (GNU)", "description": "This preset is used to build in release mode with debug info using the GNU toolchain on Linux", - "configuration": "RelWithDebInfo", - "jobs": 2 + "configuration": "RelWithDebInfo" }, { "name": "linux-gnu-release", + "inherits": "default", "configurePreset": "linux-gnu-release", "displayName": "[Release] Linux (GNU)", "description": "This preset is used to build in release mode using the GNU toolchain on Linux", - "configuration": "Release", - "jobs": 2 + "configuration": "Release" }, { "name": "macos-debug", + "inherits": "default", "configurePreset": "macos", "displayName": "[Debug] MacOS", "description": "This preset is used to build in debug mode on MacOS", - "configuration": "Debug", - "jobs": 2 + "configuration": "Debug" }, { "name": "macos-relwithdebinfo", + "inherits": "default", "configurePreset": "macos", "displayName": "[RelWithDebInfo] MacOS", "description": "This preset is used to build in release mode with debug info on MacOS", - "configuration": "RelWithDebInfo", - "jobs": 2 + "configuration": "RelWithDebInfo" }, { "name": "macos-release", + "inherits": "default", "configurePreset": "macos", "displayName": "[Release] MacOS", "description": "This preset is used to build in release mode on MacOS", - "configuration": "Release", - "jobs": 2 + "configuration": "Release" } ], "testPresets": [ @@ -321,7 +321,7 @@ "name": "linux-clang-debug", "inherits": "default", "configurePreset": "linux-clang-debug", - "displayName": "[Debug] Linux (Clang)", + "displayName": "EXPERIMENTAL - [Debug] Linux (Clang)", "description": "Runs all tests on a Linux Clang configuration", "configuration": "Release" }, @@ -329,7 +329,7 @@ "name": "linux-clang-relwithdebinfo", "inherits": "default", "configurePreset": "linux-clang-relwithdebinfo", - "displayName": "[RelWithDebInfo] Linux (Clang)", + "displayName": "EXPERIMENTAL - [RelWithDebInfo] Linux (Clang)", "description": "Runs all tests on a Linux Clang configuration", "configuration": "RelWithDebInfo" }, @@ -337,7 +337,7 @@ "name": "linux-clang-release", "inherits": "default", "configurePreset": "linux-clang-release", - "displayName": "[Release] Linux (Clang)", + "displayName": "EXPERIMENTAL - [Release] Linux (Clang)", "description": "Runs all tests on a Linux Clang configuration", "configuration": "Release" }, @@ -524,7 +524,7 @@ }, { "name": "linux-clang-debug", - "displayName": "[Debug] Linux (Clang)", + "displayName": "EXPERIMENTAL - [Debug] Linux (Clang)", "description": "Clang debug workflow preset for Linux", "steps": [ { @@ -543,7 +543,7 @@ }, { "name": "linux-clang-relwithdebinfo", - "displayName": "[RelWithDebInfo] Linux (Clang)", + "displayName": "EXPERIMENTAL - [RelWithDebInfo] Linux (Clang)", "description": "Clang release with debug info workflow preset for Linux", "steps": [ { @@ -562,7 +562,7 @@ }, { "name": "linux-clang-release", - "displayName": "[Release] Linux (Clang)", + "displayName": "EXPERIMENTAL - [Release] Linux (Clang)", "description": "Clang release workflow preset for Linux", "steps": [ {