Skip to content

Commit

Permalink
Added Optimized configuration, and removed MinSizeRel and RelWithDebI…
Browse files Browse the repository at this point in the history
…nfo configs
  • Loading branch information
vk2gpu committed Jan 17, 2018
1 parent b53aa33 commit 5a2ff31
Show file tree
Hide file tree
Showing 28 changed files with 215 additions and 101 deletions.
1 change: 1 addition & 0 deletions .appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ platform: x64

configuration:
- Debug
- Optimized
- Release

init:
Expand Down
41 changes: 35 additions & 6 deletions 3rdparty/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,27 @@
# Backup compiler flags
#SET(BACKUP_CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
#SET(BACKUP_CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")

# Enable optimization, disable runtime checks, etc, for all 3rd party libraries.
IF(MSVC)
# Remove optimization flags that exist, add new ones.
STRING (REGEX REPLACE "/O.*" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")

# Disable runtime checks.
STRING (REGEX REPLACE "/RTC(su|[1su])" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
STRING (REGEX REPLACE "/RTC(su|[1su])" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")

# Enable optimization, inline suitable functions.
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /O2 /Ob2")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /O2 /Ob2")
STRING (REGEX REPLACE "/Ob1" "/Ob2" CMAKE_C_FLAGS_OPTIMIZED "${CMAKE_C_FLAGS_OPTIMIZED}")
STRING (REGEX REPLACE "/Ob1" "/Ob2" CMAKE_CXX_FLAGS_OPTIMIZED "${CMAKE_CXX_FLAGS_OPTIMIZED}")

ELSE()
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}" -O3)
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O3")
ENDIF()

# Setup assimp.
SET(BUILD_SHARED_LIBS OFF CACHE BOOL "")
SET(ASSIMP_BUILD_TESTS OFF CACHE BOOL "")
Expand All @@ -10,7 +34,7 @@ SET(ASSIMP_BUILD_FBX_IMPORTER ON CACHE BOOL "")
SET(ASSIMP_BUILD_GLTF_IMPORTER ON CACHE BOOL "")

ADD_SUBDIRECTORY("assimp")
ADD_3RDPARTY_LIBRARY_OPTIMIZED(assimp "assimp")
ADD_3RDPARTY_LIBRARY(assimp "assimp")
ADD_3RDPARTY_LIBRARY(IrrXML "assimp")
ADD_3RDPARTY_LIBRARY(zlibstatic "assimp")

Expand All @@ -22,7 +46,7 @@ SET(JSONCPP_WITH_PKGCONFIG_SUPPORT OFF CACHE BOOL "jsoncpp pkgconfig support")
SET(JSONCPP_WITH_CMAKE_PACKAGE OFF CACHE BOOL "jsoncpp cmake package")

ADD_SUBDIRECTORY("jsoncpp")
ADD_3RDPARTY_LIBRARY_OPTIMIZED(jsoncpp_lib_static "jsoncpp")
ADD_3RDPARTY_LIBRARY(jsoncpp_lib_static "jsoncpp")

# Setup fcpp.
ADD_SUBDIRECTORY("fcpp")
Expand All @@ -37,19 +61,19 @@ ADD_SUBDIRECTORY("Remotery")
ADD_3RDPARTY_LIBRARY(Remotery "Remotery")

ADD_SUBDIRECTORY("SDL-mirror")
ADD_3RDPARTY_LIBRARY_OPTIMIZED(SDL2main "SDL2")
ADD_3RDPARTY_LIBRARY(SDL2main "SDL2")

IF(SDL_SHARED)
ADD_3RDPARTY_LIBRARY_OPTIMIZED(SDL2 "SDL2")
ADD_3RDPARTY_LIBRARY(SDL2 "SDL2")
ENDIF()

IF(SDL_STATIC)
ADD_3RDPARTY_LIBRARY_OPTIMIZED(SDL2-static "SDL2")
ADD_3RDPARTY_LIBRARY(SDL2-static "SDL2")
ENDIF()

# Setup squish.
ADD_SUBDIRECTORY("squish")
ADD_3RDPARTY_LIBRARY_OPTIMIZED(squish "squish")
ADD_3RDPARTY_LIBRARY(squish "squish")

# Setup etlsf.
ADD_SUBDIRECTORY("etlsf")
Expand All @@ -58,3 +82,8 @@ ADD_3RDPARTY_LIBRARY(etlsf "etlsf")
# Setup tlsf.
ADD_SUBDIRECTORY("tlsf")
ADD_3RDPARTY_LIBRARY(tlsf "tlsf")


# Restore compiler flags.
#SET(CMAKE_C_FLAGS_DEBUG "${BACKUP_CMAKE_C_FLAGS_DEBUG}")
#SET(CMAKE_CXX_FLAGS_DEBUG "${BACKUP_CMAKE_CXX_FLAGS_DEBUG}")
19 changes: 4 additions & 15 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,28 +7,17 @@ SET(ENGINE_RES_PATH ${ENGINE_ROOT}/res)
SET(ENGINE_3RDPARTY_PATH ${ENGINE_ROOT}/3rdparty)
SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS ON)

