- 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

@ -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)