mirror of
git://projects.qi-hardware.com/eda-tools.git
synced 2024-12-23 13:38:37 +02:00
c9bd26a34d
We need explicit rules to compile lex.yy.c and y.tab.c for the relaxed CFLAGS. However, this means that the implicit rule was not used and therefore no dependencies were generated.
94 lines
2.1 KiB
Makefile
94 lines
2.1 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 $(shell pkg-config --cflags glib-2.0)
|
|
SLOPPY = -Wno-unused -Wno-implicit-function-declaration
|
|
OBJS = 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, $*)
|
|
|
|
-include $(OBJS:.o=.d)
|
|
|
|
clean:
|
|
rm -f $(OBJS) $(OBJS:.o=.d)
|
|
rm -f lex.yy.c y.tab.c y.tab.h y.output
|
|
|
|
spotless: clean
|
|
rm -f boom
|
|
|
|
# ----- Experiments -----------------------------------------------------------
|
|
|
|
try:
|
|
$(VALGRIND) ./boom HIERARCHY -c CHAR -x CURR -p PROVIDER -i INV \
|
|
-s SUBST
|