+
cmake_minimum_required(VERSION 2.8)
project(REACTOS)
# Compile options
include(config.cmake)
+if(NOT CMAKE_CROSSCOMPILING)
+
+add_definitions(-DTARGET_i386)
+if(MSVC)
+add_definitions(-Dinline=__inline)
+endif()
+
+include_directories(
+ ${REACTOS_SOURCE_DIR}/tools/unicode
+ include
+ include/host
+ include/reactos
+ include/reactos/wine
+ ${REACTOS_BINARY_DIR}/include)
+
+add_subdirectory(tools)
+add_subdirectory(lib)
+
+if(NOT MSVC)
+export(TARGETS widl nci buildno gendib cabman cdmake mkhive spec2def geninc FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE native- )
+else()
+export(TARGETS nci buildno gendib cabman cdmake mkhive spec2def geninc FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE native- )
+endif()
+
+else()
+
+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(NOT CMAKE_CROSSCOMPILING)
+
# Compiler specific definitions and macros
if(MSVC)
include(msc.cmake)
set(CMAKE_SKIP_PREPROCESSED_SOURCE_RULES TRUE)
set(CMAKE_SKIP_ASSEMBLY_SOURCE_RULES TRUE)
+set(CMAKE_COLOR_MAKEFILE OFF)
+
set_property(GLOBAL PROPERTY RULE_MESSAGES OFF)
add_definitions(-D__REACTOS__)
-if(NOT CMAKE_CROSSCOMPILING)
-
-add_definitions(-DTARGET_i386)
-
-include_directories(${REACTOS_SOURCE_DIR}/tools/unicode)
-include_directories(include)
-include_directories(include/host)
-include_directories(include/reactos)
-include_directories(include/reactos/wine)
-include_directories(${REACTOS_BINARY_DIR}/include)
+if(CMAKE_CROSSCOMPILING)
-add_subdirectory(tools)
-add_subdirectory(lib)
+#Some cleanup
+file(REMOVE
+ ${REACTOS_BINARY_DIR}/boot/ros_livecd.txt
+ ${REACTOS_BINARY_DIR}/boot/ros_livecd_target.txt
+ ${REACTOS_BINARY_DIR}/boot/ros_minicd.txt
+ ${REACTOS_BINARY_DIR}/boot/ros_minicd_target.txt
+ ${REACTOS_BINARY_DIR}/boot/ros_cab.txt
+ ${REACTOS_BINARY_DIR}/boot/ros_cab_target.txt)
-if(NOT MSVC)
-export(TARGETS widl winebuild nci buildno gendib cabman cdmake mkhive FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE native- )
-else()
-export(TARGETS winebuild nci buildno gendib cabman cdmake mkhive FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE native- )
-endif()
-
-else()
+#Some useful variables
+set(LIVECD_DIR "${REACTOS_BINARY_DIR}/boot/livecd")
+set(BOOTCD_DIR "${REACTOS_BINARY_DIR}/boot/bootcd")
# Activate support for assembly source files
enable_language(ASM)
# Activate language support for resource files
enable_language(RC)
-set(IMPORT_EXECUTABLES "${REACTOS_SOURCE_DIR}/build/ImportExecutables.cmake" CACHE FILEPATH "Host executables")
-include(${IMPORT_EXECUTABLES})
-
add_definitions(-DDBG=${DBG} -DKDBG=${KDBG})
if(DBG)
add_definitions(-D_M_IX86 -D_X86_ -D__i386__)
# Other
-add_definitions(-DUSE_COMPILER_EXCEPTIONS)
-add_definitions(-D_USE_32BIT_TIME_T)
-
-include_directories(include)
-include_directories(include/psdk)
-include_directories(include/dxsdk)
-include_directories(${REACTOS_BINARY_DIR}/include)
-include_directories(${REACTOS_BINARY_DIR}/include/dxsdk)
-include_directories(${REACTOS_BINARY_DIR}/include/psdk)
-include_directories(${REACTOS_BINARY_DIR}/include/reactos)
-include_directories(include/crt)
+add_definitions(-DUSE_COMPILER_EXCEPTIONS -D_USE_32BIT_TIME_T)
+
+include_directories(
+ include
+ include/psdk
+ include/dxsdk
+ ${REACTOS_BINARY_DIR}/include
+ ${REACTOS_BINARY_DIR}/include/dxsdk
+ ${REACTOS_BINARY_DIR}/include/psdk
+ ${REACTOS_BINARY_DIR}/include/reactos
+ include/crt
+ include/ddk
+ include/ndk
+ include/reactos
+ include/reactos/libs)
+
if(MSVC)
include_directories(include/crt/msc)
else()
include_directories(include/crt/mingw32)
endif(MSVC)
-include_directories(include/ddk)
-include_directories(include/ndk)
-include_directories(include/reactos)
-include_directories(include/reactos/libs)
add_subdirectory(include/psdk)
add_subdirectory(include/dxsdk)
add_subdirectory(include/reactos/idl)
add_subdirectory(include/reactos/wine)
add_subdirectory(include/reactos/mc)
-
-#minicd target
-set(BOOTCD_DIR "${REACTOS_BINARY_DIR}/boot/bootcd")
-
-file(MAKE_DIRECTORY "${BOOTCD_DIR}")
-file(MAKE_DIRECTORY "${BOOTCD_DIR}/loader")
-file(MAKE_DIRECTORY "${BOOTCD_DIR}/reactos")
-file(MAKE_DIRECTORY "${BOOTCD_DIR}/reactos/system32")
-
-add_custom_target(minicd
- COMMAND native-cdmake -v -j -m -b ${CMAKE_CURRENT_BINARY_DIR}/boot/freeldr/bootsect/isoboot.bin ${BOOTCD_DIR} REACTOS ${REACTOS_BINARY_DIR}/minicd.iso
- DEPENDS native-cdmake)
-
-add_minicd(${REACTOS_SOURCE_DIR}/boot/bootdata/bootcd.ini "" freeldr.ini)
-set_directory_properties(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${REACTOS_BINARY_DIR}/minicd.iso)
-
-#livecd target
-set(LIVECD_DIR "${REACTOS_BINARY_DIR}/boot/livecd")
-
-file(MAKE_DIRECTORY "${LIVECD_DIR}")
-file(MAKE_DIRECTORY "${LIVECD_DIR}/loader")
-file(MAKE_DIRECTORY "${LIVECD_DIR}/Profiles")
-file(MAKE_DIRECTORY "${LIVECD_DIR}/Profiles/All Users")
-file(MAKE_DIRECTORY "${LIVECD_DIR}/Profiles/All Users/Desktop")
-file(MAKE_DIRECTORY "${LIVECD_DIR}/Profiles/Default User")
-file(MAKE_DIRECTORY "${LIVECD_DIR}/Profiles/Default User/Desktop")
-file(MAKE_DIRECTORY "${LIVECD_DIR}/Profiles/Default User/My Documents")
-file(MAKE_DIRECTORY "${LIVECD_DIR}/reactos")
-file(MAKE_DIRECTORY "${LIVECD_DIR}/reactos/inf")
-file(MAKE_DIRECTORY "${LIVECD_DIR}/reactos/fonts")
-file(MAKE_DIRECTORY "${LIVECD_DIR}/reactos/system32")
-file(MAKE_DIRECTORY "${LIVECD_DIR}/reactos/system32/config")
-
-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 native-cdmake)
-add_livecd(${REACTOS_SOURCE_DIR}/boot/bootdata/livecd.ini "" freeldr.ini)
-set_directory_properties(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${REACTOS_BINARY_DIR}/livecd.iso)
+add_subdirectory(include/asm)
include(baseaddress.cmake)
add_custom_target(gendib_generated ALL DEPENDS ${OUTPUT_FILES})
-endif()
+file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/importlibs)
+
+#bootcd and livecd
+include(ros_cd.cmake)
+endif()