⛏️ index : haiku.git

SubDir HAIKU_TOP src data keymaps ;

NotFile keymap_files ;
Depends files : keymap_files ;

rule MkKeymapComp
{
	local binary = $(1) ;
	local source = $(2) ;

	SEARCH on $(source) = $(SEARCH_SOURCE) ;
	MakeLocateArch $(binary) ;

	LocalDepends keymap_files : $(binary) ;
	Depends $(binary) : $(source) <build>keymap ;
	MkKeymapComp1 $(binary) : <build>keymap $(source) ;
	LocalClean clean : $(binary) ;
}

actions MkKeymapComp1
{
	$(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) \
	$(2[1]) -o "$(1)" -c "$(2[2-])"
}


rule AddKeymapAlias alias : keymap
{
	alias = $(alias:G=keymap) ;
	HAIKU_KEYMAP_FILE on $(alias) = $(keymap:G=keymap) ;
	HAIKU_KEYMAP_ALIASES += $(alias) ;
}


rule GenerateKeymapLocalizationHeader keymaps
{
	local keymapNames = $(HAIKU_KEYMAP_FILES:BSM) $(HAIKU_KEYMAP_ALIASES:BSM) ;
	local header = <keymap-locale>KeymapNames.h ;
	MakeLocateCommonPlatform $(header) ;
	Depends $(header) : $(HAIKU_KEYMAP_FILES) ;
	HAIKU_KEYMAP_NAMES on $(header) = $(keymapNames) ;
	GenerateKeymapLocalizationHeader1 $(header) ;
	LocalClean clean : $(header) ;
}


actions GenerateKeymapLocalizationHeader1
{
	$(RM) $(1)
	echo "#undef B_TRANSLATION_CONTEXT" >> $(1)
	echo "#define B_TRANSLATION_CONTEXT \"KeymapNames\"" >> $(1)
	for name in "$(HAIKU_KEYMAP_NAMES)" ; do
		echo "B_TRANSLATE_MARK_VOID(\"$name\")" >> $(1)
	done
}


local keymapFiles = [ GLOB $(SUBDIR) : *.keymap ] ;

# generate the binary file for the keymap files
local keymapFile ;
for keymapFile in [ FGristFiles $(keymapFiles:D=) ] {
	local binary = $(keymapFile:BG=keymap) ;
	MkKeymapComp $(binary) : $(keymapFile) ;
	HAIKU_KEYMAP_FILES += $(binary) ;
}

AddKeymapAlias Finnish : Swedish ;
AddKeymapAlias Croatian : Slovene ;
AddKeymapAlias Brazilian : US-International ;

GenerateKeymapLocalizationHeader ;