mirror of
git://projects.qi-hardware.com/eda-tools.git
synced 2024-11-10 22:28:25 +02:00
9cafe23fb8
We now generate the operator map algorithmically, which is a bit less classy than solving the logical equations, but easier to get right. Also renamed the somewhat vague "redundant" to "unreachable".
114 lines
2.6 KiB
Makefile
114 lines
2.6 KiB
Makefile
#
|
|
# Makefile - BOOM's Makefile
|
|
#
|
|
# Copyright 2012 by Werner Almesberger
|
|
#
|
|
# 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 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
|
|
SHELL = /bin/bash
|
|
|
|
CFLAGS = -g \
|
|
-Wall -Wextra -Wshadow -Wmissing-prototypes -Wmissing-declarations \
|
|
$(shell pkg-config --cflags glib-2.0)
|
|
SLOPPY = -Wno-unused -Wno-implicit-function-declaration
|
|
OBJS = bom.o boom.o chr.o comp.o db.o dump.o eval.o param.o relop.o \
|
|
subex.o subst.o util.o \
|
|
vstring.o lex.yy.o y.tab.o
|
|
LDLIBS = -lfl $(shell pkg-config --libs glib-2.0)
|
|
|
|
YACC = bison -y
|
|
YYFLAGS = -v
|
|
|
|
CC_normal := $(CC)
|
|
YACC_normal := $(YACC)
|
|
LEX_normal := $(LEX)
|
|
DEPEND_normal := $(CPP) $(CFLAGS) -MM -MG
|
|
|
|
CC_quiet = @echo " CC " $@ && $(CC_normal)
|
|
YACC_quiet = @echo " YACC " $@ && $(YACC_normal)
|
|
LEX_quiet = @echo " LEX " $@ && $(LEX_normal)
|
|
GEN_quiet = @echo " GENERATE " $@ &&
|
|
DEPEND_quiet = @$(DEPEND_normal)
|
|
|
|
ifeq ($(V),1)
|
|
CC = $(CC_normal)
|
|
LEX = $(LEX_normal)
|
|
YACC = $(YACC_normal)
|
|
GEN =
|
|
DEPEND = $(DEPEND_normal)
|
|
else
|
|
CC = $(CC_quiet)
|
|
LEX = $(LEX_quiet)
|
|
YACC = $(YACC_quiet)
|
|
GEN = $(GEN_quiet)
|
|
DEPEND = $(DEPEND_quiet)
|
|
endif
|
|
|
|
MKDEP = $(DEPEND) $(1).c | \
|
|
sed -e \
|
|
'/^\(.*:\)\? */{p;s///;s/ *\\\?$$/ /;s/ */:\n/g;H;}' \
|
|
-e '$${g;p;}' -e d >$(1).d; \
|
|
[ "$${PIPESTATUS[*]}" = "0 0" ] || { rm -f $(1).d; exit 1; }
|
|
|
|
.PHONY: all clean spotless try
|
|
|
|
all: boom
|
|
|
|
boom: $(OBJS)
|
|
$(CC) $(CFLAGS) -o $@ $(OBJS) $(LDLIBS)
|
|
|
|
lex.yy.c: lang.l y.tab.h
|
|
$(LEX) lang.l
|
|
|
|
lex.yy.o: lex.yy.c y.tab.h
|
|
$(CC) -c $(CFLAGS) $(SLOPPY) lex.yy.c
|
|
$(call MKDEP, lex.yy)
|
|
|
|
y.tab.c y.tab.h: lang.y
|
|
$(YACC) $(YYFLAGS) -d lang.y
|
|
|
|
y.tab.o: y.tab.c
|
|
$(CC) -c $(CFLAGS) $(SLOPPY) y.tab.c
|
|
$(call MKDEP, y.tab)
|
|
|
|
%.o: %.c
|
|
$(CC) -c $(CFLAGS) $*.c -o $*.o
|
|
$(call MKDEP, $*)
|
|
|
|
relop.o: unreachable.inc
|
|
|
|
unreachable.inc: genredmap.pl
|
|
$(GEN) ./$< 0 >$@ || { rm -f $@; exit 1; }
|
|
|
|
-include $(OBJS:.o=.d)
|
|
|
|
clean:
|
|
rm -f $(OBJS) $(OBJS:.o=.d)
|
|
rm -f lex.yy.c y.tab.c y.tab.h y.output
|
|
rm -f redmap.inc
|
|
|
|
spotless: clean
|
|
rm -f boom
|
|
|
|
# ----- Experiments -----------------------------------------------------------
|
|
|
|
try:
|
|
$(VALGRIND) ./boom -v HIERARCHY -c CHAR -x CURR -p PROVIDER -i INV \
|
|
-s SUBST
|
|
|
|
# ----- Tests -----------------------------------------------------------------
|
|
|
|
test tests: all
|
|
LANG= bash -c \
|
|
'passed=0 && cd test && \
|
|
for n in [a-z]*; do \
|
|
[ $$n != core ] && SCRIPT=$$n . ./$$n; done; \
|
|
echo "Passed all $$passed tests"'
|
|
|
|
valgrind:
|
|
VALGRIND="valgrind -q" $(MAKE) tests
|