183 lines
6.4 KiB
Makefile
183 lines
6.4 KiB
Makefile
# @configure_input@
|
|
#
|
|
# TAME Makefile
|
|
#
|
|
# Copyright (C) 2018 R-T Specialty, LLC.
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
# This fragment exists as a kluge to provide support for running a command
|
|
# after all targets have been run (in this case, dslc).
|
|
#
|
|
# A list of everything to be compiled is output into .cqueue, which is then
|
|
# picked up by dslc; this avoids the overhead of starting the JVM,
|
|
# recompiling XSL stylesheets, etc, which is quite substantial.
|
|
#
|
|
# !!! Unfortunately, this does not yet support parallel job execution.
|
|
|
|
path_rates := $(path_suppliers)/rates
|
|
path_map := map
|
|
path_c1map := $(path_map)/c1
|
|
path_dsl := rater
|
|
path_ui := ui
|
|
path_tests := test
|
|
path_suppliers := suppliers
|
|
path_lv := lovullo
|
|
path_srv := srv
|
|
path_lvroot := lvroot
|
|
path_intralov_root := "intralov-root/@program@"
|
|
|
|
.PHONY: FORCE prepare program-data-copy lvroot program-ui-immediate test
|
|
|
|
JAVA_HEAP_SIZE ?= 5120M
|
|
JAVA_STACK_SIZE ?= 5M
|
|
|
|
.DELETE_ON_ERROR:
|
|
|
|
# less verbose output; all to runlog
|
|
define saneout
|
|
time -f 'total time: %E' awk ' \
|
|
BEGIN { e=0; w=0; } \
|
|
{ printf "[%d] ", systime() >> ".runlog"; print >> ".runlog"; } \
|
|
/^~~~~\[begin /,/^~~~~\[end / { next } \
|
|
/^rm / { next } \
|
|
/^Exception|^\t+at / { \
|
|
if ( /^E/ ) { \
|
|
print; \
|
|
print "Stack trace written to .runlog"; \
|
|
} \
|
|
next; \
|
|
} \
|
|
/[Ww]arning:|[Nn]otice:/ { printf "\033[0;33m"; w++; out=1; } \
|
|
/[Ff]atal:/ { printf "\033[0;31m"; out=1; } \
|
|
/!|[Ee]rror:/ { printf "\033[0;31m"; e++; out=1; } \
|
|
/internal:/ { printf "\033[0;35m"; out=1; } \
|
|
/internal error:/ { printf "\033[1m"; out=1; } \
|
|
/^[^[]/ || out { print; printf "\033[0;0m"; out=0; } \
|
|
END { printf "%d error(s); %d warning(s).\n", e, w; } \
|
|
'
|
|
endef
|
|
|
|
define _go
|
|
touch .cqueue \
|
|
&& ( test -s .cqueue || echo "Nothing to be done for \`$@'." ) \
|
|
&& echo "$(JAVA_HEAP_SIZE) $(JAVA_STACK_SIZE)" \ \
|
|
&& CLASSPATH="$(RATER_CLASSPATH):rater/src/dslc.jar" \
|
|
$(JAVA) -Xmx$(JAVA_HEAP_SIZE) -Xss$(JAVA_STACK_SIZE) \
|
|
com.lovullo.dslc.DslCompiler < .cqueue 2>&1 \
|
|
| $(saneout); \
|
|
exit $${PIPESTATUS[0]}; \
|
|
@>.cqueue
|
|
endef
|
|
|
|
SHELL = /bin/bash -O extglob
|
|
|
|
all: program-data-copy
|
|
|
|
program-ui-immediate:
|
|
@>.cqueue
|
|
@$(MAKE) --no-print-directory -f Makefile.2 program-ui-immediate
|
|
@$(MAKE) program-data-copy
|
|
@$(_go)
|
|
|
|
program-data-copy:
|
|
@>.cqueue
|
|
@$(MAKE) --no-print-directory -f Makefile.2 standalones program-ui c1map
|
|
@$(_go)
|
|
mkdir -p "$(path_lv)/src/node/program/rater/programs/@program@"
|
|
mkdir -p "$(path_lv)/src/node/program/classify"
|
|
mkdir -p "$(path_lv)/src/node/program/ui/custom"
|
|
mkdir -p "$(path_lv)/src/_gen/scripts/program/@program@"
|
|
mkdir -p "$(path_lv)/src/_gen/views/scripts/quote/@program@"
|
|
mkdir -p "$(path_lv)/src/lib/c1/interfaces/c1/contract/@program@"
|
|
mkdir -p "$(path_lv)/misc/rater/programs"
|
|
mkdir -p "$(path_lv)/src/www/scripts/program"
|
|
cp -v .version.xml \
|
|
"$(path_lv)/misc/rater/programs/.version-@program@.xml"
|
|
cp -v "$(path_ui)/custom.js" \
|
|
"$(path_lv)/src/www/scripts/program/@program@.js"
|
|
cp -v "$(path_ui)/"!(custom|package|include).js \
|
|
"$(path_lv)/src/node/program/ui/custom/"
|
|
cp -v "$(path_srv)/rater.js" \
|
|
"$(path_lv)/src/node/program/rater/programs/@program@.js"
|
|
cp -v "$(path_ui)/package.js" \
|
|
"$(path_lv)/src/node/program/classify/@program@.js"
|
|
cp -v "$(path_ui)/"{Program,include,package}.js \
|
|
"$(path_lv)/src/_gen/scripts/program/@program@/"
|
|
cp -vr "$(path_ui)/html/"* \
|
|
"$(path_lv)/src/_gen/views/scripts/quote/@program@/"
|
|
cp -v "$(path_suppliers)/"*.js \
|
|
"$(path_lv)/src/node/program/rater/programs/@program@"
|
|
test ! -d "$(path_c1map)" || cp -v "$(path_c1map)/"*.php \
|
|
"$(path_lv)/src/lib/c1/interfaces/c1/contract/@program@/"
|
|
ant -f "$(path_lv)/build.xml" js-mod-order
|
|
|
|
# TODO: merge this and the above
|
|
lvroot: prepare
|
|
mkdir -p "$(path_lvroot)/src/node/program/rater/programs/@program@"
|
|
mkdir -p "$(path_lvroot)/src/node/program/classify"
|
|
mkdir -p "$(path_lvroot)/src/node/program/ui/custom"
|
|
mkdir -p "$(path_lvroot)/src/_gen/scripts/program/@program@"
|
|
mkdir -p "$(path_lvroot)/src/_gen/views/scripts/quote/@program@"
|
|
mkdir -p "$(path_lvroot)/src/www/scripts/program"
|
|
mkdir -p "$(path_lvroot)/src/lib/c1/interfaces/c1/contract/@program@"
|
|
cp -v "$(path_srv)/rater.js" \
|
|
"$(path_lvroot)/src/node/program/rater/programs/@program@.js"
|
|
cp -v "$(path_suppliers)/"*.js \
|
|
"$(path_lvroot)/src/node/program/rater/programs/@program@"
|
|
cp -v "$(path_ui)/package.js" \
|
|
"$(path_lvroot)/src/node/program/classify/@program@.js"
|
|
cp -v "$(path_ui)/"{Program,include,package}.js \
|
|
"$(path_lvroot)/src/_gen/scripts/program/@program@/"
|
|
cp -vr "$(path_ui)/html/"* \
|
|
"$(path_lvroot)/src/_gen/views/scripts/quote/@program@/"
|
|
cp -v "$(path_ui)/custom.js" \
|
|
"$(path_lvroot)/src/www/scripts/program/@program@.js"
|
|
cp -v "$(path_ui)/"*Ui.js \
|
|
"$(path_lvroot)/src/node/program/ui/custom/"
|
|
test ! -d "$(path_c1map)" || cp -v "$(path_c1map)/"*.php \
|
|
"$(path_lvroot)/src/lib/c1/interfaces/c1/contract/@program@/"
|
|
|
|
intralov-root: summary-html
|
|
mkdir -p "$(path_intralov_root)/"{rater/scripts,suppliers}
|
|
ln -fL $(path_dsl)/summary.css "$(path_intralov_root)/rater"
|
|
ln -fL $(path_dsl)/scripts/*.js "$(path_intralov_root)/rater/scripts/"
|
|
ln -fL $(path_suppliers)/*.{html,js} "$(path_intralov_root)/suppliers"
|
|
|
|
|
|
# because of the crazy wildcard target below, we want to ignore
|
|
# some Automake-generated stuff
|
|
%.am:
|
|
%.m4:
|
|
%.ac:
|
|
|
|
%: prepare
|
|
@if [[ "$@" != [Mm]akefile ]]; then \
|
|
$(MAKE) --no-print-directory -f Makefile.2 $@; \
|
|
$(_go); \
|
|
fi
|
|
|
|
clean:
|
|
$(MAKE) --no-print-directory -f Makefile.2 clean
|
|
|
|
prepare: FORCE
|
|
@>.cqueue
|
|
|
|
test: check
|
|
check-am: standalones ui/package.js
|
|
@$(path_dsl)/build-aux/progtest-runner $(path_suppliers) $(path_tests)
|
|
@$(path_dsl)/build-aux/progtest-runner ui/package.xml $(path_tests)/ui
|
|
|
|
FORCE: ;
|