mirror of
https://github.com/reactos/reactos.git
synced 2025-07-31 10:31:43 +00:00
[CMAKE]
- 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:
parent
acf11aa2c7
commit
4bb42765f5
3 changed files with 74 additions and 30 deletions
|
@ -12,7 +12,7 @@ set(OARCH "pentium" CACHE STRING
|
|||
set(TUNE "i686" CACHE STRING
|
||||
"Which CPU ReactOS should be optimized for.")
|
||||
|
||||
set (OPTIMIZE "1" CACHE STRING
|
||||
set(OPTIMIZE "1" CACHE STRING
|
||||
"What level of optimisation to use.
|
||||
0 = off
|
||||
1 = Default option, optimize for size (-Os) with some additional options
|
||||
|
|
43
gcc.cmake
43
gcc.cmake
|
@ -27,18 +27,53 @@ else()
|
|||
endif()
|
||||
|
||||
# Warnings
|
||||
|
||||
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
|
||||
|
||||
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)
|
||||
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)
|
||||
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()
|
||||
|
||||
# Other
|
||||
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()
|
||||
|
||||
# alternative arch name
|
||||
|
@ -280,4 +315,4 @@ endmacro()
|
|||
#pseh lib, needed with mingw
|
||||
set(PSEH_LIB "pseh")
|
||||
|
||||
endif()
|
||||
endif(CMAKE_CROSSCOMPILING)
|
||||
|
|
59
msc.cmake
59
msc.cmake
|
@ -5,31 +5,41 @@ endif()
|
|||
|
||||
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(-Dinline=__inline -D__STDC__=1)
|
||||
|
||||
IF(${_MACHINE_ARCH_FLAG} MATCHES X86)
|
||||
SET (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_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")
|
||||
ENDIF()
|
||||
if(${_MACHINE_ARCH_FLAG} MATCHES X86)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_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")
|
||||
endif()
|
||||
|
||||
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>")
|
||||
|
||||
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)
|
||||
set(_gch_filename "${_target_name}_${FILE}.gch")
|
||||
add_custom_command(
|
||||
OUTPUT ${_gch_filename}
|
||||
COMMAND echo Ignoring precompiled header
|
||||
DEPENDS ${_header_filename})
|
||||
ENDMACRO(add_pch _target_name _header_filename _src_list)
|
||||
endmacro()
|
||||
|
||||
macro(add_linkerflag MODULE _flag)
|
||||
set(NEW_LINKER_FLAGS ${_flag})
|
||||
|
@ -70,7 +80,7 @@ macro(set_module_type MODULE TYPE)
|
|||
else()
|
||||
target_link_libraries(${MODULE} mingw_main)
|
||||
endif()
|
||||
target_link_libraries(${MODULE} mingw_common msvcsup)
|
||||
target_link_libraries(${MODULE} mingw_common msvcsup)
|
||||
endif ()
|
||||
if (${TYPE} MATCHES win32cui)
|
||||
set_subsystem(${MODULE} console)
|
||||
|
@ -80,17 +90,17 @@ macro(set_module_type MODULE TYPE)
|
|||
else()
|
||||
target_link_libraries(${MODULE} mingw_main)
|
||||
endif()
|
||||
target_link_libraries(${MODULE} mingw_common msvcsup)
|
||||
target_link_libraries(${MODULE} mingw_common msvcsup)
|
||||
endif ()
|
||||
if(${TYPE} MATCHES win32dll)
|
||||
# Need this only because mingw library is broken
|
||||
set_entrypoint(${MODULE} DllMainCRTStartup@12)
|
||||
if(DEFINED baseaddress_${MODULE})
|
||||
set_image_base(${MODULE} ${baseaddress_${MODULE}})
|
||||
else()
|
||||
message(STATUS "${MODULE} has no base address")
|
||||
endif()
|
||||
target_link_libraries(${MODULE} mingw_common mingw_dllmain msvcsup)
|
||||
if(DEFINED baseaddress_${MODULE})
|
||||
set_image_base(${MODULE} ${baseaddress_${MODULE}})
|
||||
else()
|
||||
message(STATUS "${MODULE} has no base address")
|
||||
endif()
|
||||
target_link_libraries(${MODULE} mingw_common mingw_dllmain msvcsup)
|
||||
add_linkerflag(${MODULE} "/DLL")
|
||||
endif()
|
||||
if(${TYPE} MATCHES win32ocx)
|
||||
|
@ -105,15 +115,14 @@ macro(set_module_type MODULE TYPE)
|
|||
target_link_libraries(${MODULE} mingw_common mingw_dllmain msvcsup)
|
||||
add_linkerflag(${MODULE} "/DLL")
|
||||
endif()
|
||||
if(${TYPE} MATCHES kernelmodedriver)
|
||||
set_target_properties(${MODULE} PROPERTIES SUFFIX ".sys")
|
||||
set_entrypoint(${MODULE} DriverEntry@8)
|
||||
set_subsystem(${MODULE} native)
|
||||
if(${TYPE} MATCHES kernelmodedriver)
|
||||
set_target_properties(${MODULE} PROPERTIES SUFFIX ".sys")
|
||||
set_entrypoint(${MODULE} DriverEntry@8)
|
||||
set_subsystem(${MODULE} native)
|
||||
set_image_base(${MODULE} 0x00010000)
|
||||
add_linkerflag(${MODULE} "/DRIVER")
|
||||
add_dependencies(${MODULE} bugcodes)
|
||||
endif()
|
||||
|
||||
add_dependencies(${MODULE} bugcodes)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(set_unicode)
|
||||
|
@ -213,4 +222,4 @@ file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/importlibs)
|
|||
#pseh workaround
|
||||
set(PSEH_LIB "")
|
||||
|
||||
endif()
|
||||
endif(CMAKE_CROSSCOMPILING)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue