From 4c941247b4123a561d9c92808a76abd9dc5802ee Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Mon, 13 Jun 2011 10:36:40 +0000 Subject: [PATCH] [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 (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 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 --- reactos/CMakeLists.txt | 21 ++- reactos/{ => cmake}/CMakeMacros.cmake | 0 reactos/{ => cmake}/baseaddress.cmake | 0 reactos/cmake/compilerflags.cmake | 23 +++ reactos/{ => cmake}/config-amd64.cmake | 0 reactos/{ => cmake}/config-arm.cmake | 0 reactos/{ => cmake}/config.cmake | 0 reactos/{ => cmake}/gcc.cmake | 106 ++++++------ reactos/{msc.cmake => cmake/msvc.cmake} | 16 +- reactos/configure.cmd | 2 +- reactos/configure.sh | 2 +- reactos/ntoskrnl/CMakeLists.txt | 1 - reactos/ros_cd.cmake | 159 ------------------ ...hain-mingw32.cmake => toolchain-gcc.cmake} | 14 +- reactos/tools/CMakeLists.txt | 4 + 15 files changed, 94 insertions(+), 254 deletions(-) rename reactos/{ => cmake}/CMakeMacros.cmake (100%) rename reactos/{ => cmake}/baseaddress.cmake (100%) create mode 100644 reactos/cmake/compilerflags.cmake rename reactos/{ => cmake}/config-amd64.cmake (100%) rename reactos/{ => cmake}/config-arm.cmake (100%) rename reactos/{ => cmake}/config.cmake (100%) rename reactos/{ => cmake}/gcc.cmake (89%) rename reactos/{msc.cmake => cmake/msvc.cmake} (89%) delete mode 100644 reactos/ros_cd.cmake rename reactos/{toolchain-mingw32.cmake => toolchain-gcc.cmake} (67%) diff --git a/reactos/CMakeLists.txt b/reactos/CMakeLists.txt index 4a3a8804a06..7842453b9d4 100644 --- a/reactos/CMakeLists.txt +++ b/reactos/CMakeLists.txt @@ -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) diff --git a/reactos/CMakeMacros.cmake b/reactos/cmake/CMakeMacros.cmake similarity index 100% rename from reactos/CMakeMacros.cmake rename to reactos/cmake/CMakeMacros.cmake diff --git a/reactos/baseaddress.cmake b/reactos/cmake/baseaddress.cmake similarity index 100% rename from reactos/baseaddress.cmake rename to reactos/cmake/baseaddress.cmake diff --git a/reactos/cmake/compilerflags.cmake b/reactos/cmake/compilerflags.cmake new file mode 100644 index 00000000000..bc48e908197 --- /dev/null +++ b/reactos/cmake/compilerflags.cmake @@ -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() diff --git a/reactos/config-amd64.cmake b/reactos/cmake/config-amd64.cmake similarity index 100% rename from reactos/config-amd64.cmake rename to reactos/cmake/config-amd64.cmake diff --git a/reactos/config-arm.cmake b/reactos/cmake/config-arm.cmake similarity index 100% rename from reactos/config-arm.cmake rename to reactos/cmake/config-arm.cmake diff --git a/reactos/config.cmake b/reactos/cmake/config.cmake similarity index 100% rename from reactos/config.cmake rename to reactos/cmake/config.cmake diff --git a/reactos/gcc.cmake b/reactos/cmake/gcc.cmake similarity index 89% rename from reactos/gcc.cmake rename to reactos/cmake/gcc.cmake index 5ebaa36dd87..85c764544e3 100644 --- a/reactos/gcc.cmake +++ b/reactos/cmake/gcc.cmake @@ -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 " -o ") -set(CMAKE_CXX_LINK_EXECUTABLE " -o ") -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 " -i -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 ") - -# Temporary, until windres issues are fixed -get_target_property(WRC native-wrc IMPORTED_LOCATION_NOCONFIG) -set(CMAKE_RC_COMPILE_OBJECT - " -DRC_INVOKED -D__WIN32__=1 -D__FLAT__=1 -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 -o " - "${WRC} -i -o " - " -i -J res -O coff -o ") - # Compiler Core -add_definitions(-pipe -fms-extensions) - -set(CMAKE_C_CREATE_SHARED_LIBRARY " -o ") -set(CMAKE_CXX_CREATE_SHARED_LIBRARY " -o ") -set(CMAKE_RC_CREATE_SHARED_LIBRARY " -o ") +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 " -o ") + +set(CMAKE_CXX_LINK_EXECUTABLE " -o ") + +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 " -o ") +set(CMAKE_CXX_CREATE_SHARED_LIBRARY " -o ") +set(CMAKE_RC_CREATE_SHARED_LIBRARY " -o ") + +set(CMAKE_ASM_COMPILE_OBJECT " -x assembler-with-cpp -o -I${REACTOS_SOURCE_DIR}/include/asm -I${REACTOS_BINARY_DIR}/include/asm ${CMAKE_C_FLAGS} -D__ASM__ -c ") + +#set(CMAKE_RC_COMPILE_OBJECT " -i -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 ") + +# Temporary, until windres issues are fixed +get_target_property(WRC native-wrc IMPORTED_LOCATION_NOCONFIG) +set(CMAKE_RC_COMPILE_OBJECT + " -DRC_INVOKED -D__WIN32__=1 -D__FLAT__=1 -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 -o " + "${WRC} -i -o " + " -i -J res -O coff -o ") # 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) diff --git a/reactos/msc.cmake b/reactos/cmake/msvc.cmake similarity index 89% rename from reactos/msc.cmake rename to reactos/cmake/msvc.cmake index 5ce8eb88696..768a1d8654c 100644 --- a/reactos/msc.cmake +++ b/reactos/cmake/msvc.cmake @@ -36,7 +36,7 @@ set(CMAKE_RC_COMPILE_OBJECT " /I${REACTOS_SOURCE_DI get_directory_property(definitions DEFINITIONS) set(CMAKE_ASM_COMPILE_OBJECT - " /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 > .tmp" + " /nologo /X /I${REACTOS_SOURCE_DIR}/include/asm /I${REACTOS_BINARY_DIR}/include/asm ${definitions} /D__ASM__ /D_USE_ML /EP /c > .tmp" " /nologo /Cp /Fo /c /Ta .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() diff --git a/reactos/configure.cmd b/reactos/configure.cmd index f93b74ab14e..bc35cb2d039 100755 --- a/reactos/configure.cmd +++ b/reactos/configure.cmd @@ -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" ( diff --git a/reactos/configure.sh b/reactos/configure.sh index 786c7309f7b..f513358a2a9 100755 --- a/reactos/configure.sh +++ b/reactos/configure.sh @@ -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...\). diff --git a/reactos/ntoskrnl/CMakeLists.txt b/reactos/ntoskrnl/CMakeLists.txt index 6aca456b8c9..39320374960 100644 --- a/reactos/ntoskrnl/CMakeLists.txt +++ b/reactos/ntoskrnl/CMakeLists.txt @@ -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) diff --git a/reactos/ros_cd.cmake b/reactos/ros_cd.cmake deleted file mode 100644 index 6b5382161aa..00000000000 --- a/reactos/ros_cd.cmake +++ /dev/null @@ -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) diff --git a/reactos/toolchain-mingw32.cmake b/reactos/toolchain-gcc.cmake similarity index 67% rename from reactos/toolchain-mingw32.cmake rename to reactos/toolchain-gcc.cmake index 4a0ca3324c4..d760592e1ab 100644 --- a/reactos/toolchain-mingw32.cmake +++ b/reactos/toolchain-gcc.cmake @@ -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 " -x assembler-with-cpp -o -I${REACTOS_SOURCE_DIR}/include/asm -I${REACTOS_BINARY_DIR}/include/asm -D__ASM__ -c ") 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") diff --git a/reactos/tools/CMakeLists.txt b/reactos/tools/CMakeLists.txt index 3be4ab36b8f..7110733642e 100644 --- a/reactos/tools/CMakeLists.txt +++ b/reactos/tools/CMakeLists.txt @@ -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)