Makefile 1.84 KB
Newer Older
Alan Mishchenko committed
1 2 3 4 5 6 7 8

CC   := gcc
CXX  := g++ 
LD   := g++
CP   := cp

PROG := abc

Alan Mishchenko committed
9 10 11 12 13 14 15
MODULES := src/base/abc src/base/abci src/base/cmd \
	src/base/io src/base/main src/base/ver \
	src/bdd/cudd src/bdd/dsd src/bdd/epd src/bdd/mtr \
	src/bdd/parse src/bdd/reo src/bdd/cas \
	src/map/fpga src/map/mapper src/map/mio src/map/super src/map/if \
	src/misc/extra src/misc/mvc src/misc/st src/misc/util \
	src/misc/espresso src/misc/nm src/misc/vec src/misc/hash \
Alan Mishchenko committed
16
	src/opt/cut src/opt/dec src/opt/fxu src/opt/rwr src/opt/mfs \
Alan Mishchenko committed
17 18 19 20 21
	src/opt/sim src/opt/ret src/opt/res src/opt/lpk src/opt/fret \
	src/sat/bsat src/sat/csat src/sat/msat src/sat/fraig \
	src/aig/ivy src/aig/hop src/aig/rwt src/aig/deco \
	src/aig/mem src/aig/dar src/aig/fra src/aig/cnf \
	src/aig/csw src/aig/ioa src/aig/aig src/aig/kit \
Alan Mishchenko committed
22
	src/aig/bdc src/aig/bar src/aig/ntl src/aig/nwk src/aig/mfx \
Alan Mishchenko committed
23
	src/aig/tim src/aig/saig src/aig/bbr
Alan Mishchenko committed
24

Alan Mishchenko committed
25
default: $(PROG)
Alan Mishchenko committed
26

Alan Mishchenko committed
27 28 29
#OPTFLAGS  := -DNDEBUG -O3 -DLIN
#OPTFLAGS  := -DNDEBUG -O3 -DLIN64
#OPTFLAGS  := -g -O -DLIN
Alan Mishchenko committed
30
OPTFLAGS  := -g -O -DLIN64
Alan Mishchenko committed
31 32

CFLAGS   += -Wall -Wno-unused-function $(OPTFLAGS) $(patsubst %, -I%, $(MODULES)) 
Alan Mishchenko committed
33 34
CXXFLAGS += $(CFLAGS) 

Alan Mishchenko committed
35
LIBS := -ldl -rdynamic -lreadline -ltermcap
Alan Mishchenko committed
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
SRC  := 
GARBAGE := core core.* *.stackdump ./tags $(PROG)

.PHONY: tags clean docs

include $(patsubst %, %/module.make, $(MODULES))

OBJ := \
	$(patsubst %.cc, %.o, $(filter %.cc, $(SRC))) \
	$(patsubst %.c, %.o,  $(filter %.c, $(SRC)))  \
	$(patsubst %.y, %.o,  $(filter %.y, $(SRC))) 

DEP := $(OBJ:.o=.d)

# implicit rules

%.d: %.c
	./depends.sh $(CC) `dirname $*.c` $(CFLAGS) $*.c > $@

%.d: %.cc
	./depends.sh $(CXX) `dirname $*.cc` $(CXXFLAGS) $(CFLAGS) $*.cc > $@

-include $(DEP)

# Actual targets

depend: $(DEP)

clean: 
	rm -rf $(PROG) $(OBJ) $(GARBAGE) $(OBJ:.o=.d) 

tags:
	ctags -R .

$(PROG): $(OBJ)
	$(LD) -o $@ $^ $(LIBS)

Alan Mishchenko committed
73 74 75 76
lib$(PROG).a: $(OBJ)
	ar rv $@ $?
	ranlib $@

Alan Mishchenko committed
77 78 79
docs:
	doxygen doxygen.conf