* Visual Studio IDE support bringup. We can now even compile bootcd/livecd...etc...
[reactos.git] / reactos / hal / halx86 / CMakeLists.txt
1
2 add_definitions(
3 -D_NTHALDLL_
4 -D_NTHAL_)
5
6 include_directories(
7 include
8 ${REACTOS_SOURCE_DIR}/ntoskrnl/include)
9
10 list(APPEND HAL_GENERIC_SOURCE
11 generic/beep.c
12 generic/cmos.c
13 generic/display.c
14 generic/dma.c
15 generic/drive.c
16 generic/halinit.c
17 generic/memory.c
18 generic/misc.c
19 generic/reboot.c
20 generic/sysinfo.c
21 generic/usage.c)
22
23 if(ARCH STREQUAL "i386")
24 list(APPEND HAL_GENERIC_SOURCE
25 generic/bios.c
26 generic/portio.c)
27 endif()
28
29 if(NOT MSVC AND (CMAKE_VERSION VERSION_GREATER 2.8.7))
30 add_library(lib_hal_generic OBJECT ${HAL_GENERIC_SOURCE})
31 else()
32 add_library(lib_hal_generic ${HAL_GENERIC_SOURCE})
33 add_dependencies(lib_hal_generic asm)
34 endif()
35
36 add_pch(lib_hal_generic include/hal.h)
37
38 if(ARCH STREQUAL "i386")
39
40 #####################################
41 # Generate the pcidata source files in the x86 build
42 #
43 add_custom_command(
44 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/pci_classes.c ${CMAKE_CURRENT_BINARY_DIR}/pci_classes.h
45 COMMAND native-bin2c ${CMAKE_CURRENT_SOURCE_DIR}/legacy/bus/pci_classes.ids ${CMAKE_CURRENT_BINARY_DIR}/pci_classes.c ${CMAKE_CURRENT_BINARY_DIR}/pci_classes.h ClassTable INIT_FUNCTION ${CMAKE_CURRENT_SOURCE_DIR}/include/hal.h
46 DEPENDS native-bin2c ${CMAKE_CURRENT_SOURCE_DIR}/legacy/bus/pci_classes.ids)
47
48 add_custom_command(
49 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/pci_vendors.c ${CMAKE_CURRENT_BINARY_DIR}/pci_vendors.h
50 COMMAND native-bin2c ${CMAKE_CURRENT_SOURCE_DIR}/legacy/bus/pci_vendors.ids ${CMAKE_CURRENT_BINARY_DIR}/pci_vendors.c ${CMAKE_CURRENT_BINARY_DIR}/pci_vendors.h VendorTable INIT_FUNCTION ${CMAKE_CURRENT_SOURCE_DIR}/include/hal.h
51 DEPENDS native-bin2c ${CMAKE_CURRENT_SOURCE_DIR}/legacy/bus/pci_vendors.ids)
52 #####################################
53
54 list(APPEND HAL_LEGACY_SOURCE
55 legacy/bus/bushndlr.c
56 legacy/bus/cmosbus.c
57 legacy/bus/isabus.c
58 legacy/bus/pcibus.c
59 ${CMAKE_CURRENT_BINARY_DIR}/pci_classes.c
60 ${CMAKE_CURRENT_BINARY_DIR}/pci_vendors.c
61 legacy/bus/sysbus.c
62 legacy/bussupp.c
63 legacy/halpnpdd.c
64 legacy/halpcat.c)
65
66 if(NOT MSVC AND (CMAKE_VERSION VERSION_GREATER 2.8.7))
67 add_library(lib_hal_legacy OBJECT ${HAL_LEGACY_SOURCE})
68 else()
69 add_library(lib_hal_legacy ${HAL_LEGACY_SOURCE})
70 endif()
71
72 #add_pch(lib_hal_legacy include/hal.h)
73
74 if(MSVC OR (NOT CMAKE_VERSION VERSION_GREATER 2.8.7))
75 target_link_libraries(lib_hal_legacy lib_hal_generic)
76 endif()
77
78 endif()
79
80 list(APPEND HAL_ACPI_SOURCE
81 acpi/halacpi.c
82 acpi/halpnpdd.c
83 acpi/busemul.c
84 legacy/bus/pcibus.c)
85
86 if(NOT MSVC AND (CMAKE_VERSION VERSION_GREATER 2.8.7))
87 add_library(lib_hal_acpi OBJECT ${HAL_ACPI_SOURCE})
88 else()
89 add_library(lib_hal_acpi ${HAL_ACPI_SOURCE})
90 endif()
91 #add_pch(lib_hal_acpi include/hal.h)
92
93 if(MSVC OR (NOT CMAKE_VERSION VERSION_GREATER 2.8.7))
94 target_link_libraries(lib_hal_acpi lib_hal_generic)
95 endif()
96
97 list(APPEND HAL_UP_SOURCE
98 generic/spinlock.c
99 up/processor.c)
100
101 if(NOT MSVC AND (CMAKE_VERSION VERSION_GREATER 2.8.7))
102 add_library(lib_hal_up OBJECT ${HAL_UP_SOURCE})
103 endif()
104
105 list(APPEND HAL_APIC_ASM_SOURCE
106 apic/apictrap.S
107 apic/tsccal.S)
108
109 list(APPEND HAL_APIC_SOURCE
110 apic/apic.c
111 apic/apictimer.c
112 apic/halinit_apic.c
113 apic/rtctimer.c
114 apic/tsc.c)
115
116 if(ARCH STREQUAL "i386")
117 list(APPEND HAL_PIC_ASM_SOURCE
118 generic/systimer.S
119 generic/trap.S)
120 list(APPEND HAL_PIC_SOURCE
121 generic/profil.c
122 generic/timer.c
123 up/halinit_up.c
124 up/pic.c)
125
126 if(NOT MSVC AND (CMAKE_VERSION VERSION_GREATER 2.8.7))
127 add_library(lib_hal_pic OBJECT ${HAL_PIC_SOURCE} ${HAL_PIC_ASM_SOURCE})
128 endif()
129
130 list(APPEND MINI_HAL_SOURCE
131 generic/portio.c
132 generic/systimer.S
133 legacy/bus/bushndlr.c
134 legacy/bus/cmosbus.c
135 legacy/bus/isabus.c
136 legacy/bus/pcibus.c
137 legacy/bus/sysbus.c
138 legacy/bussupp.c
139 generic/beep.c
140 generic/bios.c
141 generic/cmos.c
142 generic/dma.c
143 generic/display.c
144 generic/drive.c
145 generic/misc.c
146 generic/profil.c
147 generic/reboot.c
148 generic/spinlock.c
149 generic/sysinfo.c
150 generic/timer.c
151 generic/usage.c
152 up/halinit_mini.c
153 up/pic.c
154 up/processor.c)
155
156 spec2def(hal.dll ../hal.spec ADD_IMPORTLIB)
157
158 # hal
159 if(NOT MSVC AND (CMAKE_VERSION VERSION_GREATER 2.8.7))
160 add_library(hal SHARED
161 $<TARGET_OBJECTS:lib_hal_generic>
162 $<TARGET_OBJECTS:lib_hal_legacy>
163 $<TARGET_OBJECTS:lib_hal_up>
164 $<TARGET_OBJECTS:lib_hal_pic>
165 generic/v86.S
166 up/halup.rc
167 ${CMAKE_CURRENT_BINARY_DIR}/hal.def)
168 else()
169 add_asm_files(hal_asm
170 ${HAL_PIC_ASM_SOURCE}
171 generic/v86.S)
172 add_library(hal SHARED
173 ${HAL_UP_SOURCE}
174 ${HAL_PIC_SOURCE}
175 ${hal_asm}
176 up/halup.rc
177 ${CMAKE_CURRENT_BINARY_DIR}/hal.def)
178 endif()
179
180 if(MSVC OR (NOT CMAKE_VERSION VERSION_GREATER 2.8.7))
181 target_link_libraries(hal lib_hal_generic lib_hal_legacy)
182 endif()
183 target_link_libraries(hal libcntpr)
184 add_importlibs(hal ntoskrnl)
185 #add_pch(hal include/hal.h)
186 add_dependencies(hal psdk bugcodes)
187 set_entrypoint(hal HalInitSystem 8)
188 set_subsystem(hal native)
189 set_image_base(hal 0x00010000)
190 add_cd_file(TARGET hal DESTINATION reactos/system32 NO_CAB FOR all)
191 if(MSVC)
192 add_target_link_flags(hal "/ignore:4216 /ignore:4078")
193 endif()
194
195 # hal acpi
196 spec2def(halacpi.dll ../hal.spec)
197 if(NOT MSVC AND (CMAKE_VERSION VERSION_GREATER 2.8.7))
198 add_library(halacpi SHARED
199 $<TARGET_OBJECTS:lib_hal_generic>
200 $<TARGET_OBJECTS:lib_hal_acpi>
201 $<TARGET_OBJECTS:lib_hal_up>
202 $<TARGET_OBJECTS:lib_hal_pic>
203 generic/v86.S
204 acpi/halacpi.rc
205 ${CMAKE_CURRENT_BINARY_DIR}/halacpi.def)
206 else()
207 set_source_files_properties(${HAL_PIC_ASM_SOURCE} generic/v86.S PROPERTIES COMPILE_DEFINITIONS "CONFIG_ACPI")
208 add_asm_files(halacpi_asm ${HAL_PIC_ASM_SOURCE} generic/v86.S)
209 add_library(halacpi SHARED
210 ${HAL_UP_SOURCE}
211 ${HAL_PIC_SOURCE}
212 ${halacpi_asm}
213 acpi/halacpi.rc
214 ${CMAKE_CURRENT_BINARY_DIR}/halacpi.def)
215 endif()
216
217 if(MSVC OR (NOT CMAKE_VERSION VERSION_GREATER 2.8.7))
218 target_link_libraries(halacpi lib_hal_generic lib_hal_acpi)
219 endif()
220 target_link_libraries(halacpi libcntpr)
221 add_importlibs(halacpi ntoskrnl)
222 add_dependencies(halacpi psdk bugcodes)
223 set_entrypoint(halacpi HalInitSystem@8)
224 set_subsystem(halacpi native)
225 set_image_base(halacpi 0x00010000)
226 add_target_compile_definitions(halacpi CONFIG_ACPI)
227 add_cd_file(TARGET halacpi DESTINATION reactos/system32 NO_CAB FOR all)
228 if(MSVC)
229 add_target_link_flags(halacpi "/ignore:4216 /ignore:4078")
230 endif()
231
232 # mini_hal
233 add_library(mini_hal ${MINI_HAL_SOURCE})
234 add_target_compile_definitions(mini_hal _BLDR_ _MINIHAL_)
235 add_dependencies(mini_hal psdk bugcodes asm)
236
237 elseif(ARCH STREQUAL "amd64")
238
239 spec2def(hal.dll ../hal.spec ADD_IMPORTLIB)
240
241 list(APPEND HAL_SOURCE
242 ${HAL_GENERIC_SOURCE}
243 ${HAL_ACPI_SOURCE}
244 ${HAL_APIC_SOURCE}
245 generic/spinlock.c
246 amd64/x86bios.c
247 amd64/halinit.c
248 amd64/processor.c
249 ${CMAKE_CURRENT_BINARY_DIR}/hal.def)
250
251 # hal
252 add_library(hal SHARED ${HAL_SOURCE})
253 add_pch(hal include/hal.h)
254 add_dependencies(hal psdk bugcodes)
255
256 set_entrypoint(hal HalInitSystem)
257 set_subsystem(hal native)
258 set_image_base(hal 0x00010000)
259 add_importlibs(hal ntoskrnl)
260 target_link_libraries(hal libcntpr)
261 if(MSVC)
262 add_target_link_flags(hal "/ignore:4216")
263 endif()
264
265 add_cd_file(TARGET hal DESTINATION reactos/system32 NO_CAB FOR all)
266
267 endif()
268
269