⛏️ index : haiku.git

SubDir HAIKU_TOP src system boot libs ;

local zlibSourceDirectory = [ BuildFeatureAttribute zlib : sources : path ] ;
UseHeaders $(zlibSourceDirectory) ;
UseHeaders $(zlibSourceDirectory) : true ;

local zlibSources =
	adler32.c
	crc32.c
	inffast.c
	inflate.c
	inftrees.c
	uncompr.c
	zutil.c
	;

local zstdSourceDirectory = [ BuildFeatureAttribute zstd : sources : path ] ;
UseHeaders [ FDirName $(zstdSourceDirectory) lib ] ;
UseHeaders [ FDirName $(zstdSourceDirectory) lib common ] ;

local zstdCommonSources =
	error_private.c
	entropy_common.c fse_decompress.c zstd_common.c
	xxhash.c
	;
local zstdDecSources =
	huf_decompress.c zstd_ddict.c zstd_decompress.c zstd_decompress_block.c
	;

local libFDTSourceDirectory = [ FDirName $(HAIKU_TOP) src libs libfdt ] ;

local libFDTSources =
	fdt.c
	fdt_ro.c
	fdt_rw.c
	fdt_strerror.c
	fdt_sw.c
	fdt_wip.c
	fdt_addresses.c
	fdt_check.c
	fdt_empty_tree.c
	fdt_overlay.c
	;

SubDirCcFlags -Wno-error=missing-prototypes -Wno-error=sign-compare -Wno-error=missing-braces ;

local platform ;
for platform in [ MultiBootSubDirSetup ] {
	on $(platform) {
		# zlib
		UsePrivateHeaders [ FDirName kernel boot platform $(TARGET_BOOT_PLATFORM) ] ;

		LOCATE on [ FGristFiles $(zlibSources) ] = $(zlibSourceDirectory) ;

		Depends [ FGristFiles $(zlibSources) ]
			: [ BuildFeatureAttribute zlib : sources ] ;

		BootStaticLibrary [ MultiBootGristFiles boot_zlib ] :
			$(zlibSources)
			;

		# zstd
		LOCATE on [ FGristFiles $(zstdCommonSources) ] =
			[ FDirName $(zstdSourceDirectory) lib common ] ;
		LOCATE on [ FGristFiles $(zstdDecSources) ] =
			[ FDirName $(zstdSourceDirectory) lib decompress ] ;

		# tune build for smaller size
		DEFINES += HUF_FORCE_DECOMPRESS_X1 ZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT ;
		# prevent weak symbols
		DEFINES += ZSTD_HAVE_WEAK_SYMBOLS=0 ;

		BootStaticLibrary [ MultiBootGristFiles boot_zstd ] :
			$(zstdCommonSources) $(zstdDecSources)
			;
		Depends [ FGristFiles $(zstdCommonSources) $(zstdDecSources) ]
			: [ BuildFeatureAttribute zstd : sources ] ;

		# fdt
		UseLibraryHeaders [ FDirName libfdt ] ;

		BootStaticLibrary [ MultiBootGristFiles boot_fdt ] :
			$(libFDTSources) ;

		LOCATE on [ FGristFiles $(libFDTSources) ] = $(libFDTSourceDirectory) ;
	}
}