|
|
|
@ -6,8 +6,7 @@ set(APP_DIR "platforms/app")
|
|
|
|
|
if(CLANG OR CLANG_SUFFIX)
|
|
|
|
|
set(CMAKE_C_COMPILER "clang${CLANG_SUFFIX}")
|
|
|
|
|
set(CMAKE_CXX_COMPILER "clang++${CLANG_SUFFIX}")
|
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-ld=lld")
|
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=lld")
|
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-ld=lld")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if(CLANG_CL)
|
|
|
|
@ -26,7 +25,6 @@ endif()
|
|
|
|
|
|
|
|
|
|
if(M EQUAL 32)
|
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
|
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
|
|
@ -53,40 +51,39 @@ set(CMAKE_CXX_EXTENSIONS NO)
|
|
|
|
|
|
|
|
|
|
file(GLOB M3_SRC "source/*.c" "source/*.cpp" "${APP_DIR}/*.c")
|
|
|
|
|
|
|
|
|
|
include_directories("./source/")
|
|
|
|
|
|
|
|
|
|
if((CMAKE_C_COMPILER_ID MATCHES "GNU") OR
|
|
|
|
|
(CMAKE_C_COMPILER_ID MATCHES "MSVC"))
|
|
|
|
|
# Compile C files as C++
|
|
|
|
|
set_source_files_properties(${M3_SRC} PROPERTIES LANGUAGE CXX)
|
|
|
|
|
# Let m3.hpp file know
|
|
|
|
|
add_definitions(-DM3_COMPILED_AS_CPP=1)
|
|
|
|
|
endif()
|
|
|
|
|
add_executable(${OUT_FILE} ${M3_SRC})
|
|
|
|
|
|
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wstrict-aliasing -Wno-unused-function -Wno-unused-variable -Wno-unused-parameter -Wno-missing-field-initializers")
|
|
|
|
|
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG=1 -ggdb -O0")
|
|
|
|
|
include_directories("./source/")
|
|
|
|
|
|
|
|
|
|
#-fno-optimize-sibling-calls
|
|
|
|
|
|
|
|
|
|
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG=1")
|
|
|
|
|
|
|
|
|
|
if(EMSCRIPTEN)
|
|
|
|
|
set(CMAKE_C_FLAGS_RELEASE "-O2 -flto -Wfatal-errors")
|
|
|
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
|
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O2 --lto-O3 --closure 1 --strip-all --gc-sections") # --emrun
|
|
|
|
|
if(WASM_TCO)
|
|
|
|
|
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Xclang -target-feature -Xclang +tail-call")
|
|
|
|
|
endif()
|
|
|
|
|
elseif(WIN32)
|
|
|
|
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_CRT_SECURE_NO_WARNINGS /WX- /diagnostics:column")
|
|
|
|
|
|
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWIN32 /WX- /diagnostics:column")
|
|
|
|
|
string(REGEX REPLACE "/W[0-4]" "/W0" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
|
|
|
|
|
|
|
|
|
if (CMAKE_C_COMPILER_ID MATCHES "MSVC")
|
|
|
|
|
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Oxs /Oy /W0 /Zi /Zo /arch:AVX2")
|
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/DEBUG:FULL")
|
|
|
|
|
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Oxs /Oy /GS- /Zi /Zo /arch:AVX2")
|
|
|
|
|
|
|
|
|
|
# Uncomment this if you want to disassemble the release build,
|
|
|
|
|
# for example: dumpbin /DISASM wasm3.exe /out:wasm3.S
|
|
|
|
|
|
|
|
|
|
#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG:FULL")
|
|
|
|
|
else()
|
|
|
|
|
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Oxs /Oy /W0 /GS- /Qvec -Clang -Oz")
|
|
|
|
|
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Oxs /Oy /GS- /Qvec -Clang -Ofast")
|
|
|
|
|
endif()
|
|
|
|
|
else()
|
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wstrict-aliasing -Wno-unused-function -Wno-unused-variable -Wno-unused-parameter -Wno-missing-field-initializers")
|
|
|
|
|
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ggdb -O0")
|
|
|
|
|
|
|
|
|
|
if (CMAKE_C_COMPILER_ID MATCHES "GNU")
|
|
|
|
|
set(OPT_FLAGS "-O3")
|
|
|
|
|
else()
|
|
|
|
@ -96,14 +93,9 @@ else()
|
|
|
|
|
set(CMAKE_C_FLAGS_RELEASE "${OPT_FLAGS} -march=native -Wfatal-errors -fstrict-aliasing") #-fno-inline
|
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "-O0")
|
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "-O3")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
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}")
|
|
|
|
|
|
|
|
|
|
add_executable(${OUT_FILE} ${M3_SRC})
|
|
|
|
|
target_link_libraries(${OUT_FILE} m)
|
|
|
|
|
target_link_libraries(${OUT_FILE} m)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
check_ipo_supported(RESULT result)
|
|
|
|
|
if(result)
|
|
|
|
@ -113,4 +105,8 @@ else()
|
|
|
|
|
message("LTO: OFF")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
message("Flags: ${CMAKE_C_FLAGS}")
|
|
|
|
|
message("Debug flags: ${CMAKE_C_FLAGS_DEBUG}")
|
|
|
|
|
message("Release flags: ${CMAKE_C_FLAGS_RELEASE}")
|
|
|
|
|
|
|
|
|
|
message("----")
|
|
|
|
|