SubDir OBOS_TOP src kernel boot loader ;

# SubDirHdrs $(OBOS_TOP) src add-ons kernel partitioning_systems amiga ;
UsePrivateHeaders [ FDirName kernel boot platform $(OBOS_BOOT_PLATFORM) ] ;
UsePrivateHeaders [ FDirName kernel disk_device_manager ] ;
UsePrivateHeaders [ FDirName kernel util ] ;
UsePrivateHeaders [ FDirName shared ] ;
UsePrivateHeaders [ FDirName storage ] ;

{
	local defines =
		_BOOT_MODE
		BOOT_ARCH=\\\"$(OBOS_ARCH)\\\"

		BOOT_SUPPORT_PARTITION_AMIGA
		BOOT_SUPPORT_PARTITION_APPLE
		BOOT_SUPPORT_PARTITION_INTEL

		BOOT_SUPPORT_FILE_SYSTEM_BFS
		BOOT_SUPPORT_FILE_SYSTEM_AMIGA_FFS
		;

	defines = [ FDefines $(defines) ] ;
	SubDirCcFlags $(defines) -Wall -Wno-multichar ;
	SubDirC++Flags $(defines) -Wall -Wno-multichar -fno-rtti ;
}

KernelStaticLibrary boot_loader :
	main.cpp
	vfs.cpp
	RootFileSystem.cpp
	partitions.cpp
	heap.cpp
	stdio.cpp
	elf.cpp
	menu.cpp
	loader.cpp
	kernel_args.cpp
	load_driver_settings.cpp

	# libroot
	driver_settings.c

	# utils
	list.c
	kernel_cpp.cpp

	: -fno-pic
	;

# The partition support is built in an extra static library
# so that only the ones that are used will be included.

KernelStaticLibrary boot_partitions :
	amiga_rdb.cpp
	apple.cpp
	intel.cpp
	PartitionMap.cpp
	PartitionMapParser.cpp
	: -fno-pic
	;

# Tell Jam where to find the utility sources
SEARCH on [ FGristFiles kernel_cpp.cpp list.c ]
    = [ FDirName $(OBOS_TOP) src kernel core util ] ;

SEARCH on [ FGristFiles driver_settings.c ]
    = [ FDirName $(OBOS_TOP) src kernel libroot os ] ;

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

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

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

SEARCH on [ FGristFiles stage2_crt0.S ]
    = [ FDirName $(OBOS_TOP) src kernel boot arch $(OBOS_ARCH) ] ;


SubInclude OBOS_TOP src kernel boot loader file_systems ;
