SubDir HAIKU_TOP src data mime_db ;rule BuildMimeDB superTypes{local mimeDB = <mimedb>mime_db ;MakeLocateCommonPlatform $(mimeDB) ;# make the supertypeslocal compiledSuperTypes ;local superType ;for superType in $(superTypes) {local compiledSuperType = $(superType:S=.rsrc:G=mimedb-super) ;ResComp $(compiledSuperType) : $(superType) ;compiledSuperTypes += $(compiledSuperType) ;}Depends $(mimeDB) : <build>resattr $(compiledSuperTypes) ;BuildMimeDBSuperTypes $(mimeDB) : <build>resattr $(compiledSuperTypes) ;# make the subtypes for each supertypefor superType in $(superTypes) {local subTypes = [ on $(superType) return $(HAIKU_MIMEDB_SUBTYPES) ] ;local compiledSubTypes ;for subType in $(subTypes) {local compiledSubType = $(subType:BS).rsrc ;# Note: The subtype name may contain '.'s. Hence we cannot use# ":S=.rsrc".compiledSubType = $(compiledSubType:G=mimedb-sub-$(superType:B)) ;MakeLocate $(compiledSubType): [ FDirName $(COMMON_PLATFORM_LOCATE_TARGET) $(superType:B) ] ;# Need to locate explicitly to avoid clashes between equally# named subtypes of different supertypes.ResComp $(compiledSubType) : $(subType) ;compiledSubTypes += $(compiledSubType) ;}if $(compiledSubTypes) {Depends $(mimeDB) : $(superType) $(compiledSubTypes) ;BuildMimeDBSubTypes $(mimeDB): <build>resattr $(superType) $(compiledSubTypes) ;}}}actions BuildMimeDBSuperTypes{export $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR)# remove and re-create the directorybaseDirectory="$(1)"$(RM) -rf "$baseDirectory"mkdir "$baseDirectory"resattr="$(2[1])"for sourceFile in "$(2[2-])" ; dotype=`basename "$sourceFile" .rsrc`targetDirectory="$baseDirectory/$type"mkdir "$targetDirectory""$resattr" -O -o "$targetDirectory" "$sourceFile"done}actions BuildMimeDBSubTypes{export $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR)resattr="$(2[1])"superType=`basename "$(2[2])" .super`superTypeDirectory="$(1)/$superType"for sourceFile in "$(2[3-])" ; dotype=`basename "$sourceFile" .rsrc`targetFile="$superTypeDirectory/$type""$resattr" -O -o "$targetFile" "$sourceFile"done}# glob the supertype source fileslocal superTypeFiles = [ Glob $(SUBDIR) : *.super ] ;superTypeFiles = $(superTypeFiles:BSG=mimedb) ;SEARCH on $(superTypeFiles) = $(SUBDIR) ;# for each supertype glob the subtype source fileslocal superTypeFile ;for superTypeFile in $(superTypeFiles) {local superTypeDirectory = [ FDirName $(SUBDIR) $(superTypeFile:B) ] ;local subTypeFiles = [ Glob $(superTypeDirectory) : * ] ;local subTypes ;local subType ;for subType in $(subTypeFiles:BS) {if $(subType) != "." && $(subType) != ".." {subType = $(subType:G=mimedb-sub-$(superTypeFile:B)) ;SEARCH on $(subType) = $(superTypeDirectory) ;subTypes += $(subType) ;}}HAIKU_MIMEDB_SUBTYPES on $(superTypeFile) = $(subTypes) ;}BuildMimeDB $(superTypeFiles) ;