Anonymous avatar Anonymous committed 4193c7e

Adding proper generation of the ebin/XXX.app file.

Comments (0)

Files changed (5)

 include dep.inc
 
-all:
+all: app_init
 	erl -pa $(GETTEXT_EBIN) -make
 
+app_init:
+	$(MAKE) -f Makefile.init
+
 # Run this the very first time after creating the project
 init:
 	-mkdir ebin
 	-mkdir templates
 	-chmod +x ./start.sh
 	-(for i in \`ls dep/*\`; do cd \${i}; make; done)
-	cp src/{{appid}}.app.src ebin/{{appid}}.app 
+	$(MAKE) -f Makefile.init
 	$(MAKE) all
 
 clean:
+include vsn.mk
+
+MODULES_SRC := $(wildcard src/*.erl)
+MODULES     := $(MODULES_SRC:src/%.erl=%.erl)
+APP_SOURCES := $(wildcard src/*.app.src)
+APP_OBJECTS := $(APP_SOURCES:src/%.app.src=ebin/%.app)
+
+APPSCRIPT = '$$vsn=shift; $$mods=""; while(@ARGV){ $$_=shift; s/^([A-Z].*)$$/\'\''$$1\'\''/; $$mods.=", " if $$mods; $$mods .= $$_; } while(<>) { s/%VSN%/$$vsn/; s/%MODULES%/$$mods/; print; }'
+
+init: $(APP_OBJECTS)
+
+ebin/%.app: src/%.app.src vsn.mk Makefile
+	echo $(MODULES) 
+	perl -e $(APPSCRIPT) "$({{appid}}_vsn)" $(MODULES) < $< > $@
+%%%
+%%% NB: DO CHANGES IN THE src/{{appid}}.app.src FILE!
+%%%
+%%%  (and not in the: ebin/{{appid}}.app file, which is generated...)
+%%%
 {application, {{appid}}, 
  [
   {description,  "{{appid}} - bla bla..."},
+  {vsn, "%VSN%"},
 
   % The Module and Args used to start this application.
   {mod, { {{appid}}_app, []} },
 
   % All modules used by the application.
   {modules,
-   [{{appid}}
-    ,{{appid}}_app
-    ,{{appid}}_sup
-    ,{{appid}}_deps
-    ,{{appid}}_common
-    ,{{appid}}_inets
-    ,{{appid}}_web_index
-    ,{{appid}}_web_login
-    ,{{appid}}_web_logout
-    ,{{appid}}_web_auth
-   ]},
+   [%MODULES%]},
 
   % configuration parameters similar to those in the config file specified on the command line
   {env, [{http_server, inets}  % yaws | inets | mochiweb
             ]}.
 {template, "Emakefile",            "Emakefile"}.
 {template, "Makefile",             "Makefile"}.
+{template, "Makefile.init",        "Makefile.init"}.
+{template, "vsn.mk",               "vsn.mk"}.
 {template, "nitro.readme",         "README"}.
 {template, "LICENSE",              "LICENSE"}.
 {template, "nitrodep.inc",         "dep.inc"}.
+{{appid}}_vsn=0.1
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.