diff --git a/build/jam/LocaleRules b/build/jam/LocaleRules index e2d5cef3df..8dde3bab3d 100644 --- a/build/jam/LocaleRules +++ b/build/jam/LocaleRules @@ -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) collectcatkeys ; - LocalClean clean : $(target).pre ; - ExtractCatalogEntries1 $(target) : 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) : collectcatkeys $(sources) ; + } else { + ExtractCatalogEntries1 $(target) : 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