| |
| |
| ifeq ($(NEOTONIC_ROOT),) |
| NEOTONIC_ROOT = .. |
| endif |
| |
| include $(NEOTONIC_ROOT)/rules.mk |
| |
| CS_LIB = $(LIB_DIR)libneo_cs.a |
| CS_SRC = csparse.c |
| CS_OBJ = $(CS_SRC:%.c=%.o) |
| |
| CSTEST_EXE = cstest |
| CSTEST_SRC = cstest.c |
| CSTEST_OBJ = $(CSTEST_SRC:%.c=%.o) |
| |
| CSR_EXE = cs |
| CSR_SRC = cs.c |
| CSR_OBJ = $(CSR_SRC:%.c=%.o) |
| |
| CSDUMP_EXE = csdump |
| CSDUMP_SRC = csdump.c |
| CSDUMP_OBJ = $(CSDUMP_SRC:%.c=%.o) |
| |
| LIBS += -lneo_cs -lneo_utl # -lefence |
| |
| TARGETS = $(CS_LIB) $(CSTEST_EXE) $(CSR_EXE) test |
| |
| CS_TESTS = test.cs test2.cs test3.cs test4.cs test5.cs test6.cs test7.cs \ |
| test8.cs test9.cs test10.cs test11.cs test12.cs test13.cs \ |
| test14.cs test15.cs test16.cs test17.cs test18.cs test19.cs \ |
| test_var.cs test_paren.cs test_chuck.cs test_trak1.cs test_iter.cs \ |
| test_each_array.cs test_name.cs test_with.cs test_numbers.cs \ |
| test_splice.cs test_joo.cs test_first_last.cs test_abs_max_min.cs \ |
| test_comma.cs test_macro_set.cs test_func.cs test_escape.cs \ |
| test_uvar.cs test_crc.cs |
| |
| |
| all: $(TARGETS) |
| |
| $(CS_LIB): $(CS_OBJ) |
| $(AR) $@ $(CS_OBJ) |
| $(RANLIB) $@ |
| |
| $(CSTEST_EXE): $(CSTEST_OBJ) $(CS_LIB) |
| $(LD) $@ $(CSTEST_OBJ) $(LDFLAGS) $(LIBS) # -lefence |
| |
| $(CSR_EXE): $(CSR_OBJ) $(CS_LIB) |
| $(LD) $@ $(CSR_OBJ) $(LDFLAGS) $(LIBS) # -lefence |
| |
| $(CSDUMP_EXE): $(CSDUMP_OBJ) $(CS_LIB) |
| $(LD) $@ $(CSDUMP_OBJ) $(LDFLAGS) $(LIBS) |
| |
| ## BE VERY CAREFUL WHEN REGENERATING THESE |
| gold: $(CSTEST_EXE) |
| @for test in $(CS_TESTS); do \ |
| rm -f $$test.gold; \ |
| ./cstest test.hdf $$test > $$test.gold; \ |
| done; \ |
| ./cstest test_tag.hdf test_tag.cs > test_tag.cs.gold |
| @echo "Generated Gold Files" |
| |
| test: $(CSTEST_EXE) $(CS_TESTS) |
| @echo "Running cs regression tests" |
| @failed=0; \ |
| for test in $(CS_TESTS); do \ |
| rm -f $$test.out; \ |
| ./cstest test.hdf $$test > $$test.out 2>&1; \ |
| diff $$test.out $$test.gold 2>&1 > /dev/null; \ |
| return_code=$$?; \ |
| if [ $$return_code -ne 0 ]; then \ |
| diff $$test.gold $$test.out > $$test.err; \ |
| echo "Failed Regression Test: $$test"; \ |
| echo " See $$test.out and $$test.err"; \ |
| failed=1; \ |
| fi; \ |
| done; \ |
| rm -f test_tag.cs.out; \ |
| ./cstest test_tag.hdf test_tag.cs> test_tag.cs.out 2>&1; \ |
| diff test_tag.cs.out test_tag.cs.gold; \ |
| return_code=$$?; \ |
| if [ $$return_code -ne 0 ]; then \ |
| echo "Failed Regression Test: test_tag.cs"; \ |
| failed=1; \ |
| fi; \ |
| if [ $$failed -eq 1 ]; then \ |
| exit 1; \ |
| fi; |
| @touch test |
| @echo "Passed" |
| |
| install: all |
| $(NEOTONIC_ROOT)/mkinstalldirs $(DESTDIR)$(cs_includedir)/cs |
| $(INSTALL) -m 644 cs.h $(DESTDIR)$(cs_includedir)/cs |
| $(INSTALL) -m 644 $(CS_LIB) $(DESTDIR)$(libdir) |
| $(INSTALL) $(CSTEST_EXE) $(DESTDIR)$(bindir) |
| $(INSTALL) $(CSR_EXE) $(DESTDIR)$(bindir) |
| |
| clean: |
| $(RM) core *.o |
| |
| distclean: |
| $(RM) Makefile.depends $(TARGETS) core *.o *.out |