LocaleRules: Add a second version of the catalog extraction actions.

Clang behaves slightly differently than GCC and allows us to steamroll
some errors we don't care about that GCC does not.
This commit is contained in:
Augustin Cavalier 2018-08-21 20:52:41 -04:00
parent e4fac18200
commit d37ae86568

View File

@ -66,8 +66,13 @@ rule ExtractCatalogEntries target : sources : signature : regexp
local subdir = [ on $(signature) return $(HAIKU_CATALOGS_SUBDIR) ] ;
MakeLocate $(target) : [ FDirName $(HAIKU_CATALOGS_OBJECT_DIR) $(subdir) ] ;
Depends $(target) : $(sources) <build>collectcatkeys ;
LocalClean clean : $(target).pre ;
ExtractCatalogEntries1 $(target) : <build>collectcatkeys $(sources) ;
if $(HAIKU_CC_IS_CLANG_$(TARGET_PACKAGING_ARCH)) = 1 {
# Clang emits preprocessed source even if some included headers were not
# found, so we can treat a return code of 1 from it as not an error.
ExtractCatalogEntries2 $(target) : <build>collectcatkeys $(sources) ;
} else {
ExtractCatalogEntries1 $(target) : <build>collectcatkeys $(sources) ;
}
}
actions ExtractCatalogEntries1
@ -79,6 +84,16 @@ actions ExtractCatalogEntries1
$(RM) "$(1)".pre
}
actions ExtractCatalogEntries2
{
$(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR)
$(CC) -E $(CCDEFS) -DB_COLLECTING_CATKEYS $(HDRS) "$(2[2-])" > "$(1)".pre \
|| true
$(2[1]) $(HAIKU_CATALOG_REGEXP) -s $(HAIKU_CATALOG_SIGNATURE) \
-w -o "$(1)" "$(1)".pre
$(RM) "$(1)".pre
}
rule LinkApplicationCatalog target : sources : signature : language
{
# Link catalog entries from given catkey file into output compiled catalog