# Engine project is C++
PROJECT(Engine CXX)

INCLUDE(configs)
INCLUDE(projects)

# Setup ISPC
SET(ISPC_TARGETS avx2)
SET(ENABLE_ISPC_SUPPORT YES)
INCLUDE(ispc)

IF(MSVC)
CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION("10.0.10586.0")
ENDIF()

# Engine project is C++
PROJECT(Engine CXX)

IF(MSVC)
# Disable runtime checks.
STRING (REGEX REPLACE "/RTC(su|[1su])" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
MESSAGE( "Debug flags: ${CMAKE_CXX_FLAGS_DEBUG}")
MESSAGE( "Release flags: ${CMAKE_CXX_FLAGS_RELEASE}")
ENDIF()


# Output directories.
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/output/lib)
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/output/lib)
Expand Down
2 changes: 1 addition & 1 deletion apps/testbed/test_shared.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ namespace
// Init device.
i32 numAdapters = GPU::Manager::EnumerateAdapters(nullptr, 0);
DBG_ASSERT(numAdapters > 0);
DBG_ASSERT(GPU::Manager::CreateAdapter(0) == GPU::ErrorCode::OK);
DBG_VERIFY(GPU::Manager::CreateAdapter(0) == GPU::ErrorCode::OK);

i32 w, h;
window.GetSize(w, h);
Expand Down
75 changes: 75 additions & 0 deletions cmake/configs.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@

# Custom set of build configs:
# - Debug: Unoptimized debug build.
# - Optimized: Optimized debug build.
# - Release: Optimized for release.
SET(CMAKE_CONFIGURATION_TYPES Debug Optimized Release CACHE TYPE INTERNAL FORCE)

SET_PROPERTY( DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Debug>:DEBUG> $<$<CONFIG:Debug>:_DEBUG> )
SET_PROPERTY( DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Optimized>:OPTIMIZED> $<$<CONFIG:Optimized>:_OPTIMIZED> $<$<CONFIG:Optimized>:NDEBUG> )
SET_PROPERTY( DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Release>:RELEASE> $<$<CONFIG:Release>:_RELEASE> $<$<CONFIG:Release>:NDEBUG>)

IF(MSVC)
# Add debug symbols to Release build. These belong in the PDB, or should be stripped as a post process.
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Zi")
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")

SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG")
SET(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} /DEBUG")
SET(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG")
ENDIF()

# Copy Release flags over to Optimized as a baseline.
SET(CMAKE_C_FLAGS_OPTIMIZED "${CMAKE_C_FLAGS_RELEASE}")
SET(CMAKE_CXX_FLAGS_OPTIMIZED "${CMAKE_CXX_FLAGS_RELEASE}")
SET(CMAKE_EXE_LINKER_FLAGS_OPTIMIZED "${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
SET(CMAKE_MODULE_LINKER_FLAGS_OPTIMIZED "${CMAKE_MODULE_LINKER_FLAGS_RELEASE}")
SET(CMAKE_SHARED_LINKER_FLAGS_OPTIMIZED "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
SET(CMAKE_STATIC_LINKER_FLAGS_OPTIMIZED "${CMAKE_STATIC_LINKER_FLAGS_RELEASE}")


IF(MSVC)
# Incremental linking for Optimized.
STRING (REGEX REPLACE "/INCREMENTAL:NO" "/INCREMENTAL" CMAKE_EXE_LINKER_FLAGS_OPTIMIZED "${CMAKE_EXE_LINKER_FLAGS_OPTIMIZED}")
STRING (REGEX REPLACE "/INCREMENTAL:NO" "/INCREMENTAL" CMAKE_MODULE_LINKER_FLAGS_OPTIMIZED "${CMAKE_MODULE_LINKER_FLAGS_OPTIMIZED}")
STRING (REGEX REPLACE "/INCREMENTAL:NO" "/INCREMENTAL" CMAKE_SHARED_LINKER_FLAGS_OPTIMIZED "${CMAKE_SHARED_LINKER_FLAGS_OPTIMIZED}")

# Inline function expansion - only __inline
STRING (REGEX REPLACE "/Ob2" "/Ob1" CMAKE_C_FLAGS_OPTIMIZED "${CMAKE_C_FLAGS_OPTIMIZED}")
STRING (REGEX REPLACE "/Ob2" "/Ob1" CMAKE_CXX_FLAGS_OPTIMIZED "${CMAKE_CXX_FLAGS_OPTIMIZED}")

# Multicore compilation.
ADD_COMPILE_OPTIONS(/MP)
ENDIF()


IF(${VERBOSE})
MESSAGE("Configured flags:")
MESSAGE(" - CMAKE_C_FLAGS ${CMAKE_C_FLAGS}")
MESSAGE(" - CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}")
MESSAGE(" - CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS}")
MESSAGE(" - CMAKE_MODULE_LINKER_FLAGS ${CMAKE_MODULE_LINKER_FLAGS}")
MESSAGE(" - CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS}")
MESSAGE(" - CMAKE_STATIC_LINKER_FLAGS ${CMAKE_STATIC_LINKER_FLAGS}")
MESSAGE("")
MESSAGE(" - CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}")
MESSAGE(" - CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}")
MESSAGE(" - CMAKE_EXE_LINKER_FLAGS_DEBUG ${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
MESSAGE(" - CMAKE_MODULE_LINKER_FLAGS_DEBUG ${CMAKE_MODULE_LINKER_FLAGS_DEBUG}")
MESSAGE(" - CMAKE_SHARED_LINKER_FLAGS_DEBUG ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}")
MESSAGE(" - CMAKE_STATIC_LINKER_FLAGS_DEBUG ${CMAKE_STATIC_LINKER_FLAGS_DEBUG}")
MESSAGE("")
MESSAGE(" - CMAKE_C_FLAGS_OPTIMIZED ${CMAKE_C_FLAGS_OPTIMIZED}")
MESSAGE(" - CMAKE_CXX_FLAGS_OPTIMIZED ${CMAKE_CXX_FLAGS_OPTIMIZED}")
MESSAGE(" - CMAKE_EXE_LINKER_FLAGS_OPTIMIZED ${CMAKE_EXE_LINKER_FLAGS_OPTIMIZED}")
MESSAGE(" - CMAKE_MODULE_LINKER_FLAGS_OPTIMIZED ${CMAKE_MODULE_LINKER_FLAGS_OPTIMIZED}")
MESSAGE(" - CMAKE_SHARED_LINKER_FLAGS_OPTIMIZED ${CMAKE_SHARED_LINKER_FLAGS_OPTIMIZED}")
MESSAGE(" - CMAKE_STATIC_LINKER_FLAGS_OPTIMIZED ${CMAKE_STATIC_LINKER_FLAGS_OPTIMIZED}")
MESSAGE("")
MESSAGE(" - CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE}")
MESSAGE(" - CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE}")
MESSAGE(" - CMAKE_EXE_LINKER_FLAGS_RELEASE ${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
MESSAGE(" - CMAKE_MODULE_LINKER_FLAGS_RELEASE ${CMAKE_MODULE_LINKER_FLAGS_RELEASE}")
MESSAGE(" - CMAKE_SHARED_LINKER_FLAGS_RELEASE ${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
MESSAGE(" - CMAKE_STATIC_LINKER_FLAGS_RELEASE ${CMAKE_STATIC_LINKER_FLAGS_RELEASE}")
ENDIF()
3 changes: 1 addition & 2 deletions cmake/ispc.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ MACRO (ISPC_COMPILE)
IF (WIN32 OR "${CMAKE_BUILD_TYPE}" STREQUAL "Release")
SET(ISPC_OPT_FLAGS -O3)
ELSE()
SET(ISPC_OPT_FLAGS -O2 -g)
SET(ISPC_OPT_FLAGS -O2)
ENDIF()

IF (WIN32)
Expand Down Expand Up @@ -148,7 +148,6 @@ MACRO (ISPC_COMPILE)
${ISPC_OPT_FLAGS}
--target=${ISPC_TARGET_ARGS}
--opt=fast-math
-O3
${ISPC_ADDITIONAL_ARGS}
-h ${ISPC_HEADER_DIR}/ispc/${fname}_ispc.h
-MMM ${outdir}/${fname}.dev.idep
Expand Down
7 changes: 0 additions & 7 deletions cmake/projects.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -145,13 +145,6 @@ ENDMACRO()

MACRO(ADD_3RDPARTY_LIBRARY_OPTIMIZED name folder)
SET_TARGET_PROPERTIES(${name} PROPERTIES FOLDER "3rdparty/${folder}")

IF(MSVC)
STRING (REGEX REPLACE "/O.*" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
TARGET_COMPILE_OPTIONS(${name} PRIVATE /O2)
ELSE()
TARGET_COMPILE_OPTIONS(${name} PRIVATE -O3)
ENDIF()
ENDMACRO()


Expand Down
6 changes: 3 additions & 3 deletions src/core/concurrency.h
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ namespace Core
private:
Thread(const Thread&) = delete;
struct ThreadImpl* impl_ = nullptr;
#if !defined(FINAL)
#if !defined(_RELEASE)
const char* debugName_ = nullptr;
#endif
};
Expand Down Expand Up @@ -204,7 +204,7 @@ namespace Core
private:
Fiber(const Fiber&) = delete;
struct FiberImpl* impl_ = nullptr;
#if !defined(FINAL)
#if !defined(_RELEASE)
const char* debugName_ = nullptr;
#endif
};
Expand Down Expand Up @@ -242,7 +242,7 @@ namespace Core
Semaphore(const Semaphore&) = delete;

struct SemaphoreImpl* impl_;
#if !defined(FINAL)
#if !defined(_RELEASE)
const char* debugName_ = nullptr;
#endif
};
Expand Down
6 changes: 5 additions & 1 deletion src/core/debug.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ namespace Core

//////////////////////////////////////////////////////////////////////////
// Macros
#if defined(DEBUG) || defined(RELEASE)
#if !defined(_RELEASE)
#if PLATFORM_WINDOWS
#define DBG_BREAK __debugbreak()
#else
Expand All @@ -88,11 +88,15 @@ namespace Core
DBG_BREAK; \
}


#define DBG_VERIFY(Condition) DBG_ASSERT(Condition)

#define DBG_LOG(...) Core::Log(__VA_ARGS__)

#else
#define DBG_BREAK
#define DBG_ASSERT_MSG(Condition, Message, ...)
#define DBG_ASSERT(Condition)
#define DBG_VERIFY(Condition) Condition
#define DBG_LOG(...)
#endif
4 changes: 0 additions & 4 deletions src/core/file.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,6 @@
#include "core/types.h"
#include "core/dll.h"

#ifndef FINAL
#include "core/string.h"
#endif

namespace Core
{
/// Maximum path length supported. Platform may vary.
Expand Down
20 changes: 10 additions & 10 deletions src/core/portability.h
Original file line number Diff line number Diff line change
Expand Up @@ -162,16 +162,6 @@
#define DEPRECATED(_m) [[deprecated(_m)]]
#endif

//////////////////////////////////////////////////////////////////////////
// Build type.
#ifdef _DEBUG
#define DEBUG
#endif

#ifdef NDEBUG
#define RELEASE
#endif

//////////////////////////////////////////////////////////////////////////
// Disable warnings.
#if COMPILER_MSVC
Expand All @@ -181,6 +171,16 @@
#pragma warning(disable : 4251)
/// conditional expression is constant
#pragma warning(disable : 4127)

#if defined(_RELEASE)
/// local variable is initialized but not referenced
#pragma warning(disable : 4189)
/// empty controlled statement found; is this the intent?
#pragma warning(disable : 4390)
/// '==': operator has no effect; did you intend '='?
#pragma warning(disable : 4553)

#endif // defined(_RELEASE)
#endif

//////////////////////////////////////////////////////////////////////////
Expand Down
Loading

0 comments on commit 5a2ff31

Please sign in to comment.