Browse Source

Add support for .xrl and .yrl files

Leex and Yecc files for generating lexers and parsers.
Loïc Hoguin 12 years ago
parent
commit
90cba7b8c5
2 changed files with 19 additions and 4 deletions
  1. 2 0
      README.md
  2. 17 4
      erlang.mk

+ 2 - 0
README.md

@@ -55,6 +55,8 @@ The following files will be automatically compiled:
 | `src/$(PROJECT).app.src` | OTP application resource file |
 | `src/*.erl`              | Erlang source files           |
 | `src/*.core`             | Core Erlang source files      |
+| `src/*.xrl`              | Leex source files             |
+| `src/*.yrl`              | Yecc source files             |
 | `templates/*.dtl`        | ErlyDTL template files        |
 
 Only the `.app.src` file and at least one `.erl` file are required.

+ 17 - 4
erlang.mk

@@ -19,9 +19,12 @@ V ?= 0
 appsrc_verbose_0 = @echo " APP   " $(PROJECT).app.src;
 appsrc_verbose = $(appsrc_verbose_$(V))
 
-erlc_verbose_0 = @echo " ERLC  " $(filter-out %.dtl,$(?F));
+erlc_verbose_0 = @echo " ERLC  " $(filter %.erl %.core,$(?F));
 erlc_verbose = $(erlc_verbose_$(V))
 
+xyrl_verbose_0 = @echo " XYRL  " $(filter %.xrl %.yrl,$(?F));
+xyrl_verbose = $(xyrl_verbose_$(V))
+
 dtl_verbose_0 = @echo " DTL   " $(filter %.dtl,$(?F));
 dtl_verbose = $(dtl_verbose_$(V))
 
@@ -66,6 +69,12 @@ define compile_erl
 		-I include/ $(COMPILE_FIRST_PATHS) $(1)
 endef
 
+define compile_xyrl
+	$(xyrl_verbose) erlc -v -o ebin/ $(1)
+	$(xyrl_verbose) erlc $(ERLC_OPTS) -o ebin/ ebin/*.erl
+	@rm ebin/*.erl
+endef
+
 define compile_dtl
 	$(dtl_verbose) erl -noshell -pa ebin/ deps/erlydtl/ebin/ -eval ' \
 		Compile = fun(F) -> \
@@ -77,10 +86,14 @@ define compile_dtl
 		init:stop()'
 endef
 
-ebin/$(PROJECT).app: src/*.erl $(wildcard src/*.core) $(wildcard templates/*.dtl)
+ebin/$(PROJECT).app: src/*.erl $(wildcard src/*.core) \
+		$(wildcard src/*.xrl) $(wildcard src/*.yrl) \
+		$(wildcard templates/*.dtl)
 	@mkdir -p ebin/
-	$(if $(strip $(filter-out %.dtl,$?)), \
-		$(call compile_erl,$(filter-out %.dtl,$?)))
+	$(if $(strip $(filter %.erl %.core,$?)), \
+		$(call compile_erl,$(filter %.erl %.core,$?)))
+	$(if $(strip $(filter %.xrl %.yrl,$?)), \
+		$(call compile_xyrl,$(filter %.xrl %.yrl,$?)))
 	$(if $(strip $(filter %.dtl,$?)), \
 		$(call compile_dtl,$(filter %.dtl,$?)))