xref: /reactos/sdk/cmake/config.cmake (revision 3c2bfb57)
1
2if(ARCH STREQUAL "i386")
3    set(SARCH "pc" CACHE STRING
4    "Sub-architecture to build for. Specify one of:
5     pc pc98 xbox")
6elseif(ARCH STREQUAL "amd64")
7    set(SARCH "" CACHE STRING
8    "Sub-architecture to build for.")
9elseif(ARCH STREQUAL "arm")
10    set(SARCH "omap3-zoom2" CACHE STRING
11    "Sub-architecture (board) to build for. Specify one of:
12     kurobox versatile omap3-zoom2 omap3-beagle")
13elseif(ARCH STREQUAL "arm64")
14    # By design, arm64 kernels and OSes should be intercompatible, but
15    # due to SoC vendors seemingly not being able to follow ARM design guidelines
16    # properly, there might be a need for board-specific builds later on...
17    set(SARCH "" CACHE STRING
18    "Sub-architecture (board) to build for.")
19endif()
20
21if(ARCH STREQUAL "i386")
22    set(OARCH "pentium" CACHE STRING
23    "Generate instructions for this CPU type. Specify one of:
24     pentium, pentiumpro")
25elseif(ARCH STREQUAL "amd64")
26    set(OARCH "athlon64" CACHE STRING
27    "Generate instructions for this CPU type. Specify one of:
28     k8 opteron athlon64 athlon-fx")
29elseif(ARCH STREQUAL "arm")
30    set(OARCH "armv7-a" CACHE STRING
31    "Generate instructions for this CPU type. Specify one of:
32     armv5te armv7-a")
33elseif(ARCH STREQUAL "arm64")
34    # This should not be bumped unless REALLY needed, because (as of 2021)
35    # there are still new designs using the original A53 cores w/ armv8.0.
36    set(OARCH "armv8-a" CACHE STRING
37    "Generate instructions for this CPU type. Specify one of:
38     armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a armv8.5-a armv8.6-a")
39endif()
40
41if(ARCH STREQUAL "i386" OR ARCH STREQUAL "amd64")
42    set(TUNE "generic" CACHE STRING
43    "Which CPU ReactOS should be optimized for.")
44elseif(ARCH STREQUAL "arm")
45    set(TUNE "generic-armv7-a" CACHE STRING
46    "Which CPU ReactOS should be optimized for.")
47elseif(ARCH STREQUAL "arm64")
48    set(TUNE "generic" CACHE STRING
49    "Which CPU ReactOS should be optimized for.")
50endif()
51
52set(OPTIMIZE "4" CACHE STRING
53"What level of optimization to use.
54 0 = Off
55 1 = Optimize for size (-Os) with some additional options
56 2 = Optimize for size (-Os)
57 3 = Optimize debugging experience (-Og)
58 4 = Optimize (-O1)
59 5 = Optimize even more (-O2)
60 6 = Optimize yet more (-O3)
61 7 = Disregard strict standards compliance (-Ofast)")
62
63set(LTCG FALSE CACHE BOOL
64"Whether to build with link-time code generation")
65
66set(GDB FALSE CACHE BOOL
67"Whether to compile for debugging with GDB.
68If you don't use GDB, don't enable this.")
69
70if(CMAKE_BUILD_TYPE STREQUAL "Release")
71    set(DBG FALSE CACHE BOOL
72"Whether to compile for debugging.")
73else()
74    set(DBG TRUE CACHE BOOL
75"Whether to compile for debugging.")
76endif()
77
78if(MSVC)
79    set(KDBG FALSE CACHE BOOL
80"Whether to compile in the integrated kernel debugger.")
81    if(CMAKE_BUILD_TYPE STREQUAL "Release")
82        set(_WINKD_ FALSE CACHE BOOL "Whether to compile with the KD protocol.")
83    else()
84        set(_WINKD_ TRUE CACHE BOOL "Whether to compile with the KD protocol.")
85    endif()
86else()
87    if(CMAKE_BUILD_TYPE STREQUAL "Release")
88        set(KDBG FALSE CACHE BOOL "Whether to compile in the integrated kernel debugger.")
89    else()
90        set(KDBG TRUE CACHE BOOL "Whether to compile in the integrated kernel debugger.")
91    endif()
92    set(_WINKD_ FALSE CACHE BOOL "Whether to compile with the KD protocol.")
93endif()
94
95option(BUILD_MP "Whether to build the multiprocessor versions of NTOSKRNL and HAL." ON)
96
97cmake_dependent_option(ISAPNP_ENABLE "Whether to enable the ISA PnP support." ON
98                       "ARCH STREQUAL i386 AND NOT SARCH STREQUAL xbox" OFF)
99
100set(GENERATE_DEPENDENCY_GRAPH FALSE CACHE BOOL
101"Whether to create a GraphML dependency graph of DLLs.")
102
103if(CMAKE_C_COMPILER_ID STREQUAL "MSVC")
104    option(_PREFAST_ "Whether to enable PREFAST while compiling." OFF)
105    option(_VS_ANALYZE_ "Whether to enable static analysis while compiling." OFF)
106    # RTC are incompatible with compiler optimizations.
107    cmake_dependent_option(RUNTIME_CHECKS "Whether to enable runtime checks on MSVC" ON
108                           "CMAKE_BUILD_TYPE STREQUAL Debug" OFF)
109endif()
110
111if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
112    option(STACK_PROTECTOR "Whether to enable the GCC stack checker while compiling" OFF)
113endif()
114
115set(USE_DUMMY_PSEH FALSE CACHE BOOL
116"Whether to disable PSEH support.")
117
118set(DLL_EXPORT_VERSION "0x502" CACHE STRING
119"The NT version the user mode DLLs target.")
120