⛏️ index : haiku.git

SubDir HAIKU_TOP src tests system boot loader ;

UsePrivateHeaders [ FDirName kernel disk_device_manager ] ;
UsePrivateHeaders [ FDirName kernel util ] ;
UsePrivateHeaders kernel shared storage system libroot ;
SubDirSysHdrs $(HAIKU_TOP) headers private kernel arch $(TARGET_KERNEL_ARCH_DIR) ;
SubDirSysHdrs $(HAIKU_TOP) headers private system arch $(TARGET_ARCH) ;
SubDirSysHdrs $(HAIKU_TOP) src tests system boot loader ;
SubDirHdrs $(HAIKU_TOP) src system boot loader ;
SubDirHdrs $(HAIKU_TOP) src add-ons kernel partitioning_systems amiga ;
SubDirHdrs $(HAIKU_TOP) src add-ons kernel partitioning_systems apple ;
SubDirHdrs $(HAIKU_TOP) src add-ons kernel partitioning_systems gpt ;
SubDirHdrs $(HAIKU_TOP) src add-ons kernel partitioning_systems intel ;

# we need to redefine certain calls in the boot loader so that
# they will really be used instead of their POSIX counterparts
# in libroot.so

ObjectC++Flags
	# boot loader
	main.cpp
	vfs.cpp
	partitions.cpp
	RootFileSystem.cpp
	elf.cpp
	menu.cpp
	loader.cpp
	kernel_args.cpp
	load_driver_settings.cpp
	pager.cpp

	# other
	platform_menu.cpp
	driver_settings.cpp

	# partitions
	amiga_rdb.cpp
	apple.cpp

	gpt.cpp
	Header.cpp
	crc32.cpp
	utility.cpp

	intel.cpp
	PartitionMap.cpp
	PartitionMapParser.cpp
	:
	-fvisibility=hidden
	[ FDefines
		open=boot_open close=boot_close
		read_pos=boot_read_pos write_pos=boot_write_pos fstat=boot_fstat
		main=boot_main
		get_haiku_revision=__get_haiku_revision __dso_handle=unused_dso_handle ]
	;

{
	local defines =
		_KERNEL_MODE _BOOT_MODE
		BOOT_ARCH=\\\"$(TARGET_ARCH)\\\"
			# the boot loader test application will try to load the BeOS kernel
			# from a supported partition/file system

		BOOT_SUPPORT_PARTITION_AMIGA
		BOOT_SUPPORT_PARTITION_APPLE
		BOOT_SUPPORT_PARTITION_EFI
		BOOT_SUPPORT_PARTITION_INTEL

		BOOT_SUPPORT_FILE_SYSTEM_BFS
		BOOT_SUPPORT_FILE_SYSTEM_AMIGA_FFS
		BOOT_SUPPORT_FILE_SYSTEM_TARFS
		;

	defines = [ FDefines $(defines) ] ;

	if $(OS) = "LINUX" {
		SubDirC++Flags $(defines) ;
	} else {
		#SubDirC++Flags $(defines) -DHAVE_READ_POS=1 -fcheck-memory-usage -D_NO_INLINE_ASM ;
		SubDirC++Flags $(defines) -DHAVE_READ_POS=1 -D_NO_INLINE_ASM ;
	}
}

SimpleTest BootLoaderTest :
	# userland bindings
	platform_start.cpp
	platform_console.cpp
	platform_debug.cpp
	platform_devices.cpp
	platform_heap.cpp
	platform_menu.cpp
	platform_misc.cpp
	platform_mmu.cpp
	platform_stubs.cpp
	Handle.cpp

	# boot loader
	PathBlocklist.cpp
	main.cpp
	vfs.cpp
	partitions.cpp
	RootFileSystem.cpp
	elf.cpp
	menu.cpp
	package_support.cpp
	loader.cpp
	kernel_args.cpp
	load_driver_settings.cpp
	pager.cpp

	# partitioning systems
	amiga_rdb.cpp
	apple.cpp

	gpt.cpp
	Header.cpp
	crc32.cpp
	utility.cpp

	intel.cpp
	PartitionMap.cpp
	PartitionMapParser.cpp

	# utility functions
	list.cpp
	driver_settings.cpp
	ring_buffer.cpp
	KMessage.cpp
	Referenceable.cpp
	:
	boottest_bfs.a boottest_amiga_ffs.a boottest_tarfs.a
	libkernelland_emu.so
	[ BuildFeatureAttribute zlib : library ] [ TargetLibstdc++ ]
;

# Tell Jam where to find the utility sources

SEARCH on [ FGristFiles list.cpp ring_buffer.cpp ]
	= [ FDirName $(HAIKU_TOP) src system kernel util ] ;

SEARCH on [ FGristFiles KMessage.cpp ]
    = [ FDirName $(HAIKU_TOP) src system kernel messaging ] ;

SEARCH on [ FGristFiles driver_settings.cpp ]
	= [ FDirName $(HAIKU_TOP) src system libroot os ] ;

SEARCH on [ FGristFiles Referenceable.cpp ]
    = [ FDirName $(HAIKU_TOP) src kits support ] ;

SEARCH on [ FGristFiles
		PathBlocklist.cpp
		main.cpp vfs.cpp partitions.cpp
		heap.cpp RootFileSystem.cpp
		elf.cpp menu.cpp loader.cpp
		package_support.cpp
		kernel_args.cpp load_driver_settings.cpp pager.cpp
	] = [ FDirName $(HAIKU_TOP) src system boot loader ] ;

# partitioning system modules

SEARCH on [ FGristFiles amiga_rdb.cpp ]
	= [ FDirName $(HAIKU_TOP) src add-ons kernel partitioning_systems amiga ] ;

SEARCH on [ FGristFiles apple.cpp ]
	= [ FDirName $(HAIKU_TOP) src add-ons kernel partitioning_systems apple ] ;

SEARCH on [ FGristFiles gpt.cpp Header.cpp crc32.cpp utility.cpp ]
	= [ FDirName $(HAIKU_TOP) src add-ons kernel partitioning_systems gpt ] ;

SEARCH on [ FGristFiles intel.cpp PartitionMap.cpp PartitionMapParser.cpp ]
	= [ FDirName $(HAIKU_TOP) src add-ons kernel partitioning_systems intel ] ;


SubInclude HAIKU_TOP src tests system boot loader file_systems ;