include_directories(
include
- ${REACTOS_SOURCE_DIR}/ntoskrnl/include)
-
-list(APPEND HAL_GENERIC_SOURCE
- generic/beep.c
- generic/cmos.c
- generic/display.c
- generic/dma.c
- generic/drive.c
- generic/halinit.c
- generic/memory.c
- generic/misc.c
- generic/reboot.c
- generic/sysinfo.c
- generic/usage.c)
-
-if(ARCH MATCHES i386)
- list(APPEND HAL_GENERIC_SOURCE
- generic/bios.c
- generic/portio.c)
-endif()
-
-add_library(lib_hal_generic ${HAL_GENERIC_SOURCE})
-add_dependencies(lib_hal_generic asm)
-add_pch(lib_hal_generic include/hal.h)
-
-list(APPEND HAL_LEGACY_SOURCE
- legacy/bus/bushndlr.c
- legacy/bus/cmosbus.c
- legacy/bus/isabus.c
- legacy/bus/pcibus.c
- legacy/bus/pcidata.c
- legacy/bus/sysbus.c
- legacy/bussupp.c
- legacy/halpnpdd.c
- legacy/halpcat.c)
-
-add_library(lib_hal_legacy ${HAL_LEGACY_SOURCE})
-#add_pch(lib_hal_legacy include/hal.h)
-target_link_libraries(lib_hal_legacy lib_hal_generic)
-
-list(APPEND HAL_ACPI_SOURCE
- acpi/halacpi.c
- acpi/halpnpdd.c
- acpi/busemul.c
- legacy/bus/pcibus.c)
-
-add_library(lib_hal_acpi ${HAL_ACPI_SOURCE})
-#add_pch(lib_hal_acpi include/hal.h)
-target_link_libraries(lib_hal_acpi lib_hal_generic)
-
-list(APPEND HAL_UP_SOURCE
- generic/spinlock.c
- up/processor.c)
-
-list(APPEND HAL_PIC_SOURCE
- generic/profil.c
- generic/timer.c
- generic/systimer.S
- generic/trap.S
- up/halinit_up.c
- up/pic.c)
-
-list(APPEND HAL_APIC_SOURCE
- apic/apic.c
- apic/apictimer.c
- apic/apictrap.S
- apic/halinit_apic.c
- apic/rtctimer.c
- apic/tsc.c
- apic/tsccal.S)
-
-if(ARCH MATCHES i386)
- list(APPEND MINI_HAL_SOURCE
- generic/portio.c
- generic/systimer.S
- legacy/bus/bushndlr.c
- legacy/bus/cmosbus.c
- legacy/bus/isabus.c
- legacy/bus/pcibus.c
- legacy/bus/sysbus.c
- legacy/bussupp.c
- generic/beep.c
- generic/bios.c
- generic/cmos.c
- generic/dma.c
- generic/display.c
- generic/drive.c
- generic/misc.c
- generic/profil.c
- generic/reboot.c
- generic/spinlock.c
- generic/sysinfo.c
- generic/timer.c
- generic/usage.c
- up/halinit_mini.c
- up/pic.c
- up/processor.c)
-
- spec2def(hal.dll ../hal.spec)
-
- # hal
- add_library(hal SHARED
- ${HAL_UP_SOURCE}
- ${HAL_PIC_SOURCE}
- generic/v86.S
- up/halup.rc
- ${CMAKE_CURRENT_BINARY_DIR}/hal.def)
- target_link_libraries(hal lib_hal_generic lib_hal_legacy libcntpr)
- add_importlibs(hal ntoskrnl)
- #add_pch(hal include/hal.h)
- add_dependencies(hal psdk bugcodes)
- set_entrypoint(hal HalInitSystem 8)
- set_subsystem(hal native)
- set_image_base(hal 0x00010000)
- add_cd_file(TARGET hal DESTINATION reactos/system32 NO_CAB FOR all)
- if(MSVC)
- add_target_link_flags(hal "/ignore:4216 /ignore:4078")
+ ${REACTOS_SOURCE_DIR}/ntoskrnl/include
+ ${REACTOS_SOURCE_DIR}/sdk/include/reactos/libs/fast486)
+
+function(add_hal _halname)
+ cmake_parse_arguments(_haldata "" "" "SOURCES;COMPONENTS" ${ARGN})
+
+ # Handle the spec file for the dll name
+ spec2def(${_halname}.dll ../hal.spec ADD_IMPORTLIB)
+
+ # Create the actual target
+ if(NOT MSVC)
+ foreach(_component ${_haldata_COMPONENTS})
+ list(APPEND _haldata_SOURCES "$<TARGET_OBJECTS:lib_hal_${_component}>")
+ endforeach()
+ add_library(${_halname} MODULE
+ ${_haldata_SOURCES}
+ ${CMAKE_CURRENT_BINARY_DIR}/hal.def)
+ else()
+ foreach(_component ${_haldata_COMPONENTS})
+ list(APPEND _haldata_LIBS "lib_hal_${_component}")
+ endforeach()
+ add_library(${_halname} MODULE
+ ${_haldata_SOURCES}
+ ${CMAKE_CURRENT_BINARY_DIR}/hal.def)
+ target_link_libraries(${_halname} ${_haldata_LIBS})
endif()
- # hal acpi
- spec2def(halacpi.dll ../hal.spec halacpi)
- add_library(halacpi SHARED
- ${HAL_UP_SOURCE}
- ${HAL_PIC_SOURCE}
- generic/v86.S
- acpi/halacpi.rc
- ${CMAKE_CURRENT_BINARY_DIR}/halacpi.def)
- target_link_libraries(halacpi lib_hal_generic lib_hal_acpi libcntpr)
- add_importlibs(halacpi ntoskrnl)
- add_dependencies(halacpi psdk bugcodes)
- set_entrypoint(halacpi HalInitSystem@8)
- set_subsystem(halacpi native)
- set_image_base(halacpi 0x00010000)
- add_target_compile_definitions(halacpi CONFIG_ACPI)
- add_cd_file(TARGET halacpi DESTINATION reactos/system32 NO_CAB FOR all)
+ target_link_libraries(${_halname} libcntpr)
+ add_importlibs(${_halname} ntoskrnl)
+ #add_pch(${_halname} include/hal.h)
+ add_dependencies(${_halname} psdk asm)
+ set_module_type(${_halname} kerneldll ENTRYPOINT HalInitSystem 8)
+ add_cd_file(TARGET ${_halname} DESTINATION reactos/system32 NO_CAB FOR all)
if(MSVC)
- add_target_link_flags(halacpi "/ignore:4216 /ignore:4078")
+ add_target_link_flags(${_halname} "/ignore:4216 /ignore:4078")
+ else()
+ target_link_libraries(${_halname} -lgcc)
endif()
+endfunction()
- # mini_hal
- add_library(mini_hal ${MINI_HAL_SOURCE})
- add_target_compile_definitions(mini_hal _BLDR_ _MINIHAL_)
- add_dependencies(mini_hal psdk bugcodes asm)
+# The components
+include(generic.cmake)
+include(acpi.cmake)
+include(apic.cmake)
+
+if(ARCH STREQUAL "i386")
+ include(pcidata.cmake)
+ include(legacy.cmake)
+ include(up.cmake)
+ include(pic.cmake)
+ add_subdirectory(minihal)
+
+ # hal
+ add_hal(hal SOURCES up/halup.rc COMPONENTS generic legacy up pic)
+ add_hal(halacpi SOURCES acpi/halacpi.rc COMPONENTS generic acpi up pic)
+ add_hal(halapic SOURCES acpi/halacpi.rc COMPONENTS generic legacy up apic)
+ add_hal(halaacpi SOURCES acpi/halacpi.rc COMPONENTS generic acpi up apic)
-elseif(ARCH MATCHES amd64)
+ #add_hal(halmps SOURCES up/halup.rc COMPONENTS generic legacy smp pic)
+ #add_hal(halmacpi SOURCES acpi/halacpi.rc COMPONENTS generic acpi smp pic)
+ #add_hal(halmapic SOURCES acpi/halacpi.rc COMPONENTS generic legacy smp apic)
+ #add_hal(halmaacpi SOURCES acpi/halacpi.rc COMPONENTS generic acpi smp apic)
- spec2def(hal.dll ../hal.spec)
+elseif(ARCH STREQUAL "amd64")
list(APPEND HAL_SOURCE
- ${HAL_GENERIC_SOURCE}
- ${HAL_ACPI_SOURCE}
- ${HAL_APIC_SOURCE}
generic/spinlock.c
amd64/x86bios.c
amd64/halinit.c
- amd64/processor.c
- ${CMAKE_CURRENT_BINARY_DIR}/hal.def)
+ amd64/processor.c)
- # hal
- add_library(hal SHARED ${HAL_SOURCE})
- add_pch(hal include/hal.h)
- add_dependencies(hal psdk bugcodes)
-
- set_entrypoint(hal HalInitSystem)
- set_subsystem(hal native)
- set_image_base(hal 0x00010000)
- add_importlibs(hal ntoskrnl)
- target_link_libraries(hal libcntpr)
- if(MSVC)
- add_target_link_flags(hal "/ignore:4216")
- endif()
-
- add_cd_file(TARGET hal DESTINATION reactos/system32 NO_CAB FOR all)
+ add_hal(hal SOURCES ${HAL_SOURCE} COMPONENTS generic acpi apic)
+ target_link_libraries(hal fast486)
endif()
-
-add_importlib_target(../hal.spec)