chore(*): add Development build type to allow debugging in optimization-enabled mode
This commit is contained in:
parent
ecbf6480ac
commit
63b63ef0b4
@ -1,7 +1,7 @@
|
||||
cmake_minimum_required (VERSION 3.8)
|
||||
|
||||
# Main project
|
||||
string(REGEX REPLACE ".*/(.*)" "\\1" CURRENT_FOLDER ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
string (REGEX REPLACE ".*/(.*)" "\\1" CURRENT_FOLDER ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
project (${CURRENT_FOLDER})
|
||||
message (STATUS "Configuring project: " ${CURRENT_FOLDER})
|
||||
|
||||
@ -25,16 +25,21 @@ else ()
|
||||
endif ()
|
||||
|
||||
# Define configuration type macros
|
||||
add_compile_definitions ("BUILD_TYPE=${CMAKE_BUILD_TYPE}")
|
||||
if (CMAKE_BUILD_TYPE MATCHES "Debug")
|
||||
add_compile_definitions ("BUILD_DEBUG=1")
|
||||
add_compile_definitions ("BUILD_TYPE=Debug")
|
||||
elseif (CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo")
|
||||
add_compile_definitions ("BUILD_DEVELOPMENT=1")
|
||||
add_compile_definitions ("BUILD_TYPE=Development")
|
||||
elseif (CMAKE_BUILD_TYPE MATCHES "Release")
|
||||
add_compile_definitions ("BUILD_RELEASE=1")
|
||||
add_compile_definitions ("BUILD_TYPE=Release")
|
||||
else ()
|
||||
add_compile_definitions ("BUILD_UNKNOWN=1")
|
||||
add_compile_definitions ("BUILD_TYPE=${CMAKE_BUILD_TYPE}")
|
||||
endif ()
|
||||
|
||||
# Add subproject
|
||||
# Add subproject
|
||||
file (GLOB PROJECT_FOLDERS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*")
|
||||
foreach (PROJECT_SUBDIRECTORY ${PROJECT_FOLDERS})
|
||||
if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_SUBDIRECTORY}")
|
||||
|
@ -11,6 +11,17 @@
|
||||
"ctestCommandArgs": "",
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ]
|
||||
},
|
||||
{
|
||||
"name": "x64-Development",
|
||||
"generator": "Ninja",
|
||||
"configurationType": "RelWithDebInfo",
|
||||
"buildRoot": "${projectDir}\\out\\build\\${name}",
|
||||
"installRoot": "${projectDir}\\out\\install\\${name}",
|
||||
"cmakeCommandArgs": "",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": "",
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ]
|
||||
},
|
||||
{
|
||||
"name": "x64-Release",
|
||||
"generator": "Ninja",
|
||||
@ -41,6 +52,25 @@
|
||||
"remoteCopyBuildOutput": false,
|
||||
"remoteCopySourcesMethod": "rsync"
|
||||
},
|
||||
{
|
||||
"name": "Linux-GCC-Development",
|
||||
"generator": "Ninja",
|
||||
"configurationType": "RelWithDebInfo",
|
||||
"cmakeExecutable": "cmake",
|
||||
"remoteCopySourcesExclusionList": [ ".vs", ".git", "out" ],
|
||||
"cmakeCommandArgs": "-D CMAKE_C_COMPILER=gcc-11 -D CMAKE_CXX_COMPILER=g++-11",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": "",
|
||||
"inheritEnvironments": [ "linux_x64" ],
|
||||
"remoteMachineName": "${defaultRemoteMachineName}",
|
||||
"remoteCMakeListsRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/src",
|
||||
"remoteBuildRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/build/${name}",
|
||||
"remoteInstallRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/install/${name}",
|
||||
"remoteCopySources": true,
|
||||
"rsyncCommandArgs": "-t --delete --delete-excluded",
|
||||
"remoteCopyBuildOutput": false,
|
||||
"remoteCopySourcesMethod": "rsync"
|
||||
},
|
||||
{
|
||||
"name": "Linux-GCC-Release",
|
||||
"generator": "Ninja",
|
||||
|
@ -1,19 +1,19 @@
|
||||
cmake_minimum_required (VERSION 3.8)
|
||||
|
||||
# Set module name.
|
||||
string(REGEX REPLACE ".*/(.*)" "\\1" MODULE_NAME ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
# Set module name
|
||||
string (REGEX REPLACE ".*/(.*)" "\\1" MODULE_NAME ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
message (STATUS "Configuring module: " ${MODULE_NAME})
|
||||
|
||||
# Add target.
|
||||
# Add target
|
||||
file (GLOB_RECURSE MODULE_SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/Source/*")
|
||||
add_library (${MODULE_NAME} ${MODULE_SOURCE_FILES})
|
||||
target_compile_definitions (${MODULE_NAME} PRIVATE "MODULE_NAME=${MODULE_NAME}")
|
||||
|
||||
# Add include directories.
|
||||
# Add include directories
|
||||
target_include_directories (${MODULE_NAME} PUBLIC "Source/Public")
|
||||
target_include_directories (${MODULE_NAME} PRIVATE "Source/Private")
|
||||
|
||||
# Define API macro.
|
||||
# Define API macro
|
||||
string (TOUPPER ${MODULE_NAME} MODULE_API)
|
||||
string (REGEX REPLACE "[^A-Z ^0-1]" "" MODULE_API ${MODULE_API})
|
||||
set (MODULE_API "${MODULE_API}_API")
|
||||
|
@ -10,10 +10,10 @@ NAMESPACE_REDCRAFT_BEGIN
|
||||
NAMESPACE_MODULE_BEGIN(Redcraft)
|
||||
NAMESPACE_MODULE_BEGIN(Utility)
|
||||
|
||||
// Build information macro.
|
||||
// Build information macro
|
||||
|
||||
#ifndef PLATFORM_NAME
|
||||
# error "PLATFORM_NAME must be defined"
|
||||
# error "PLATFORM_NAME must be defined."
|
||||
#endif
|
||||
|
||||
#ifndef PLATFORM_WINDOWS
|
||||
@ -29,13 +29,17 @@ NAMESPACE_MODULE_BEGIN(Utility)
|
||||
#endif
|
||||
|
||||
#ifndef BUILD_TYPE
|
||||
# error "BUILD_TYPE must be defined"
|
||||
# error "BUILD_TYPE must be defined."
|
||||
#endif
|
||||
|
||||
#ifndef BUILD_DEBUG
|
||||
# define BUILD_DEBUG 0
|
||||
#endif
|
||||
|
||||
#ifndef BUILD_DEVELOPMENT
|
||||
# define BUILD_DEVELOPMENT 0
|
||||
#endif
|
||||
|
||||
#ifndef BUILD_RELEASE
|
||||
# define BUILD_RELEASE 0
|
||||
#endif
|
||||
@ -64,7 +68,7 @@ NAMESPACE_MODULE_BEGIN(Utility)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
// Function type macros.
|
||||
// Function type macros
|
||||
|
||||
#if PLATFORM_WINDOWS
|
||||
|
||||
@ -86,7 +90,7 @@ NAMESPACE_MODULE_BEGIN(Utility)
|
||||
# if BUILD_DEBUG
|
||||
# define FORCEINLINE inline
|
||||
# else
|
||||
# define FORCEINLINE inline __attribute__ ((always_inline))
|
||||
# define FORCEINLINE inline __attribute__((always_inline))
|
||||
# endif
|
||||
|
||||
#else
|
||||
@ -100,40 +104,57 @@ NAMESPACE_MODULE_BEGIN(Utility)
|
||||
|
||||
#endif
|
||||
|
||||
// DLL export and import definitions.
|
||||
// DLL export and import macros
|
||||
|
||||
#if PLATFORM_WINDOWS
|
||||
|
||||
# define DLLEXPORT __declspec(dllexport)
|
||||
# define DLLIMPORT __declspec(dllimport)
|
||||
|
||||
#elif PLATFORM_LINUX
|
||||
|
||||
# define DLLEXPORT __attribute__((visibility("default")))
|
||||
# define DLLIMPORT __attribute__((visibility("default")))
|
||||
|
||||
#else
|
||||
|
||||
# define DLLEXPORT
|
||||
# define DLLIMPORT
|
||||
|
||||
# error "DLL export and import macros must be defined."
|
||||
#endif
|
||||
|
||||
// Unsigned base types.
|
||||
// Optimization macros
|
||||
|
||||
#if !defined(__clang__)
|
||||
# define PRAGMA_DISABLE_OPTIMIZATION_ACTUAL _Pragma("optimize(\"\", off)")
|
||||
# define PRAGMA_ENABLE_OPTIMIZATION_ACTUAL _Pragma("optimize(\"\", on)")
|
||||
#elif defined(_MSC_VER)
|
||||
# define PRAGMA_DISABLE_OPTIMIZATION_ACTUAL _Pragma("clang optimize off")
|
||||
# define PRAGMA_ENABLE_OPTIMIZATION_ACTUAL _Pragma("clang optimize on")
|
||||
#elif defined(__GNUC__ )
|
||||
# define PRAGMA_DISABLE_OPTIMIZATION_ACTUAL _Pragma("GCC push_options") _Pragma("GCC optimize (\"O0\")")
|
||||
# define PRAGMA_ENABLE_OPTIMIZATION_ACTUAL _Pragma("GCC pop_options")
|
||||
#else
|
||||
# define PRAGMA_DISABLE_OPTIMIZATION_ACTUAL
|
||||
# define PRAGMA_ENABLE_OPTIMIZATION_ACTUAL
|
||||
#endif
|
||||
|
||||
#if BUILD_DEBUG
|
||||
# define PRAGMA_DISABLE_OPTIMIZATION
|
||||
# define PRAGMA_ENABLE_OPTIMIZATION
|
||||
#else
|
||||
# define PRAGMA_DISABLE_OPTIMIZATION PRAGMA_DISABLE_OPTIMIZATION_ACTUAL
|
||||
# define PRAGMA_ENABLE_OPTIMIZATION PRAGMA_ENABLE_OPTIMIZATION_ACTUAL
|
||||
#endif
|
||||
|
||||
// Unsigned base types
|
||||
|
||||
typedef NAMESPACE_STD::uint8_t uint8;
|
||||
typedef NAMESPACE_STD::uint16_t uint16;
|
||||
typedef NAMESPACE_STD::uint32_t uint32;
|
||||
typedef NAMESPACE_STD::uint64_t uint64;
|
||||
|
||||
// Signed base types.
|
||||
// Signed base types
|
||||
|
||||
typedef NAMESPACE_STD::int8_t int8;
|
||||
typedef NAMESPACE_STD::int16_t int16;
|
||||
typedef NAMESPACE_STD::int32_t int32;
|
||||
typedef NAMESPACE_STD::int64_t int64;
|
||||
|
||||
// Character types.
|
||||
// Character types
|
||||
|
||||
typedef char chara;
|
||||
typedef wchar_t charw;
|
||||
@ -142,7 +163,7 @@ typedef char8_t char8;
|
||||
typedef char16_t char16;
|
||||
typedef char32_t char32;
|
||||
|
||||
// Pointer types.
|
||||
// Pointer types
|
||||
|
||||
typedef NAMESPACE_STD::uintptr_t uintptr;
|
||||
typedef NAMESPACE_STD::intptr_t intptr;
|
||||
@ -150,7 +171,7 @@ typedef NAMESPACE_STD::ptrdiff_t ptrdiff;
|
||||
typedef NAMESPACE_STD::size_t size_t;
|
||||
typedef intptr_t ssize_t;
|
||||
|
||||
// Null types.
|
||||
// Null types
|
||||
|
||||
typedef decltype(NULL) null_t;
|
||||
typedef NAMESPACE_STD::nullptr_t nullptr_t;
|
||||
@ -161,7 +182,7 @@ typedef NAMESPACE_STD::nullptr_t nullptr_t;
|
||||
# define PLATFORM_TCHAR_IS_CHAR16 0
|
||||
#endif
|
||||
|
||||
// Define the TEXT macro.
|
||||
// Define the TEXT macro
|
||||
|
||||
#if PLATFORM_TCHAR_IS_CHAR16
|
||||
# define TEXT_PASTE(x) u ## x
|
||||
|
Loading…
Reference in New Issue
Block a user