1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
# MODE options are DEBUG, SIZE, PERFORMANCE, and RELEASE.
GCC_CC_WARNINGS = [
"-Wall",
"-Wextra",
"-Wpedantic",
"-Wshadow=local",
"-Wcast-align",
"-Wduplicated-cond",
"-Wduplicated-branches",
"-Wlogical-op",
"-Wnull-dereference",
"-Wdouble-promotion",
"-Wformat=2",
]
GCC_CXX_WARNINGS = [
"-Wnon-virtual-dtor",
"-Woverloaded-virtual",
"-Wuseless-cast",
]
DEBUG_GCC = {
"CFLAGS": ["-Wstrict-prototypes"],
"CCFLAGS": [*GCC_CC_WARNINGS, "-g", "-fvisibility=hidden"],
"CXXFLAGS": GCC_CXX_WARNINGS,
}
DEBUG_MSVC = {
"CCFLAGS": ["/nologo", "/std:c++14", "-W3"],
"LINKFLAGS": ["/nologo"],
}
SIZE_GCC = {
"CCFLAGS": [*GCC_CC_WARNINGS, "-Os", "-flto", "-fvisibility=hidden"],
"CXXFLAGS": GCC_CXX_WARNINGS,
"LINKFLAGS": ["-Os", "-flto"],
"CPPDEFINES": ["NDEBUG"],
}
SIZE_MSVC = {
"CCFLAGS": ["/nologo", "/std:c++14", "-W3", "-O1", "-GL", "-GS-"],
"LINKFLAGS": ["/nologo", "-LTCG"],
"CPPDEFINES": ["NDEBUG"],
}
PERFORMANCE_GCC = {
"CCFLAGS": [*GCC_CC_WARNINGS, "-O3", "-flto", "-fvisibility=hidden"],
"CXXFLAGS": GCC_CXX_WARNINGS,
"LINKFLAGS": ["-O3", "-flto"],
"CPPDEFINES": ["NDEBUG"],
}
PERFORMANCE_MSVC = {
"CCFLAGS": ["/nologo", "/std:c++14", "-W3", "-O2", "-GL", "-GS-"],
"LINKFLAGS": ["/nologo", "-LTCG"],
"CPPDEFINES": ["NDEBUG"],
}
RELEASE_GCC = PERFORMANCE_GCC
RELEASE_MSVC = PERFORMANCE_MSVC
# DEBUG_RELEASE is like RELEASE but with debug flags enabled.
DEBUG_RELEASE_GCC = {
"CCFLAGS": RELEASE_GCC["CCFLAGS"] + ["-g"],
"CXXFLAGS": RELEASE_GCC["CXXFLAGS"],
"LINKFLAGS": RELEASE_GCC["LINKFLAGS"],
"CPPDEFINES": ["NDEBUG"],
}
DEBUG_RELEASE_MSVC = {
"CCFLAGS": RELEASE_MSVC["CCFLAGS"],
"LINKFLAGS": RELEASE_MSVC["LINKFLAGS"],
"CPPDEFINES": ["NDEBUG"],
}
|