cmake_minimum_required(VERSION 2.6)
project(REACTOS)
+#versioning
+include(include/reactos/version.cmake)
+
# Don't escape preprocessor definition values added via add_definitions
cmake_policy(SET CMP0005 OLD)
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)
+set(CMAKE_SHARED_LIBRARY_PREFIX "")
+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)
+
if(NOT ARCH)
set(ARCH i386)
endif()
+string(TOLOWER ${ARCH} ARCH)
# Compile options
if(ARCH MATCHES i386)
include(config-arm.cmake)
endif()
+add_definitions(-D__REACTOS__)
+
if(NOT CMAKE_CROSSCOMPILING)
add_definitions(-DTARGET_${ARCH})
- if(ARCH MATCHES i386)
- if(MSVC)
- add_definitions(-Dinline=__inline)
- else()
- add_definitions(-fshort-wchar)
- endif()
+ if(MSVC)
+ add_definitions(-Dinline=__inline)
+ else()
+ add_definitions(-fshort-wchar)
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- )
+ export(TARGETS widl 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)
+ export(TARGETS gendib cabman cdmake mkhive spec2def geninc FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE native- )
endif()
- set(IMPORT_EXECUTABLES "${REACTOS_BUILD_TOOLS_DIR}/ImportExecutables.cmake" CACHE FILEPATH "Host executables")
- include(${IMPORT_EXECUTABLES})
-
-endif()
-
-# Compiler specific definitions and macros
-if(MSVC)
- include(msc.cmake)
else()
- include(gcc.cmake)
-endif()
-
-# Generic macros
-include(CMakeMacros.cmake)
-
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)
-set(CMAKE_SHARED_LIBRARY_PREFIX "")
-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__)
+ # adjust the default behaviour of the FIND_XXX() commands:
+ # search headers and libraries in the target environment, search
+ # programs in the host environment
+ set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+ set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+ set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-if(CMAKE_CROSSCOMPILING)
-
- #Some cleanup
+ # Do some cleanup
file(REMOVE
${REACTOS_BINARY_DIR}/dependencies.graphml
${REACTOS_BINARY_DIR}/boot/ros_livecd.txt
${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)
+ endif()
+
+ set(IMPORT_EXECUTABLES "${REACTOS_BUILD_TOOLS_DIR}/ImportExecutables.cmake" CACHE FILEPATH "Host executables")
+ include(${IMPORT_EXECUTABLES})
+
+ # Compiler specific definitions and macros
+ if(MSVC)
+ include(msc.cmake)
+ else()
+ include(gcc.cmake)
+ endif()
+
+ # Generic macros
+ include(CMakeMacros.cmake)
+
+ # IDL macros for widl/midl
+ include(cmake/idl-support.cmake)
+
#Some useful variables
set(LIVECD_DIR "${REACTOS_BINARY_DIR}/boot/livecd")
set(BOOTCD_DIR "${REACTOS_BINARY_DIR}/boot/bootcd")
endif()
# Version Options
- add_definitions(-DWINVER=0x502 -D_WIN32_IE=0x600 -D_WIN32_WINNT=0x502 -D_WIN32_WINDOWS=0x502 -D_SETUPAPI_VER=0x502)
+ add_definitions(-DWINVER=0x502
+ -D_WIN32_IE=0x600
+ -D_WIN32_WINNT=0x502
+ -D_WIN32_WINDOWS=0x502
+ -D_SETUPAPI_VER=0x502)
# Arch Options
if(ARCH MATCHES i386)
add_definitions(-D_M_IX86 -D_X86_ -D__i386__)
elseif(ARCH MATCHES amd64)
- add_definitions(-D_M_AMD64 -D_AMD64_ -D_M_AXP64 -D__x86_64__ -D_WIN64)
+ add_definitions(-D_M_AMD64 -D_AMD64_ -D__x86_64__ -D_WIN64)
elseif(ARCH MATCHES arm)
# _M_ARM is already defined by toolchain
add_definitions(-D_ARM_ -D__arm__)
add_subdirectory(ntoskrnl)
add_subdirectory(subsystems)
- # nci generated intermediate files
-
- list(APPEND nci_output
- ${REACTOS_BINARY_DIR}/ntoskrnl/include/internal/napi.h
- ${REACTOS_BINARY_DIR}/subsystems/win32/win32k/include/napi.h
- ${REACTOS_BINARY_DIR}/lib/ntdllsys/ntdll.S
- ${REACTOS_BINARY_DIR}/ntoskrnl/ex/zw.S
- ${REACTOS_BINARY_DIR}/lib/win32ksys/win32k.S
- ${REACTOS_BINARY_DIR}/dll/ntdll/def/ntsys.pspec)
-
- list(APPEND nci_folders
- ${CMAKE_CURRENT_BINARY_DIR}/dll/ntdll/def
- ${CMAKE_CURRENT_BINARY_DIR}/lib/ntdllsys/ntdll
- ${CMAKE_CURRENT_BINARY_DIR}/lib/win32ksys
- ${CMAKE_CURRENT_BINARY_DIR}/ntoskrnl/include/internal
- ${CMAKE_CURRENT_BINARY_DIR}/ntoskrnl/ex
- ${CMAKE_CURRENT_BINARY_DIR}/subsystems/win32/win32k/include)
-
- file(MAKE_DIRECTORY ${nci_folders})
-
- add_custom_command(
- OUTPUT ${nci_output}
- COMMAND native-nci -arch ${ARCH} ${REACTOS_SOURCE_DIR}/ntoskrnl/sysfuncs.lst ${REACTOS_SOURCE_DIR}/subsystems/win32/win32k/w32ksvc.db ${nci_output}
- DEPENDS native-nci ${nci_folders})
-
- set_source_files_properties(${nci_output} PROPERTIES GENERATED TRUE)
-
- add_custom_target(ntdll_S ALL DEPENDS ${REACTOS_BINARY_DIR}/lib/ntdllsys/ntdll.S)
- add_custom_target(win32k_S ALL DEPENDS ${REACTOS_BINARY_DIR}/lib/win32ksys/win32k.S)
- add_custom_target(ntsys_pspec ALL DEPENDS ${REACTOS_BINARY_DIR}/dll/ntdll/def/ntsys.pspec)
- add_custom_target(kernel_napi ALL DEPENDS ${REACTOS_BINARY_DIR}/ntoskrnl/include/internal/napi.h)
- add_custom_target(subsystem_napi ALL DEPENDS ${REACTOS_BINARY_DIR}/subsystems/win32/win32k/include/napi.h)
- add_custom_target(kernel_zw ALL DEPENDS ${REACTOS_BINARY_DIR}/ntoskrnl/ex/zw.S)
-
file(MAKE_DIRECTORY ${REACTOS_BINARY_DIR}/include/reactos)
- add_custom_command(
- OUTPUT ${REACTOS_BINARY_DIR}/include/reactos/buildno.h
- COMMAND native-buildno ${REACTOS_BINARY_DIR}/include/reactos/buildno.h
- DEPENDS ${REACTOS_SOURCE_DIR}/include/reactos/version.h)
-
add_custom_target(buildno_header ALL DEPENDS ${REACTOS_BINARY_DIR}/include/reactos/buildno.h)
file(MAKE_DIRECTORY ${REACTOS_BINARY_DIR}/subsystems/win32/win32k/dib)