Allow to build with link-time code generation.

svn path=/trunk/; revision=56109
This commit is contained in:
Dmitry Gorbachev 2012-03-10 23:38:37 +00:00
parent 296381e730
commit 3c846b4124
6 changed files with 27 additions and 5 deletions

View file

@ -15,6 +15,9 @@ set (OPTIMIZE "1" CACHE STRING
4 = -O2 4 = -O2
5 = -O3") 5 = -O3")
set(LTCG FALSE CACHE BOOL
"Whether to build with link-time code generation")
set(DBG TRUE CACHE BOOL set(DBG TRUE CACHE BOOL
"Whether to compile for debugging.") "Whether to compile for debugging.")

View file

@ -16,6 +16,9 @@ set (OPTIMIZE "1" CACHE STRING
4 = -O2 4 = -O2
5 = -O3") 5 = -O3")
set(LTCG FALSE CACHE BOOL
"Whether to build with link-time code generation")
set(DBG TRUE CACHE BOOL set(DBG TRUE CACHE BOOL
"Whether to compile for debugging.") "Whether to compile for debugging.")

View file

@ -21,6 +21,9 @@ set(OPTIMIZE "1" CACHE STRING
4 = -O2 4 = -O2
5 = -O3") 5 = -O3")
set(LTCG FALSE CACHE BOOL
"Whether to build with link-time code generation")
set(GDB FALSE CACHE BOOL set(GDB FALSE CACHE BOOL
"Whether to compile for debugging with GDB. "Whether to compile for debugging with GDB.
If you don't use GDB, don't enable this.") If you don't use GDB, don't enable this.")

View file

@ -77,6 +77,11 @@ elseif(OPTIMIZE STREQUAL "5")
add_compile_flags("-O3") add_compile_flags("-O3")
endif() endif()
# Link-time code generation
if(LTCG)
add_compile_flags("-flto -Wno-error=clobbered")
endif()
add_compile_flags("-fno-strict-aliasing") add_compile_flags("-fno-strict-aliasing")
if(ARCH MATCHES i386) if(ARCH MATCHES i386)
@ -139,19 +144,19 @@ else()
# Normal rsym build # Normal rsym build
get_target_property(RSYM native-rsym IMPORTED_LOCATION_NOCONFIG) get_target_property(RSYM native-rsym IMPORTED_LOCATION_NOCONFIG)
set(CMAKE_C_LINK_EXECUTABLE set(CMAKE_C_LINK_EXECUTABLE
"<CMAKE_C_COMPILER> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>" "<CMAKE_C_COMPILER> ${CMAKE_C_FLAGS} <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>"
"${RSYM} <TARGET> <TARGET>") "${RSYM} <TARGET> <TARGET>")
set(CMAKE_CXX_LINK_EXECUTABLE set(CMAKE_CXX_LINK_EXECUTABLE
"<CMAKE_CXX_COMPILER> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>" "<CMAKE_CXX_COMPILER> ${CMAKE_CXX_FLAGS} <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>"
"${RSYM} <TARGET> <TARGET>") "${RSYM} <TARGET> <TARGET>")
set(CMAKE_C_CREATE_SHARED_LIBRARY set(CMAKE_C_CREATE_SHARED_LIBRARY
"<CMAKE_C_COMPILER> <CMAKE_SHARED_LIBRARY_C_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>" "<CMAKE_C_COMPILER> ${CMAKE_C_FLAGS} <CMAKE_SHARED_LIBRARY_C_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>"
"${RSYM} <TARGET> <TARGET>") "${RSYM} <TARGET> <TARGET>")
set(CMAKE_CXX_CREATE_SHARED_LIBRARY set(CMAKE_CXX_CREATE_SHARED_LIBRARY
"<CMAKE_CXX_COMPILER> <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>" "<CMAKE_CXX_COMPILER> ${CMAKE_CXX_FLAGS} <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>"
"${RSYM} <TARGET> <TARGET>") "${RSYM} <TARGET> <TARGET>")
set(CMAKE_RC_CREATE_SHARED_LIBRARY 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>" "<CMAKE_C_COMPILER> ${CMAKE_C_FLAGS} <CMAKE_SHARED_LIBRARY_C_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>"
"${RSYM} <TARGET> <TARGET>") "${RSYM} <TARGET> <TARGET>")
endif() endif()

View file

@ -3,6 +3,9 @@ include_directories(include/internal/mingw-w64)
if(NOT MSVC) if(NOT MSVC)
add_compile_flags("-Wno-main") add_compile_flags("-Wno-main")
if(LTCG)
add_compile_flags("-fno-lto")
endif()
endif() endif()
list(APPEND MSVCRTEX_SOURCE list(APPEND MSVCRTEX_SOURCE

View file

@ -438,6 +438,11 @@ else()
set_image_base(ntoskrnl 0x80800000) set_image_base(ntoskrnl 0x80800000)
endif() endif()
# Linker bug
if(NOT MSVC AND LTCG)
add_target_link_flags(ntoskrnl "-shared")
endif()
target_link_libraries(ntoskrnl target_link_libraries(ntoskrnl
cportlib cportlib
csq csq