summaryrefslogtreecommitdiff
path: root/solenv/gbuild
diff options
context:
space:
mode:
authorDavid Ostrovsky <David.Ostrovsky@gmx.de>2012-05-01 00:04:38 +0200
committerDavid Tardon <dtardon@redhat.com>2012-05-01 07:29:06 +0200
commit1bec43481eb6cbe58b22b8c2ce3688e858f5f92f (patch)
treec1414b8d47e34027de20c05f3f98ebd5099609b0 /solenv/gbuild
parentb9d0e597a7bc328ca99a1bf338a609cac23a4284 (diff)
build: cleaning up previously converted idlc module
Change-Id: Ic90495f677dc42c0430492548deaa9f9b10e4d44
Diffstat (limited to 'solenv/gbuild')
-rw-r--r--solenv/gbuild/Executable.mk2
-rw-r--r--solenv/gbuild/Library.mk2
-rw-r--r--solenv/gbuild/LinkTarget.mk49
-rw-r--r--solenv/gbuild/TargetLocations.mk5
4 files changed, 58 insertions, 0 deletions
diff --git a/solenv/gbuild/Executable.mk b/solenv/gbuild/Executable.mk
index 8d565b6ee0a6..2cb23fc90b6d 100644
--- a/solenv/gbuild/Executable.mk
+++ b/solenv/gbuild/Executable.mk
@@ -85,6 +85,8 @@ $(eval $(foreach method,\
add_objcxxobjects \
add_grammar \
add_grammars \
+ add_scanner \
+ add_scanners \
add_exception_objects \
add_noexception_objects \
add_generated_cobjects \
diff --git a/solenv/gbuild/Library.mk b/solenv/gbuild/Library.mk
index 4ba764e13858..2c74d6e70d2b 100644
--- a/solenv/gbuild/Library.mk
+++ b/solenv/gbuild/Library.mk
@@ -167,6 +167,8 @@ $(eval $(foreach method,\
use_library_objects \
add_grammar \
add_grammars \
+ add_scanner \
+ add_scanners \
add_cflags \
set_cflags \
add_cxxflags \
diff --git a/solenv/gbuild/LinkTarget.mk b/solenv/gbuild/LinkTarget.mk
index aa279bfb1c57..4b48f6784a26 100644
--- a/solenv/gbuild/LinkTarget.mk
+++ b/solenv/gbuild/LinkTarget.mk
@@ -28,6 +28,7 @@
#the following user-defined variables are supported:
# YACCFLAGS
+# LEXFLAGS
# CPPFLAGS
# CFLAGS
# CXXFLAGS
@@ -243,6 +244,34 @@ endef
gb_YACC := bison
+# LexTarget class
+
+gb_LexTarget_get_source = $(1)/$(2).l
+
+.PHONY : $(call gb_LexTarget_get_clean_target,%)
+$(call gb_LexTarget_get_clean_target,%) :
+ $(call gb_Output_announce,$*,$(false),LEX,3)
+ $(call gb_Helper_abbreviate_dirs,\
+ rm -f $(call gb_LexTarget_get_scanner_target,$*) $(call gb_LexTarget_get_target,$*))
+
+$(call gb_LexTarget_get_target,%) : $(call gb_LexTarget_get_source,$(SRCDIR),%)
+ $(call gb_LexTarget__command,$<,$*,$@,$(call gb_LexTarget_get_scanner_target,$*))
+
+# gb_LexTarget_LexTarget(scanner-file)
+define gb_LexTarget_LexTarget
+$(call gb_LexTarget_get_scanner_target,$(1)) :| $(call gb_LexTarget_get_target,$(1))
+
+endef
+
+# gb_LexTarget__command(scanner-file, stem-for-message, done-pseudo-target, source-target)
+define gb_LexTarget__command
+$(call gb_Output_announce,$(2),$(true),LEX,3)
+$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $(3)) && \
+ $(FLEX) $(T_LEXFLAGS) -o $(4) $(1) && touch $(3) )
+endef
+
+
# ObjCxxObject class
#
@@ -453,6 +482,10 @@ $(call gb_LinkTarget_get_target,$(1)) : YACCOBJECT :=
$(call gb_LinkTarget_get_clean_target,$(1)) \
$(call gb_LinkTarget_get_target,$(1)) : T_YACCFLAGS := $$(gb_LinkTarget_YYACFLAGS) $(YACCFLAGS)
$(call gb_LinkTarget_get_clean_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : LEXOBJECT :=
+$(call gb_LinkTarget_get_clean_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : T_LEXFLAGS := $$(gb_LinkTarget_LEXFLAGS) $(LEXFLAGS)
+$(call gb_LinkTarget_get_clean_target,$(1)) \
$(call gb_LinkTarget_get_target,$(1)) : OBJCOBJECTS :=
$(call gb_LinkTarget_get_clean_target,$(1)) \
$(call gb_LinkTarget_get_target,$(1)) : OBJCXXOBJECTS :=
@@ -873,6 +906,22 @@ define gb_LinkTarget_add_grammars
$(foreach grammar,$(2),$(call gb_LinkTarget_add_grammar,$(1),$(grammar),$(4)))
endef
+# Add a flex scanner to the build.
+# gb_LinkTarget_add_scanner(<component>,<scanner file>)
+define gb_LinkTarget_add_scanner
+$(call gb_LexTarget_LexTarget,$(2))
+$(call gb_LinkTarget_add_generated_exception_object,$(1),LexTarget/$(2),$(3))
+$(call gb_LinkTarget_get_clean_target,$(1)) : $(call gb_LexTarget_get_clean_target,$(2))
+
+endef
+
+# Add flex scanners to the build.
+# gb_LinkTarget_add_scanners(<component>,<scanner file> [<scanner file>*])
+define gb_LinkTarget_add_scanners
+$(foreach scanner,$(2),$(call gb_LinkTarget_add_scanner,$(1),$(scanner)))
+
+endef
+
define gb_LinkTarget_add_noexception_object
$(call gb_LinkTarget_add_cxxobject,$(1),$(2),$(gb_LinkTarget_NOEXCEPTIONFLAGS) $(call gb_LinkTarget__get_cxxflags,$(3)))
endef
diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk
index df694b74b780..70ec351e379b 100644
--- a/solenv/gbuild/TargetLocations.mk
+++ b/solenv/gbuild/TargetLocations.mk
@@ -141,6 +141,10 @@ gb_Configuration_get_target = $(WORKDIR)/Configuration/$(1).done
gb_YaccTarget_get_grammar_target = $(WORKDIR)/YaccTarget/$(1).cxx
gb_YaccTarget_get_header_target = $(WORKDIR)/YaccTarget/$(1).hxx
gb_YaccTarget_get_target = $(WORKDIR)/YaccTarget/$(1).done
+
+gb_LexTarget_get_scanner_target = $(WORKDIR)/LexTarget/$(1).cxx
+gb_LexTarget_get_target = $(WORKDIR)/LexTarget/$(1).done
+
gb_XcsTarget_get_target = $(WORKDIR)/XcsTarget/$(1)
gb_XcuDataTarget_get_target = $(WORKDIR)/XcuDataTarget/$(1)
gb_XcuLangpackTarget_get_target = $(WORKDIR)/XcuLangpackTarget/$(1)
@@ -194,6 +198,7 @@ $(eval $(call gb_Helper_make_clean_targets,\
UnoApiTarget \
WinResTarget \
YaccTarget \
+ LexTarget \
Zip \
XcsTarget \
XcuDataTarget \