mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 16:36:33 +00:00
[CMAKE]
* Move cmake files to the cmake folder. * Rename msc.cmake to msvc.cmake and toolchain-mingw32.cmake to toolchain-gcc.cmake. * Add compilerflags.cmake to group macros that handle different compiler flags. * Move add_linkerflag and set_unicode macros to compilerflags.cmake. They were duplicated in gcc.cmake and msvc.cmake. * Add add_compiler_flags macro to handle CMAKE_C_FLAGS and CMAKE_CXX_FLAGS properly, and replace add_definitions calls with add_compiler_flags calls when we're adding compiler flags, not definitions. * Reorganize gcc.cmake to have compiler flags then linking and compiling rules. * Move CMAKE_ASM_COMPILE_OBJECT out of toolchain-gcc.cmake into gcc.cmake and add ${CMAKE_C_FLAGS} to it, now that flags are properly set. * Don't pass <FLAGS> (compiler flags) when linking. * Without the (commented out) linker script flag, CMAKE_SHARED_LINKER_FLAGS_INIT is the same for both i386 and amd64. Deduplicate it. * Fix CMAKE_C_STANDARD_LIBRARIES comment. * Use <FLAGS> in msvc CMAKE_ASM_COMPILE_OBJECT instead of manual includes. * Don't set ntdllsys linker language to C, it's an asm lib. * Remove ros_cd.cmake as it's not needed anymore. * Define _CRT_SECURE_NO_WARNINGS when compiling host tools with msvc. svn path=/trunk/; revision=52210
This commit is contained in:
parent
e2247207e1
commit
4c941247b4
15 changed files with 94 additions and 254 deletions
|
@ -8,7 +8,7 @@ endif()
|
|||
|
||||
project(REACTOS)
|
||||
|
||||
#versioning
|
||||
# Versioning
|
||||
include(include/reactos/version.cmake)
|
||||
|
||||
# Don't escape preprocessor definition values added via add_definitions
|
||||
|
@ -30,13 +30,16 @@ string(TOLOWER ${ARCH} ARCH)
|
|||
|
||||
# Compile options
|
||||
if(ARCH MATCHES i386)
|
||||
include(config.cmake)
|
||||
include(cmake/config.cmake)
|
||||
elseif(ARCH MATCHES amd64)
|
||||
include(config-amd64.cmake)
|
||||
include(cmake/config-amd64.cmake)
|
||||
elseif(ARCH MATCHES arm)
|
||||
include(config-arm.cmake)
|
||||
include(cmake/config-arm.cmake)
|
||||
endif()
|
||||
|
||||
# Compiler flags handling
|
||||
include(cmake/compilerflags.cmake)
|
||||
|
||||
add_definitions(-D__REACTOS__ -D__ROS_CMAKE__)
|
||||
|
||||
if(NOT CMAKE_CROSSCOMPILING)
|
||||
|
@ -46,7 +49,7 @@ if(NOT CMAKE_CROSSCOMPILING)
|
|||
if(MSVC)
|
||||
add_definitions(-Dinline=__inline)
|
||||
else()
|
||||
add_definitions(-fshort-wchar)
|
||||
add_compiler_flags(-fshort-wchar)
|
||||
endif()
|
||||
|
||||
include_directories(
|
||||
|
@ -133,13 +136,13 @@ else()
|
|||
|
||||
# Compiler specific definitions and macros
|
||||
if(MSVC)
|
||||
include(msc.cmake)
|
||||
include(cmake/msvc.cmake)
|
||||
else()
|
||||
include(gcc.cmake)
|
||||
include(cmake/gcc.cmake)
|
||||
endif()
|
||||
|
||||
# Generic macros
|
||||
include(CMakeMacros.cmake)
|
||||
include(cmake/CMakeMacros.cmake)
|
||||
|
||||
# IDL macros for widl/midl
|
||||
include(cmake/idl-support.cmake)
|
||||
|
@ -183,7 +186,7 @@ else()
|
|||
add_subdirectory(include/reactos/mc)
|
||||
add_subdirectory(include/asm)
|
||||
|
||||
include(baseaddress.cmake)
|
||||
include(cmake/baseaddress.cmake)
|
||||
|
||||
#begin with boot so reactos_cab target is defined before all other modules
|
||||
add_subdirectory(boot)
|
||||
|
|
23
reactos/cmake/compilerflags.cmake
Normal file
23
reactos/cmake/compilerflags.cmake
Normal file
|
@ -0,0 +1,23 @@
|
|||
|
||||
macro(add_compiler_flags)
|
||||
# Adds the compiler flag to both CMAKE_C_FLAGS and CMAKE_CXX_FLAGS
|
||||
foreach(flag ${ARGN})
|
||||
set(flags_list "${flags_list} ${flag}")
|
||||
endforeach()
|
||||
set(CMAKE_C_FLAGS ${flags_list})
|
||||
set(CMAKE_CXX_FLAGS ${flags_list})
|
||||
endmacro()
|
||||
|
||||
macro(add_linkerflag MODULE _flag)
|
||||
set(NEW_LINKER_FLAGS ${_flag})
|
||||
get_target_property(LINKER_FLAGS ${MODULE} LINK_FLAGS)
|
||||
if(LINKER_FLAGS)
|
||||
set(NEW_LINKER_FLAGS "${LINKER_FLAGS} ${NEW_LINKER_FLAGS}")
|
||||
endif()
|
||||
set_target_properties(${MODULE} PROPERTIES LINK_FLAGS ${NEW_LINKER_FLAGS})
|
||||
endmacro()
|
||||
|
||||
macro(set_unicode)
|
||||
add_definitions(-DUNICODE -D_UNICODE)
|
||||
set(IS_UNICODE 1)
|
||||
endmacro()
|
|
@ -1,80 +1,54 @@
|
|||
|
||||
# Linking
|
||||
if(ARCH MATCHES i386)
|
||||
link_directories("${REACTOS_SOURCE_DIR}/importlibs")
|
||||
endif()
|
||||
link_directories(${REACTOS_BINARY_DIR}/lib/sdk/crt)
|
||||
set(CMAKE_C_LINK_EXECUTABLE "<CMAKE_C_COMPILER> <FLAGS> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
||||
set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_CXX_COMPILER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "-nodefaultlibs -nostdlib -Wl,--enable-auto-image-base -Wl,--disable-auto-import")
|
||||
# -Wl,-T,${REACTOS_SOURCE_DIR}/global.lds
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS_INIT} -Wl,--disable-stdcall-fixup")
|
||||
|
||||
#set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> -i <SOURCE> <CMAKE_C_LINK_FLAGS> <DEFINES> -I${REACTOS_SOURCE_DIR}/include/psdk -I${REACTOS_BINARY_DIR}/include/psdk -I${REACTOS_SOURCE_DIR}/include/ -I${REACTOS_SOURCE_DIR}/include/reactos -I${REACTOS_BINARY_DIR}/include/reactos -I${REACTOS_SOURCE_DIR}/include/reactos/wine -I${REACTOS_SOURCE_DIR}/include/crt -I${REACTOS_SOURCE_DIR}/include/crt/mingw32 -O coff -o <OBJECT>")
|
||||
|
||||
# Temporary, until windres issues are fixed
|
||||
get_target_property(WRC native-wrc IMPORTED_LOCATION_NOCONFIG)
|
||||
set(CMAKE_RC_COMPILE_OBJECT
|
||||
"<CMAKE_C_COMPILER> -DRC_INVOKED -D__WIN32__=1 -D__FLAT__=1 <DEFINES> -I${REACTOS_SOURCE_DIR}/include/psdk -I${REACTOS_BINARY_DIR}/include/psdk -I${REACTOS_SOURCE_DIR}/include/ -I${REACTOS_SOURCE_DIR}/include/reactos -I${REACTOS_BINARY_DIR}/include/reactos -I${REACTOS_SOURCE_DIR}/include/reactos/wine -I${REACTOS_SOURCE_DIR}/include/crt -I${REACTOS_SOURCE_DIR}/include/crt/mingw32 -xc -E <SOURCE> -o <OBJECT>"
|
||||
"${WRC} -i <OBJECT> -o <OBJECT>"
|
||||
"<CMAKE_RC_COMPILER> -i <OBJECT> -J res -O coff -o <OBJECT>")
|
||||
|
||||
# Compiler Core
|
||||
add_definitions(-pipe -fms-extensions)
|
||||
|
||||
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>")
|
||||
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>")
|
||||
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>")
|
||||
add_compiler_flags(-pipe -fms-extensions)
|
||||
|
||||
# Debugging (Note: DWARF-4 on 4.5.1 when we ship)
|
||||
add_definitions(-gdwarf-2 -g2 -femit-struct-debug-detailed=none -feliminate-unused-debug-types)
|
||||
add_compiler_flags(-gdwarf-2 -g2 -femit-struct-debug-detailed=none -feliminate-unused-debug-types)
|
||||
|
||||
# Tuning
|
||||
if(ARCH MATCHES i386)
|
||||
add_definitions(-march=${OARCH} -mtune=${TUNE})
|
||||
add_compiler_flags(-march=${OARCH} -mtune=${TUNE})
|
||||
else()
|
||||
add_definitions(-march=${OARCH})
|
||||
add_compiler_flags(-march=${OARCH})
|
||||
endif()
|
||||
|
||||
# Warnings
|
||||
|
||||
add_definitions(-Wall -Wno-char-subscripts -Wpointer-arith -Wno-multichar -Wno-error=uninitialized -Wno-unused-value -Winvalid-pch)
|
||||
add_compiler_flags(-Wall -Wno-char-subscripts -Wpointer-arith -Wno-multichar -Wno-error=uninitialized -Wno-unused-value -Winvalid-pch)
|
||||
|
||||
if(ARCH MATCHES amd64)
|
||||
add_definitions(-Wno-format)
|
||||
add_compiler_flags(-Wno-format)
|
||||
elseif(ARCH MATCHES arm)
|
||||
add_definitions(-Wno-attributes)
|
||||
add_compiler_flags(-Wno-attributes)
|
||||
endif()
|
||||
|
||||
# Optimizations
|
||||
|
||||
if(OPTIMIZE STREQUAL "1")
|
||||
add_definitions(-Os)
|
||||
add_compiler_flags(-Os)
|
||||
elseif(OPTIMIZE STREQUAL "2")
|
||||
add_definitions(-Os)
|
||||
add_compiler_flags(-Os)
|
||||
elseif(OPTIMIZE STREQUAL "3")
|
||||
add_definitions(-O1)
|
||||
add_compiler_flags(-O1)
|
||||
elseif(OPTIMIZE STREQUAL "4")
|
||||
add_definitions(-O2)
|
||||
add_compiler_flags(-O2)
|
||||
elseif(OPTIMIZE STREQUAL "5")
|
||||
add_definitions(-O3)
|
||||
add_compiler_flags(-O3)
|
||||
endif()
|
||||
|
||||
add_definitions(-fno-strict-aliasing)
|
||||
add_compiler_flags(-fno-strict-aliasing)
|
||||
|
||||
if(ARCH MATCHES i386)
|
||||
add_definitions(-mpreferred-stack-boundary=2 -fno-set-stack-executable -fno-optimize-sibling-calls)
|
||||
add_compiler_flags(-mpreferred-stack-boundary=2 -fno-set-stack-executable -fno-optimize-sibling-calls)
|
||||
if(OPTIMIZE STREQUAL "1")
|
||||
add_definitions(-ftracer -momit-leaf-frame-pointer)
|
||||
add_compiler_flags(-ftracer -momit-leaf-frame-pointer)
|
||||
endif()
|
||||
elseif(ARCH MATCHES amd64)
|
||||
add_definitions(-mpreferred-stack-boundary=4)
|
||||
add_compiler_flags(-mpreferred-stack-boundary=4)
|
||||
if(OPTIMIZE STREQUAL "1")
|
||||
add_definitions(-ftracer -momit-leaf-frame-pointer)
|
||||
add_compiler_flags(-ftracer -momit-leaf-frame-pointer)
|
||||
endif()
|
||||
elseif(ARCH MATCHES arm)
|
||||
if(OPTIMIZE STREQUAL "1")
|
||||
add_definitions(-ftracer)
|
||||
add_compiler_flags(-ftracer)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -93,14 +67,35 @@ else()
|
|||
set(ARCH2 ${ARCH})
|
||||
endif()
|
||||
|
||||
macro(add_linkerflag MODULE _flag)
|
||||
set(NEW_LINKER_FLAGS ${_flag})
|
||||
get_target_property(LINKER_FLAGS ${MODULE} LINK_FLAGS)
|
||||
if(LINKER_FLAGS)
|
||||
set(NEW_LINKER_FLAGS "${LINKER_FLAGS} ${NEW_LINKER_FLAGS}")
|
||||
endif()
|
||||
set_target_properties(${MODULE} PROPERTIES LINK_FLAGS ${NEW_LINKER_FLAGS})
|
||||
endmacro()
|
||||
# Linking
|
||||
if(ARCH MATCHES i386)
|
||||
link_directories(${REACTOS_SOURCE_DIR}/importlibs)
|
||||
endif()
|
||||
|
||||
link_directories(${REACTOS_BINARY_DIR}/lib/sdk/crt)
|
||||
|
||||
set(CMAKE_C_LINK_EXECUTABLE "<CMAKE_C_COMPILER> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
||||
|
||||
set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_CXX_COMPILER> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
||||
|
||||
set(CMAKE_EXE_LINKER_FLAGS "-nodefaultlibs -nostdlib -Wl,--enable-auto-image-base -Wl,--disable-auto-import")
|
||||
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS_INIT} -Wl,--disable-stdcall-fixup")
|
||||
|
||||
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>")
|
||||
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>")
|
||||
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_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> -x assembler-with-cpp -o <OBJECT> -I${REACTOS_SOURCE_DIR}/include/asm -I${REACTOS_BINARY_DIR}/include/asm <FLAGS> ${CMAKE_C_FLAGS} <DEFINES> -D__ASM__ -c <SOURCE>")
|
||||
|
||||
#set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> -i <SOURCE> <CMAKE_C_LINK_FLAGS> <DEFINES> -I${REACTOS_SOURCE_DIR}/include/psdk -I${REACTOS_BINARY_DIR}/include/psdk -I${REACTOS_SOURCE_DIR}/include/ -I${REACTOS_SOURCE_DIR}/include/reactos -I${REACTOS_BINARY_DIR}/include/reactos -I${REACTOS_SOURCE_DIR}/include/reactos/wine -I${REACTOS_SOURCE_DIR}/include/crt -I${REACTOS_SOURCE_DIR}/include/crt/mingw32 -O coff -o <OBJECT>")
|
||||
|
||||
# Temporary, until windres issues are fixed
|
||||
get_target_property(WRC native-wrc IMPORTED_LOCATION_NOCONFIG)
|
||||
set(CMAKE_RC_COMPILE_OBJECT
|
||||
"<CMAKE_C_COMPILER> -DRC_INVOKED -D__WIN32__=1 -D__FLAT__=1 <DEFINES> -I${REACTOS_SOURCE_DIR}/include/psdk -I${REACTOS_BINARY_DIR}/include/psdk -I${REACTOS_SOURCE_DIR}/include/ -I${REACTOS_SOURCE_DIR}/include/reactos -I${REACTOS_BINARY_DIR}/include/reactos -I${REACTOS_SOURCE_DIR}/include/reactos/wine -I${REACTOS_SOURCE_DIR}/include/crt -I${REACTOS_SOURCE_DIR}/include/crt/mingw32 -xc -E <SOURCE> -o <OBJECT>"
|
||||
"${WRC} -i <OBJECT> -o <OBJECT>"
|
||||
"<CMAKE_RC_COMPILER> -i <OBJECT> -J res -O coff -o <OBJECT>")
|
||||
|
||||
# Optional 3rd parameter: stdcall stack bytes
|
||||
macro(set_entrypoint MODULE ENTRYPOINT)
|
||||
|
@ -150,7 +145,7 @@ macro(set_module_type MODULE TYPE)
|
|||
set_entrypoint(${MODULE} mainCRTStartup)
|
||||
endif(IS_UNICODE)
|
||||
elseif(${TYPE} MATCHES win32dll)
|
||||
set_entrypoint(${MODULE} DllMain 12)
|
||||
set_entrypoint(${MODULE} DllMain 12)
|
||||
if(DEFINED baseaddress_${MODULE})
|
||||
set_image_base(${MODULE} ${baseaddress_${MODULE}})
|
||||
else()
|
||||
|
@ -175,11 +170,6 @@ macro(set_module_type MODULE TYPE)
|
|||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(set_unicode)
|
||||
add_definitions(-DUNICODE -D_UNICODE)
|
||||
set(IS_UNICODE 1)
|
||||
endmacro()
|
||||
|
||||
# Workaround lack of mingw RC support in cmake
|
||||
macro(set_rc_compiler)
|
||||
get_directory_property(defines COMPILE_DEFINITIONS)
|
|
@ -36,7 +36,7 @@ set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <DEFINES> /I${REACTOS_SOURCE_DI
|
|||
get_directory_property(definitions DEFINITIONS)
|
||||
|
||||
set(CMAKE_ASM_COMPILE_OBJECT
|
||||
"<CMAKE_C_COMPILER> /nologo /X /I${REACTOS_SOURCE_DIR}/include/asm /I${REACTOS_BINARY_DIR}/include/asm /I${REACTOS_SOURCE_DIR}/include /I${REACTOS_SOURCE_DIR}/include/psdk /I${REACTOS_SOURCE_DIR}/include/dxsdk /I${REACTOS_BINARY_DIR}/include /I${REACTOS_BINARY_DIR}/include/dxsdk /I${REACTOS_BINARY_DIR}/include/psdk /I${REACTOS_BINARY_DIR}/include/reactos /I${REACTOS_SOURCE_DIR}/include/crt /I${REACTOS_SOURCE_DIR}/include/ddk /I${REACTOS_SOURCE_DIR}/include/ndk /I${REACTOS_SOURCE_DIR}/include/reactos /I${REACTOS_SOURCE_DIR}/include/reactos/libs /I${REACTOS_SOURCE_DIR}/include/crt/msc ${definitions} /D__ASM__ /D_USE_ML /EP /c <SOURCE> > <OBJECT>.tmp"
|
||||
"<CMAKE_C_COMPILER> /nologo /X /I${REACTOS_SOURCE_DIR}/include/asm /I${REACTOS_BINARY_DIR}/include/asm <FLAGS> ${definitions} /D__ASM__ /D_USE_ML /EP /c <SOURCE> > <OBJECT>.tmp"
|
||||
"<CMAKE_ASM_COMPILER> /nologo /Cp /Fo<OBJECT> /c /Ta <OBJECT>.tmp")
|
||||
|
||||
set(CMAKE_RC_CREATE_SHARED_LIBRARY ${CMAKE_C_CREATE_SHARED_LIBRARY})
|
||||
|
@ -46,15 +46,6 @@ set(CMAKE_ASM_CREATE_STATIC_LIBRARY ${CMAKE_C_CREATE_STATIC_LIBRARY})
|
|||
macro(add_pch _target_name _FILE)
|
||||
endmacro()
|
||||
|
||||
macro(add_linkerflag MODULE _flag)
|
||||
set(NEW_LINKER_FLAGS ${_flag})
|
||||
get_target_property(LINKER_FLAGS ${MODULE} LINK_FLAGS)
|
||||
if(LINKER_FLAGS)
|
||||
set(NEW_LINKER_FLAGS "${LINKER_FLAGS} ${NEW_LINKER_FLAGS}")
|
||||
endif()
|
||||
set_target_properties(${MODULE} PROPERTIES LINK_FLAGS ${NEW_LINKER_FLAGS})
|
||||
endmacro()
|
||||
|
||||
macro(set_entrypoint MODULE ENTRYPOINT)
|
||||
if(${ENTRYPOINT} STREQUAL "0")
|
||||
add_linkerflag(${MODULE} "/NOENTRY")
|
||||
|
@ -117,11 +108,6 @@ macro(set_module_type MODULE TYPE)
|
|||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(set_unicode)
|
||||
add_definitions(-DUNICODE -D_UNICODE)
|
||||
set(IS_UNICODE 1)
|
||||
endmacro()
|
||||
|
||||
macro(set_rc_compiler)
|
||||
# dummy, this workaround is only needed in mingw due to lack of RC support in cmake
|
||||
endmacro()
|
|
@ -116,7 +116,7 @@ if EXIST CMakeCache.txt (
|
|||
)
|
||||
|
||||
if "%BUILD_ENVIRONMENT%" == "MinGW" (
|
||||
cmake -G "MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE=toolchain-mingw32.cmake -DARCH=%ARCH% -DREACTOS_BUILD_TOOLS_DIR:DIR="%REACTOS_BUILD_TOOLS_DIR%" %REACTOS_SOURCE_DIR%
|
||||
cmake -G "MinGW Makefiles" -DENABLE_CCACHE=1 -DCMAKE_TOOLCHAIN_FILE=toolchain-gcc.cmake -DARCH=%ARCH% -DREACTOS_BUILD_TOOLS_DIR:DIR="%REACTOS_BUILD_TOOLS_DIR%" %REACTOS_SOURCE_DIR%
|
||||
) else if defined USE_NMAKE (
|
||||
cmake -G "NMake Makefiles" -DCMAKE_TOOLCHAIN_FILE=toolchain-msvc.cmake -DARCH=%ARCH% -DREACTOS_BUILD_TOOLS_DIR:DIR="%REACTOS_BUILD_TOOLS_DIR%" %REACTOS_SOURCE_DIR%
|
||||
) else if "%BUILD_ENVIRONMENT%" == "VS8" (
|
||||
|
|
|
@ -37,7 +37,7 @@ then
|
|||
rm -f CMakeCache.txt
|
||||
fi
|
||||
|
||||
cmake -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=toolchain-mingw32.cmake -DARCH=$ARCH -DREACTOS_BUILD_TOOLS_DIR="$REACTOS_BUILD_TOOLS_DIR" "$REACTOS_SOURCE_DIR"
|
||||
cmake -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=toolchain-gcc.cmake -DARCH=$ARCH -DREACTOS_BUILD_TOOLS_DIR="$REACTOS_BUILD_TOOLS_DIR" "$REACTOS_SOURCE_DIR"
|
||||
|
||||
echo Configure script complete! Enter directories and execute appropriate build commands\(ex: make, makex, etc...\).
|
||||
|
||||
|
|
|
@ -456,4 +456,3 @@ add_cd_file(TARGET ntoskrnl DESTINATION reactos/system32 NO_CAB FOR all)
|
|||
add_importlib_target(ntoskrnl.spec)
|
||||
|
||||
add_library(ntdllsys ntdll.S)
|
||||
set_target_properties(ntdllsys PROPERTIES LINKER_LANGUAGE C)
|
||||
|
|
|
@ -1,159 +0,0 @@
|
|||
#reactos.dff
|
||||
add_custom_command(
|
||||
OUTPUT ${REACTOS_BINARY_DIR}/boot/reactos.dff
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${REACTOS_SOURCE_DIR}/boot/bootdata/packages/reactos.dff.in ${REACTOS_BINARY_DIR}/boot/reactos.dff
|
||||
DEPENDS ${REACTOS_SOURCE_DIR}/boot/bootdata/packages/reactos.dff.in)
|
||||
|
||||
file(STRINGS ${REACTOS_BINARY_DIR}/boot/ros_cab_target.txt CAB_TARGET_ENTRIES)
|
||||
foreach(ENTRY ${CAB_TARGET_ENTRIES})
|
||||
string(REGEX REPLACE "^(.*)\t.*" "\\1" _targetname ${ENTRY})
|
||||
string(REGEX REPLACE "^.*\t(.)" "\\1" _dir_num ${ENTRY})
|
||||
get_target_property(_FILENAME ${_targetname} LOCATION)
|
||||
if(NOT CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
|
||||
set(_FILENAME '\"${_FILENAME}\"')
|
||||
endif()
|
||||
add_custom_command(
|
||||
OUTPUT ${REACTOS_BINARY_DIR}/boot/reactos.dff
|
||||
COMMAND ${CMAKE_COMMAND} -E echo ${_FILENAME} ${_dir_num} >> ${REACTOS_BINARY_DIR}/boot/reactos.dff
|
||||
DEPENDS ${_targetname}
|
||||
APPEND)
|
||||
endforeach()
|
||||
|
||||
file(STRINGS ${REACTOS_BINARY_DIR}/boot/ros_cab.txt CAB_TARGET_ENTRIES)
|
||||
foreach(ENTRY ${CAB_TARGET_ENTRIES})
|
||||
string(REGEX REPLACE "^(.*)\t.*" "\\1" _FILENAME ${ENTRY})
|
||||
string(REGEX REPLACE "^.*\t(.)" "\\1" _dir_num ${ENTRY})
|
||||
if(NOT CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
|
||||
set(QUOTED_FILENAME '\"${_FILENAME}\"')
|
||||
else()
|
||||
set(QUOTED_FILENAME ${_FILENAME})
|
||||
endif()
|
||||
add_custom_command(
|
||||
OUTPUT ${REACTOS_BINARY_DIR}/boot/reactos.dff
|
||||
COMMAND ${CMAKE_COMMAND} -E echo ${QUOTED_FILENAME} ${_dir_num} >> ${REACTOS_BINARY_DIR}/boot/reactos.dff
|
||||
DEPENDS ${_FILENAME}
|
||||
APPEND)
|
||||
endforeach()
|
||||
|
||||
#reactos.cab
|
||||
add_custom_command(
|
||||
OUTPUT ${REACTOS_BINARY_DIR}/boot/reactos.inf
|
||||
COMMAND native-cabman -C ${REACTOS_BINARY_DIR}/boot/reactos.dff -L ${REACTOS_BINARY_DIR}/boot -I -P ${REACTOS_SOURCE_DIR}
|
||||
DEPENDS ${REACTOS_BINARY_DIR}/boot/reactos.dff)
|
||||
add_custom_command(
|
||||
OUTPUT ${REACTOS_BINARY_DIR}/boot/reactos.cab
|
||||
COMMAND native-cabman -C ${REACTOS_BINARY_DIR}/boot/reactos.dff -RC ${REACTOS_BINARY_DIR}/boot/reactos.inf -L ${REACTOS_BINARY_DIR}/boot -N -P ${REACTOS_SOURCE_DIR}
|
||||
DEPENDS ${REACTOS_BINARY_DIR}/boot/reactos.inf)
|
||||
|
||||
#bootcd target
|
||||
macro(create_bootcd_dir BOOTCD_DIR _target)
|
||||
|
||||
file(MAKE_DIRECTORY
|
||||
"${BOOTCD_DIR}"
|
||||
"${BOOTCD_DIR}/loader"
|
||||
"${BOOTCD_DIR}/reactos"
|
||||
"${BOOTCD_DIR}/reactos/system32")
|
||||
|
||||
file(STRINGS ${REACTOS_BINARY_DIR}/boot/ros_minicd_target.txt MINICD_TARGET_ENTRIES)
|
||||
foreach(ENTRY ${MINICD_TARGET_ENTRIES})
|
||||
string(REGEX REPLACE "^(.*)\t.*\t.*" "\\1" _targetname ${ENTRY})
|
||||
string(REGEX REPLACE "^.*\t(.*)\t.*" "\\1" _DIR ${ENTRY})
|
||||
string(REGEX REPLACE "^.*\t.*\t(.*)" "\\1"_NAMEONCD ${ENTRY})
|
||||
get_target_property(_FILENAME ${_targetname} LOCATION)
|
||||
set(filename ${BOOTCD_DIR}/${_DIR}/${_NAMEONCD})
|
||||
list(APPEND ${_target}_FILES ${filename})
|
||||
add_custom_command(
|
||||
OUTPUT ${filename}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${_FILENAME} ${filename}
|
||||
DEPENDS ${_targetname})
|
||||
endforeach()
|
||||
|
||||
file(STRINGS ${REACTOS_BINARY_DIR}/boot/ros_minicd.txt MINICD_ENTRIES)
|
||||
foreach(ENTRY ${MINICD_ENTRIES})
|
||||
string(REGEX REPLACE "^(.*)\t.*\t.*" "\\1" _FILENAME ${ENTRY})
|
||||
string(REGEX REPLACE "^.*\t(.*)\t.*" "\\1" _DIR ${ENTRY})
|
||||
string(REGEX REPLACE "^.*\t.*\t(.*)" "\\1"_NAMEONCD ${ENTRY})
|
||||
set(filename ${BOOTCD_DIR}/${_DIR}/${_NAMEONCD})
|
||||
list(APPEND ${_target}_FILES ${filename})
|
||||
add_custom_command(
|
||||
OUTPUT ${filename}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${_FILENAME} ${filename}
|
||||
DEPENDS ${_FILENAME})
|
||||
endforeach()
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${BOOTCD_DIR}/reactos/reactos.inf ${BOOTCD_DIR}/reactos/reactos.cab
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${REACTOS_BINARY_DIR}/boot/reactos.inf ${BOOTCD_DIR}/reactos/reactos.inf
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${REACTOS_BINARY_DIR}/boot/reactos.cab ${BOOTCD_DIR}/reactos/reactos.cab
|
||||
DEPENDS ${REACTOS_BINARY_DIR}/boot/reactos.cab)
|
||||
list(APPEND ${_target}_FILES ${filename} ${BOOTCD_DIR}/reactos/reactos.inf ${BOOTCD_DIR}/reactos/reactos.cab)
|
||||
endmacro()
|
||||
|
||||
create_bootcd_dir(${REACTOS_BINARY_DIR}/boot/bootcd bootcd)
|
||||
add_custom_target(bootcd
|
||||
COMMAND native-cdmake -v -j -m -b ${CMAKE_CURRENT_BINARY_DIR}/boot/freeldr/bootsect/isoboot.bin ${BOOTCD_DIR} REACTOS ${REACTOS_BINARY_DIR}/bootcd.iso
|
||||
DEPENDS ${bootcd_FILES})
|
||||
add_dependencies(bootcd dosmbr ext2 fat32 fat isoboot isobtrt vgafonts)
|
||||
set_directory_properties(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${REACTOS_BINARY_DIR}/bootcd.iso)
|
||||
|
||||
#bootcdregtest target
|
||||
create_bootcd_dir(${REACTOS_BINARY_DIR}/boot/bootcdregtest bootcdregtest)
|
||||
add_custom_command(
|
||||
OUTPUT ${REACTOS_BINARY_DIR}/boot/bootcdregtest/reactos/unattend.inf
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${REACTOS_SOURCE_DIR}/boot/bootdata/bootcdregtest/unattend.inf ${REACTOS_BINARY_DIR}/boot/bootcdregtest/reactos/unattend.inf
|
||||
DEPENDS ${REACTOS_SOURCE_DIR}/boot/bootdata/bootcdregtest/unattend.inf ${REACTOS_BINARY_DIR}/boot/bootcdregtest)
|
||||
add_custom_target(bootcdregtest
|
||||
COMMAND native-cdmake -v -j -m -b ${CMAKE_CURRENT_BINARY_DIR}/boot/freeldr/bootsect/isoboot.bin ${REACTOS_BINARY_DIR}/boot/bootcdregtest REACTOS ${REACTOS_BINARY_DIR}/bootcdregtest.iso
|
||||
DEPENDS ${REACTOS_BINARY_DIR}/boot/bootcdregtest/reactos/unattend.inf ${bootcdregtest_FILES})
|
||||
add_dependencies(bootcdregtest dosmbr ext2 fat32 fat isoboot isobtrt vgafonts)
|
||||
|
||||
|
||||
#livecd target
|
||||
file(MAKE_DIRECTORY
|
||||
"${LIVECD_DIR}"
|
||||
"${LIVECD_DIR}/loader"
|
||||
"${LIVECD_DIR}/Profiles"
|
||||
"${LIVECD_DIR}/Profiles/All Users"
|
||||
"${LIVECD_DIR}/Profiles/All Users/Desktop"
|
||||
"${LIVECD_DIR}/Profiles/Default User"
|
||||
"${LIVECD_DIR}/Profiles/Default User/Desktop"
|
||||
"${LIVECD_DIR}/Profiles/Default User/My Documents"
|
||||
"${LIVECD_DIR}/reactos"
|
||||
"${LIVECD_DIR}/reactos/inf"
|
||||
"${LIVECD_DIR}/reactos/fonts"
|
||||
"${LIVECD_DIR}/reactos/system32"
|
||||
"${LIVECD_DIR}/reactos/system32/config")
|
||||
|
||||
file(STRINGS ${REACTOS_BINARY_DIR}/boot/ros_livecd_target.txt LIVECD_TARGET_ENTRIES)
|
||||
foreach(ENTRY ${LIVECD_TARGET_ENTRIES})
|
||||
string(REGEX REPLACE "^(.*)\t.*\t.*" "\\1" _targetname ${ENTRY})
|
||||
string(REGEX REPLACE "^.*\t(.*)\t.*" "\\1" _DIR ${ENTRY})
|
||||
string(REGEX REPLACE "^.*\t.*\t(.*)" "\\1"_NAMEONCD ${ENTRY})
|
||||
get_target_property(_FILENAME ${_targetname} LOCATION)
|
||||
set(filename ${LIVECD_DIR}/${_DIR}/${_NAMEONCD})
|
||||
list(APPEND LIVECD_FILES ${filename})
|
||||
add_custom_command(
|
||||
OUTPUT ${filename}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${_FILENAME} ${LIVECD_DIR}/${_DIR}/${_NAMEONCD}
|
||||
DEPENDS ${_targetname})
|
||||
endforeach()
|
||||
file(STRINGS ${REACTOS_BINARY_DIR}/boot/ros_livecd.txt LIVECD_ENTRIES)
|
||||
|
||||
foreach(ENTRY ${LIVECD_ENTRIES})
|
||||
string(REGEX REPLACE "^(.*)\t.*\t.*" "\\1" _FILENAME ${ENTRY})
|
||||
string(REGEX REPLACE "^.*\t(.*)\t.*" "\\1" _DIR ${ENTRY})
|
||||
string(REGEX REPLACE "^.*\t.*\t(.*)" "\\1"_NAMEONCD ${ENTRY})
|
||||
set(filename ${LIVECD_DIR}/${_DIR}/${_NAMEONCD})
|
||||
list(APPEND LIVECD_FILES ${filename})
|
||||
add_custom_command(
|
||||
OUTPUT ${filename}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${_FILENAME} ${LIVECD_DIR}/${_DIR}/${_NAMEONCD}
|
||||
DEPENDS ${_FILENAME})
|
||||
endforeach()
|
||||
|
||||
add_custom_target(livecd
|
||||
COMMAND native-cdmake -v -j -m -b ${CMAKE_CURRENT_BINARY_DIR}/boot/freeldr/bootsect/isoboot.bin ${LIVECD_DIR} REACTOS ${REACTOS_BINARY_DIR}/livecd.iso
|
||||
DEPENDS ${LIVECD_FILES})
|
||||
add_dependencies(livecd isoboot livecd_hives vgafonts)
|
||||
|
||||
set_directory_properties(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${REACTOS_BINARY_DIR}/livecd.iso)
|
|
@ -24,16 +24,15 @@ else()
|
|||
set(CCACHE "" CACHE STRING "ccache")
|
||||
endif()
|
||||
|
||||
# the name of the target operating system
|
||||
# The name of the target operating system
|
||||
set(CMAKE_SYSTEM_NAME Windows)
|
||||
set(CMAKE_SYSTEM_PROCESSOR i686)
|
||||
|
||||
# which compilers to use for C and C++
|
||||
# Which compilers to use for C and C++
|
||||
set(CMAKE_C_COMPILER ${CCACHE} ${MINGW_PREFIX}gcc)
|
||||
set(CMAKE_CXX_COMPILER ${CCACHE} ${MINGW_PREFIX}g++)
|
||||
set(CMAKE_RC_COMPILER ${MINGW_PREFIX}windres)
|
||||
set(CMAKE_ASM_COMPILER ${MINGW_PREFIX}gcc)
|
||||
set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> -x assembler-with-cpp -o <OBJECT> -I${REACTOS_SOURCE_DIR}/include/asm -I${REACTOS_BINARY_DIR}/include/asm <FLAGS> <DEFINES> -D__ASM__ -c <SOURCE>")
|
||||
|
||||
if(NOT CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
|
||||
set(CMAKE_AR ${MINGW_PREFIX}ar)
|
||||
|
@ -42,15 +41,10 @@ if(NOT CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
|
|||
set(CMAKE_ASM_CREATE_STATIC_LIBRARY ${CMAKE_C_CREATE_STATIC_LIBRARY})
|
||||
endif()
|
||||
|
||||
# Use stdcall fixups, and don't link with anything by default unless we say so
|
||||
# Don't link with anything by default unless we say so
|
||||
set(CMAKE_C_STANDARD_LIBRARIES "-lgcc" CACHE STRING "Standard C Libraries")
|
||||
|
||||
#MARK_AS_ADVANCED(CLEAR CMAKE_CXX_STANDARD_LIBRARIES)
|
||||
set(CMAKE_CXX_STANDARD_LIBRARIES "" CACHE STRING "Standard C++ Libraries")
|
||||
|
||||
if(ARCH MATCHES i386)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_INIT "-nodefaultlibs -nostdlib -Wl,--enable-auto-image-base -Wl,--disable-auto-import")
|
||||
#-Wl,-T,${REACTOS_SOURCE_DIR}/global.lds
|
||||
elseif(ARCH MATCHES amd64)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_INIT "-nodefaultlibs -nostdlib -Wl,--enable-auto-image-base -Wl,--disable-auto-import")
|
||||
endif()
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_INIT "-nodefaultlibs -nostdlib -Wl,--enable-auto-image-base -Wl,--disable-auto-import")
|
|
@ -1,6 +1,10 @@
|
|||
|
||||
#add_executable(pefixup pefixup.c)
|
||||
|
||||
if(MSVC)
|
||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
||||
endif()
|
||||
|
||||
add_subdirectory(cabman)
|
||||
add_subdirectory(cdmake)
|
||||
add_subdirectory(gendib)
|
||||
|
|
Loading…
Reference in a new issue