diff options
-rw-r--r-- | apps/lang/lang.make | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/apps/lang/lang.make b/apps/lang/lang.make index 6465b426b7..cee2456b5d 100644 --- a/apps/lang/lang.make +++ b/apps/lang/lang.make | |||
@@ -31,11 +31,19 @@ $(BUILDDIR)/lang/max_language_size.h: $(LANGOBJ) $(BUILDDIR)/apps/lang/voicestri | |||
31 | $(BUILDDIR)/lang/lang_core.o: $(BUILDDIR)/lang/lang.h $(BUILDDIR)/lang/lang_core.c | 31 | $(BUILDDIR)/lang/lang_core.o: $(BUILDDIR)/lang/lang.h $(BUILDDIR)/lang/lang_core.c |
32 | $(call PRINTS,CC lang_core.c)$(CC) $(CFLAGS) -c $(BUILDDIR)/lang/lang_core.c -o $@ | 32 | $(call PRINTS,CC lang_core.c)$(CC) $(CFLAGS) -c $(BUILDDIR)/lang/lang_core.c -o $@ |
33 | 33 | ||
34 | $(BUILDDIR)/lang/lang.h $(BUILDDIR)/lang/lang_core.c: $(APPSDIR)/lang/$(LANGUAGE).lang $(BUILDDIR)/apps/features | 34 | # genlang creates *both* lang.c and lang.h but in Make there is no wat to express this rule |
35 | # (multiple target rules DO NOT express that, they are a simple shortcut for multiple rules) | ||
36 | # instead we pretend that genlang create lang_core.c and that lang.c depends from lang.h | ||
37 | # it will work fine as long as one never manually removes lang.c and not lang.h, and it will avoid | ||
38 | # race conditions such as running genlang twice or worse in parallel with other things! | ||
39 | $(BUILDDIR)/lang/lang.h: $(APPSDIR)/lang/$(LANGUAGE).lang $(BUILDDIR)/apps/features | ||
35 | $(call PRINTS,GEN lang.h) | 40 | $(call PRINTS,GEN lang.h) |
36 | $(SILENT)for f in `cat $(BUILDDIR)/apps/features`; do feat="$$feat:$$f" ; done; \ | 41 | $(SILENT)for f in `cat $(BUILDDIR)/apps/features`; do feat="$$feat:$$f" ; done; \ |
37 | perl -s $(TOOLSDIR)/genlang -p=$(BUILDDIR)/lang -t=$(MODELNAME)$$feat $< | 42 | perl -s $(TOOLSDIR)/genlang -p=$(BUILDDIR)/lang -t=$(MODELNAME)$$feat $< |
43 | $(BUILDDIR)/lang/lang_core.c: $(BUILDDIR)/lang/lang.h | ||
38 | 44 | ||
45 | # NOTE: for some weird reasons in GNU make, multi targets rules WITH patterns actually express | ||
46 | # the fact that the two files are created as the result of one invocation of the rule | ||
39 | $(BUILDDIR)/%.lng $(BUILDDIR)/%.vstrings: $(ROOTDIR)/%.lang $(BUILDDIR)/apps/genlang-features | 47 | $(BUILDDIR)/%.lng $(BUILDDIR)/%.vstrings: $(ROOTDIR)/%.lang $(BUILDDIR)/apps/genlang-features |
40 | $(call PRINTS,GENLANG $(subst $(ROOTDIR)/,,$<)) | 48 | $(call PRINTS,GENLANG $(subst $(ROOTDIR)/,,$<)) |
41 | $(SILENT)mkdir -p $(dir $@) | 49 | $(SILENT)mkdir -p $(dir $@) |