mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-03 04:13:31 +00:00
[CMAKE] Introduce a way to compile ReactOS without invoking CMake twice. You can enable it by running configure with -DNEW_STYLE_BUILD=1. Once the transition goes smoothly we can enable this by default. CORE-10121
svn path=/trunk/; revision=69060
This commit is contained in:
+24
-9
@@ -41,6 +41,10 @@ if(NOT CMAKE_VERSION STREQUAL "2.8.12.1-ReactOS")
|
||||
set(CMAKE_DISABLE_NINJA_DEPSLOG TRUE)
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED NEW_STYLE_BUILD)
|
||||
set(NEW_STYLE_BUILD FALSE)
|
||||
endif()
|
||||
|
||||
if(NOT ARCH)
|
||||
set(ARCH i386)
|
||||
endif()
|
||||
@@ -80,6 +84,10 @@ endif()
|
||||
|
||||
if(NOT CMAKE_CROSSCOMPILING)
|
||||
|
||||
if(NEW_STYLE_BUILD)
|
||||
set(TOOLS_FOLDER ${CMAKE_CURRENT_BINARY_DIR})
|
||||
endif()
|
||||
|
||||
add_definitions(-DTARGET_${ARCH})
|
||||
|
||||
if(MSVC)
|
||||
@@ -102,14 +110,20 @@ if(NOT CMAKE_CROSSCOMPILING)
|
||||
add_subdirectory(tools)
|
||||
add_subdirectory(lib)
|
||||
|
||||
if(NOT MSVC)
|
||||
export(TARGETS bin2c widl gendib cabman cdmake mkhive obj2bin spec2def geninc rsym mkshelllink utf16le FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE native- )
|
||||
else()
|
||||
export(TARGETS bin2c widl gendib cabman cdmake mkhive obj2bin spec2def geninc mkshelllink utf16le FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE native- )
|
||||
if(NOT NEW_STYLE_BUILD)
|
||||
if(NOT MSVC)
|
||||
export(TARGETS bin2c widl gendib cabman cdmake mkhive obj2bin spec2def geninc rsym mkshelllink utf16le FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE native- )
|
||||
else()
|
||||
export(TARGETS bin2c widl gendib cabman cdmake mkhive obj2bin spec2def geninc mkshelllink utf16le FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE native- )
|
||||
endif()
|
||||
endif()
|
||||
|
||||
else()
|
||||
|
||||
if(NEW_STYLE_BUILD)
|
||||
include(cmake/host-tools.cmake)
|
||||
endif()
|
||||
|
||||
# adjust the default behaviour of the FIND_XXX() commands:
|
||||
# search headers and libraries in the target environment, search
|
||||
# programs in the host environment
|
||||
@@ -130,13 +144,14 @@ else()
|
||||
${REACTOS_BINARY_DIR}/boot/ros_cab.txt
|
||||
${REACTOS_BINARY_DIR}/boot/ros_cab_target.txt)
|
||||
|
||||
if(NOT DEFINED REACTOS_BUILD_TOOLS_DIR)
|
||||
set(REACTOS_BUILD_TOOLS_DIR ${REACTOS_SOURCE_DIR}/build)
|
||||
if(NOT NEW_STYLE_BUILD)
|
||||
if(NOT DEFINED REACTOS_BUILD_TOOLS_DIR)
|
||||
set(REACTOS_BUILD_TOOLS_DIR ${REACTOS_SOURCE_DIR}/build)
|
||||
endif()
|
||||
set(IMPORT_EXECUTABLES "${REACTOS_BUILD_TOOLS_DIR}/ImportExecutables.cmake" CACHE FILEPATH "Host executables")
|
||||
include(${IMPORT_EXECUTABLES})
|
||||
endif()
|
||||
|
||||
set(IMPORT_EXECUTABLES "${REACTOS_BUILD_TOOLS_DIR}/ImportExecutables.cmake" CACHE FILEPATH "Host executables")
|
||||
include(${IMPORT_EXECUTABLES})
|
||||
|
||||
if(DBG)
|
||||
add_definitions(-DDBG=1 -D_SEH_ENABLE_TRACE)
|
||||
else()
|
||||
|
||||
@@ -225,7 +225,13 @@ elseif(NO_ROSSYM)
|
||||
set(CMAKE_RC_CREATE_SHARED_LIBRARY "<CMAKE_C_COMPILER> ${CMAKE_C_FLAGS} <CMAKE_SHARED_LIBRARY_C_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
|
||||
else()
|
||||
# Normal rsym build
|
||||
get_target_property(RSYM native-rsym IMPORTED_LOCATION_NOCONFIG)
|
||||
if(NEW_STYLE_BUILD)
|
||||
string(TOUPPER ${CMAKE_BUILD_TYPE} _build_type)
|
||||
get_target_property(RSYM native-rsym IMPORTED_LOCATION_${_build_type})
|
||||
else()
|
||||
get_target_property(RSYM native-rsym IMPORTED_LOCATION_NOCONFIG)
|
||||
endif()
|
||||
|
||||
set(CMAKE_C_LINK_EXECUTABLE
|
||||
"<CMAKE_C_COMPILER> ${CMAKE_C_FLAGS} <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>"
|
||||
"${RSYM} -s ${REACTOS_SOURCE_DIR} <TARGET> <TARGET>")
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
|
||||
if(CMAKE_HOST_WIN32)
|
||||
set(native_suffix ".exe")
|
||||
endif()
|
||||
|
||||
string(TOUPPER ${CMAKE_BUILD_TYPE} _build_type)
|
||||
|
||||
# List of host tools
|
||||
list(APPEND host_tools_list bin2c widl gendib cabman cdmake mkhive obj2bin spec2def geninc mkshelllink utf16le)
|
||||
if(NOT MSVC)
|
||||
list(APPEND host_tools_list rsym)
|
||||
endif()
|
||||
|
||||
foreach(_host_tool ${host_tools_list})
|
||||
if(MSVC_IDE)
|
||||
get_filename_component(_tool_location "${CMAKE_CURRENT_BINARY_DIR}/host-tools/${CMAKE_BUILD_TYPE}/${_host_tool}${native_suffix}" ABSOLUTE)
|
||||
else()
|
||||
get_filename_component(_tool_location "${CMAKE_CURRENT_BINARY_DIR}/host-tools/${_host_tool}${native_suffix}" ABSOLUTE)
|
||||
endif()
|
||||
list(APPEND tools_binaries ${_tool_location})
|
||||
add_executable(native-${_host_tool} IMPORTED)
|
||||
set_property(TARGET native-${_host_tool} PROPERTY IMPORTED_LOCATION_${_build_type} ${_tool_location})
|
||||
add_dependencies(native-${_host_tool} host-tools)
|
||||
endforeach()
|
||||
|
||||
include(ExternalProject)
|
||||
|
||||
ExternalProject_Add(host-tools
|
||||
SOURCE_DIR ${REACTOS_SOURCE_DIR}
|
||||
BINARY_DIR ${REACTOS_BINARY_DIR}/host-tools
|
||||
STAMP_DIR ${REACTOS_BINARY_DIR}/host-tools/stamps
|
||||
BUILD_ALWAYS 1
|
||||
PREFIX host-tools
|
||||
EXCLUDE_FROM_ALL 1
|
||||
CMAKE_ARGS "-DNEW_STYLE_BUILD=1"
|
||||
INSTALL_COMMAND ""
|
||||
BUILD_BYPRODUCTS ${tools_binaries})
|
||||
@@ -1,21 +1,28 @@
|
||||
|
||||
function(add_host_tool _tool)
|
||||
add_executable(${_tool} ${ARGN})
|
||||
if(NEW_STYLE_BUILD)
|
||||
set_target_properties(${_tool} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TOOLS_FOLDER})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
#add_executable(pefixup pefixup.c)
|
||||
|
||||
if(MSVC)
|
||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
||||
endif()
|
||||
|
||||
add_executable(bin2c bin2c.c)
|
||||
add_executable(gendib gendib/gendib.c)
|
||||
add_executable(geninc geninc/geninc.c)
|
||||
add_executable(mkshelllink mkshelllink/mkshelllink.c)
|
||||
add_executable(obj2bin obj2bin/obj2bin.c)
|
||||
add_executable(spec2def spec2def/spec2def.c)
|
||||
add_host_tool(bin2c bin2c.c)
|
||||
add_host_tool(gendib gendib/gendib.c)
|
||||
add_host_tool(geninc geninc/geninc.c)
|
||||
add_host_tool(mkshelllink mkshelllink/mkshelllink.c)
|
||||
add_host_tool(obj2bin obj2bin/obj2bin.c)
|
||||
add_host_tool(spec2def spec2def/spec2def.c)
|
||||
|
||||
if(MSVC)
|
||||
set_property(SOURCE utf16le/utf16le.cpp APPEND_STRING PROPERTY COMPILE_FLAGS " /EHsc")
|
||||
endif()
|
||||
add_executable(utf16le utf16le/utf16le.cpp)
|
||||
add_host_tool(utf16le utf16le/utf16le.cpp)
|
||||
|
||||
add_subdirectory(cabman)
|
||||
add_subdirectory(cdmake)
|
||||
|
||||
@@ -7,5 +7,5 @@ list(APPEND SOURCE
|
||||
raw.cxx)
|
||||
|
||||
include_directories(${REACTOS_SOURCE_DIR}/include/reactos/libs/zlib)
|
||||
add_executable(cabman ${SOURCE})
|
||||
add_host_tool(cabman ${SOURCE})
|
||||
target_link_libraries(cabman zlibhost)
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
|
||||
add_executable(cdmake cdmake.c dirhash.c llmsort.c)
|
||||
add_host_tool(cdmake cdmake.c dirhash.c llmsort.c)
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
|
||||
add_executable(hpp hpp.c)
|
||||
add_host_tool(hpp hpp.c)
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
|
||||
add_executable(kbdtool data.c main.c output.c parser.c)
|
||||
add_host_tool(kbdtool data.c main.c output.c parser.c)
|
||||
|
||||
@@ -13,5 +13,5 @@ list(APPEND SOURCE
|
||||
util.c)
|
||||
|
||||
include_directories(${REACTOS_SOURCE_DIR}/tools/rsym)
|
||||
add_executable(log2lines ${SOURCE})
|
||||
add_host_tool(log2lines ${SOURCE})
|
||||
target_link_libraries(log2lines rsym_common)
|
||||
|
||||
@@ -16,5 +16,5 @@ list(APPEND SOURCE
|
||||
registry.c
|
||||
rtl.c)
|
||||
|
||||
add_executable(mkhive ${SOURCE})
|
||||
add_host_tool(mkhive ${SOURCE})
|
||||
target_link_libraries(mkhive unicode cmlibhost inflibhost)
|
||||
|
||||
@@ -4,12 +4,12 @@ add_library(rsym_common rsym_common.c)
|
||||
|
||||
if(ARCH STREQUAL "i386")
|
||||
add_definitions(-D_X86_)
|
||||
add_executable(rsym rsym.c)
|
||||
add_host_tool(rsym rsym.c)
|
||||
elseif(ARCH STREQUAL "amd64")
|
||||
add_executable(rsym rsym64.c)
|
||||
add_host_tool(rsym rsym64.c)
|
||||
elseif(ARCH STREQUAL "arm")
|
||||
add_executable(rsym rsym64.c)
|
||||
endif()
|
||||
|
||||
target_link_libraries(rsym rsym_common dbghelphost zlibhost unicode)
|
||||
add_executable(raddr2line rsym_common.c raddr2line.c)
|
||||
add_host_tool(raddr2line rsym_common.c raddr2line.c)
|
||||
|
||||
@@ -32,5 +32,5 @@ list(APPEND SOURCE
|
||||
|
||||
# Taken from widl.rbuild
|
||||
add_definitions(-DINT16=SHORT)
|
||||
add_executable(widl ${SOURCE})
|
||||
add_host_tool(widl ${SOURCE})
|
||||
target_link_libraries(widl wpphost)
|
||||
|
||||
Reference in New Issue
Block a user