- Improve the warnings and compiler flags according to the different architectures we have.

svn path=/branches/cmake-bringup/; revision=50340
This commit is contained in:
Amine Khaldi 2011-01-09 16:49:10 +00:00
parent acf11aa2c7
commit 4bb42765f5
3 changed files with 74 additions and 30 deletions

View file

@ -12,7 +12,7 @@ set(OARCH "pentium" CACHE STRING
set(TUNE "i686" CACHE STRING set(TUNE "i686" CACHE STRING
"Which CPU ReactOS should be optimized for.") "Which CPU ReactOS should be optimized for.")
set (OPTIMIZE "1" CACHE STRING set(OPTIMIZE "1" CACHE STRING
"What level of optimisation to use. "What level of optimisation to use.
0 = off 0 = off
1 = Default option, optimize for size (-Os) with some additional options 1 = Default option, optimize for size (-Os) with some additional options

View file

@ -27,18 +27,53 @@ else()
endif() endif()
# Warnings # Warnings
add_definitions(-Wall -Wno-char-subscripts -Wpointer-arith -Wno-multichar -Wno-error=uninitialized -Wno-unused-value -Winvalid-pch) add_definitions(-Wall -Wno-char-subscripts -Wpointer-arith -Wno-multichar -Wno-error=uninitialized -Wno-unused-value -Winvalid-pch)
if(ARCH MATCHES amd64)
add_definitions(-Wno-format)
elseif(ARCH MATCHES arm)
add_definitions(-Wno-attributes)
endif()
# Optimizations # Optimizations
if(OPTIMIZE STREQUAL "1")
add_definitions(-Os)
elseif(OPTIMIZE STREQUAL "2")
add_definitions(-Os)
elseif(OPTIMIZE STREQUAL "3")
add_definitions(-O1)
elseif(OPTIMIZE STREQUAL "4")
add_definitions(-O2)
elseif(OPTIMIZE STREQUAL "5")
add_definitions(-O3)
endif()
add_definitions(-fno-strict-aliasing)
if(ARCH MATCHES i386) if(ARCH MATCHES i386)
add_definitions(-Os -fno-strict-aliasing -ftracer -momit-leaf-frame-pointer -mpreferred-stack-boundary=2 -fno-set-stack-executable -fno-optimize-sibling-calls) add_definitions(-mpreferred-stack-boundary=2 -fno-set-stack-executable -fno-optimize-sibling-calls)
if(OPTIMIZE STREQUAL "1")
add_definitions(-ftracer -momit-leaf-frame-pointer)
endif()
elseif(ARCH MATCHES amd64) elseif(ARCH MATCHES amd64)
add_definitions(-Os -fno-strict-aliasing -ftracer -momit-leaf-frame-pointer -mpreferred-stack-boundary=4) add_definitions(-mpreferred-stack-boundary=4)
if(OPTIMIZE STREQUAL "1")
add_definitions(-ftracer -momit-leaf-frame-pointer)
endif()
elseif(ARCH MATCHES arm)
if(OPTIMIZE STREQUAL "1")
add_definitions(-ftracer)
endif()
endif() endif()
# Other # Other
if(ARCH MATCHES amd64) if(ARCH MATCHES amd64)
add_definitions(-U_X86_ -UWIN32) add_definitions(-U_X86_ -UWIN32)
elseif(ARCH MATCHES arm)
add_definitions(-U_UNICODE -UUNICODE)
add_definitions(-D__MSVCRT__) # DUBIOUS
endif() endif()
# alternative arch name # alternative arch name
@ -280,4 +315,4 @@ endmacro()
#pseh lib, needed with mingw #pseh lib, needed with mingw
set(PSEH_LIB "pseh") set(PSEH_LIB "pseh")
endif() endif(CMAKE_CROSSCOMPILING)

View file

@ -5,31 +5,41 @@ endif()
add_definitions(-Dinline=__inline) add_definitions(-Dinline=__inline)
if(NOT CMAKE_CROSSCOMPILING) if(CMAKE_CROSSCOMPILING)
else() if(OPTIMIZE STREQUAL "1")
add_definitions(/O1)
elseif(OPTIMIZE STREQUAL "2")
add_definitions(/O2)
elseif(OPTIMIZE STREQUAL "3")
add_definitions(/Ot /Ox /GS-)
elseif(OPTIMIZE STREQUAL "4")
add_definitions(/Os /Ox /GS-)
elseif(OPTIMIZE STREQUAL "5")
add_definitions(/GF /Gy /Ob2 /Os /Ox /GS-)
endif()
add_definitions(/GS- /Zl /Zi) add_definitions(/GS- /Zl /Zi)
add_definitions(-Dinline=__inline -D__STDC__=1) add_definitions(-Dinline=__inline -D__STDC__=1)
IF(${_MACHINE_ARCH_FLAG} MATCHES X86) if(${_MACHINE_ARCH_FLAG} MATCHES X86)
SET (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
SET (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
SET (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO") set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO")
ENDIF() endif()
link_directories("${REACTOS_BINARY_DIR}/importlibs" ${REACTOS_BINARY_DIR}/lib/3rdparty/mingw) link_directories("${REACTOS_BINARY_DIR}/importlibs" ${REACTOS_BINARY_DIR}/lib/3rdparty/mingw)
set(CMAKE_RC_CREATE_SHARED_LIBRARY "<CMAKE_C_COMPILER> <CMAKE_SHARED_LIBRARY_C_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>") set(CMAKE_RC_CREATE_SHARED_LIBRARY "<CMAKE_C_COMPILER> <CMAKE_SHARED_LIBRARY_C_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
MACRO(add_pch _target_name _header_filename _src_list) macro(add_pch _target_name _header_filename _src_list)
get_filename_component(FILE ${_header_filename} NAME) get_filename_component(FILE ${_header_filename} NAME)
set(_gch_filename "${_target_name}_${FILE}.gch") set(_gch_filename "${_target_name}_${FILE}.gch")
add_custom_command( add_custom_command(
OUTPUT ${_gch_filename} OUTPUT ${_gch_filename}
COMMAND echo Ignoring precompiled header COMMAND echo Ignoring precompiled header
DEPENDS ${_header_filename}) DEPENDS ${_header_filename})
ENDMACRO(add_pch _target_name _header_filename _src_list) endmacro()
macro(add_linkerflag MODULE _flag) macro(add_linkerflag MODULE _flag)
set(NEW_LINKER_FLAGS ${_flag}) set(NEW_LINKER_FLAGS ${_flag})
@ -113,7 +123,6 @@ macro(set_module_type MODULE TYPE)
add_linkerflag(${MODULE} "/DRIVER") add_linkerflag(${MODULE} "/DRIVER")
add_dependencies(${MODULE} bugcodes) add_dependencies(${MODULE} bugcodes)
endif() endif()
endmacro() endmacro()
macro(set_unicode) macro(set_unicode)
@ -213,4 +222,4 @@ file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/importlibs)
#pseh workaround #pseh workaround
set(PSEH_LIB "") set(PSEH_LIB "")
endif() endif(CMAKE_CROSSCOMPILING)