1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
# --*- Makefile -*--
#------------------------------------------------------------------------------
#$Author: saulius $
#$Date: 2017-11-12 07:05:31 -0500 (Sun, 12 Nov 2017) $
#$Revision: 88 $
#$URL: svn://saulius-grazulis.lt/libraries/trunk/java/SOptions/Makefile $
#------------------------------------------------------------------------------
MAKECONF_FILES = ${filter-out %~, ${wildcard Makeconf*}}
ifneq ("${MAKECONF_FILES}","")
include ${MAKECONF_FILES}
endif
#------------------------------------------------------------------------------
SRC_DIR = .
GEN_DIR = generated
SCRIPT_DIR = scripts
CLASS_DIR = classes
JSOURCES = $(wildcard ${SRC_DIR}/*.java)
JFILES = ${JSOURCES} ${GJAVA}
CFILES = ${JFILES:${SRC_DIR}/%.java=${CLASS_DIR}/%.class}
CLASSPATH := $(shell find -name \*.jar | tr "\n" ":")${SRC_DIR}:${CLASS_DIR}:${CLASSPATH}
export CLASSPATH
JAVAC = javac
.PHONY: all clean distclean cleanAll
.PRECIOUS: ${GEN_DIR}/%.java
all: ${CFILES} ${JFILES}
#------------------------------------------------------------------------------
ifneq ("${MAKELOCAL_FILES}","")
include ${MAKELOCAL_FILES}
endif
${CLASS_DIR}/%.class: ${SRC_DIR}/%.java
${JAVAC} ${JFLAGS} $< -d ${CLASS_DIR}
#------------------------------------------------------------------------------
JARFILE = soptions.jar
.PHONY: jar display
jar: ${JARFILE}
display:
echo ${JARFILE}
%.jar: ${CFILES}
jar cvf $@ $(patsubst ${CLASS_DIR}/%.class,${CLASS_DIR}/ %.class,$(addprefix -C ,$^)) \
-C ${CLASS_DIR} SOptions\$$1.class
#------------------------------------------------------------------------------
# Tests
.PHONY: test tests out output outputs
TEST_DIR = tests/cases
TST_OUT_DIR = tests/outputs
TST_DIF_DIR = tests/outputs
TEST_FILES = $(wildcard ${TEST_DIR}/*.sh)
TEST_OUTPUTS = ${TEST_FILES:${TEST_DIR}/%.sh=${TST_OUT_DIR}/%.out}
TEST_DIFFS = ${TEST_FILES:${TEST_DIR}/%.sh=${TST_DIF_DIR}/%.diff}
test tests: ${TEST_DIFFS}
out output outputs: ${TEST_OUTPUTS}
${TST_OUT_DIR}/%.out: ${TEST_DIR}/%.sh
@test -f $@ || ./$< 2>&1 | tee $@
@test -f $@ && touch $@
${TST_DIF_DIR}/%.diff: ${TEST_DIR}/%.sh ${TST_OUT_DIR}/%.out ${CFILES}
@printf "%-30s: " $(notdir $<)
@./$< 2>&1 | diff $(word 2,$^) - > $@; \
if [ $$? = 0 ]; then echo OK; \
else echo FAILED:; cat $@; fi
#------------------------------------------------------------------------------
.PHONY: fail listdiff
fail listdiff: # test
@-( test -d ${TST_DIF_DIR} && \
ls -l ${TST_DIF_DIR}/*.diff | awk '{if( $$5 > 0 ) print}' ) || \
true
#------------------------------------------------------------------------------
clean:
rm -f ${TEST_DIFFS}
distclean cleanAll: clean
rm -f ${CFILES}
rm -f ${GJAVA}
rm -f ${JARFILE}
|