iverilog/Makefile.in

312 lines
9.6 KiB
Makefile
Raw Normal View History

1999-04-25 23:54:33 +02:00
#
# This source code is free software; you can redistribute it
# and/or modify it in source code form under the terms of the GNU
# Library General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option)
2000-11-21 04:55:20 +01:00
# any later version.
1999-04-25 23:54:33 +02:00
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc.,
# 59 Temple Place - Suite 330
# Boston, MA 02111-1307, USA
#
#ident "$Id: Makefile.in,v 1.129 2002/06/30 02:21:31 steve Exp $"
1999-04-25 23:54:33 +02:00
#
#
SHELL = /bin/sh
2002-02-03 08:05:36 +01:00
# This version string is only used in the version message printed
# by the compiler. It reflects the assigned version number for the
# product as a whole. Most components also print the CVS Name: token
# in order to get a more automatic version stamp as well.
VERSION = 0.6
1999-04-25 23:54:33 +02:00
prefix = @prefix@
exec_prefix = @exec_prefix@
srcdir = @srcdir@
2001-03-11 01:29:38 +01:00
SUBDIRS = @subdirs@
1999-04-25 23:54:33 +02:00
VPATH = $(srcdir)
2000-11-11 01:48:35 +01:00
bindir = @bindir@
libdir = @libdir@
1999-04-25 23:54:33 +02:00
includedir = $(prefix)/include
2002-05-28 07:21:30 +02:00
mandir = @mandir@
1999-04-25 23:54:33 +02:00
2000-08-12 18:34:37 +02:00
dllib=@DLLIB@
rdynamic=@rdynamic@
strip_dynamic=@strip_dynamic@
2000-08-12 18:34:37 +02:00
1999-04-25 23:54:33 +02:00
CC = @CC@
CXX = @CXX@
INSTALL = @INSTALL@
2000-01-24 00:54:36 +01:00
INSTALL_SCRIPT = @INSTALL_SCRIPT@
1999-04-25 23:54:33 +02:00
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
STRIP = @STRIP@
2001-12-30 18:20:33 +01:00
LEX = @LEX@
YACC = @YACC@
1999-04-25 23:54:33 +02:00
CPPFLAGS = @CPPFLAGS@ @DEFS@
CXXFLAGS = @CXXFLAGS@ -I. -I$(srcdir)
PICFLAGS = @PICFLAG@
1999-04-25 23:54:33 +02:00
LDFLAGS = @LDFLAGS@
2000-12-09 02:17:38 +01:00
# The TARGETS variable lists the target modules that can be build and
# installed. Some of them depend on external things, so are only
# compiled if the prerequisites are installed.
TARGETS = tgt-null
ifeq ('@HAVE_IPAL@','yes')
TARGETS += tgt-pal
endif
2002-02-16 04:18:53 +01:00
ifeq (@ENABLE_VVM@,yes)
SUB_VVM = vvm
endif
2000-12-09 02:17:38 +01:00
all: ivl@EXEEXT@ libvpi.a
2002-02-16 04:18:53 +01:00
for dir in $(SUBDIRS) $(SUB_VVM); do (cd $$dir ; $(MAKE) all); done
2000-09-30 05:20:47 +02:00
cd vpi ; $(MAKE) all
1999-10-23 01:58:13 +02:00
cd ivlpp ; $(MAKE) all
2002-02-03 08:05:36 +01:00
cd driver ; $(MAKE) VERSION=$(VERSION) all
2000-10-05 07:03:01 +02:00
cd tgt-verilog ; $(MAKE) all
cd tgt-stub ; $(MAKE) all
2000-12-09 02:17:38 +01:00
for tgt in $(TARGETS); do (cd $$tgt ; $(MAKE) all); done
1999-04-25 23:54:33 +02:00
2001-08-03 19:06:47 +02:00
# In the windows world, the installer will need a dosify program to
# dosify text files.
ifeq (@WIN32@,yes)
all: dosify.exe
dosify.exe: dosify.c
$(CC) -o dosify.exe dosify.c
2002-04-07 02:47:10 +02:00
else
all: iverilog-vpi
2001-08-03 19:06:47 +02:00
endif
2000-10-28 05:58:11 +02:00
# This rule rules the compiler in the trivial hello.vl program to make
# sure the basics were compiled properly.
check: all
2001-03-25 07:59:46 +02:00
for dir in $(SUBDIRS); do (cd $$dir ; $(MAKE) check); done
2002-01-05 05:36:43 +01:00
driver/iverilog -Ccheck.conf -ocheck.vvp -tvvp-check -B./ivlpp $(srcdir)/examples/hello.vl
vvp/vvp -M./vpi ./check.vvp | grep 'Hello, World'
2000-10-28 05:58:11 +02:00
1999-04-25 23:54:33 +02:00
clean:
2002-05-15 03:25:07 +02:00
rm -f *.o parse.cc parse.cc.output parse.h dep/*.d lexor.cc lexor_keyword.cc ivl@EXEEXT@ libivl.a libvpi.a iverilog-vpi
2000-09-30 05:20:47 +02:00
cd vpi ; $(MAKE) clean
cd driver ; $(MAKE) clean
1999-10-23 01:58:13 +02:00
cd ivlpp ; $(MAKE) clean
2000-10-05 07:03:01 +02:00
cd tgt-verilog ; $(MAKE) clean
cd tgt-stub ; $(MAKE) clean
2002-02-16 04:18:53 +01:00
for dir in $(SUBDIRS) $(SUB_VVM); do (cd $$dir ; $(MAKE) clean); done
2000-12-09 02:17:38 +01:00
for tgt in $(TARGETS); do (cd $$tgt ; $(MAKE) clean); done
1999-04-25 23:54:33 +02:00
distclean: clean
2002-02-16 04:18:53 +01:00
for dir in $(SUBDIRS) $(SUB_VVM); do (cd $$dir ; $(MAKE) distclean); done
2001-03-14 20:27:44 +01:00
for tgt in $(TARGETS); do (cd $$tgt ; $(MAKE) distclean); done
rm -f vvm/Makefile
2000-09-30 05:20:47 +02:00
rm -f vpi/Makefile
rm -f ivlpp/Makefile
rm -f driver/Makefile
rm -f config.status config.cache config.log
rm -f Makefile
2002-06-06 20:48:02 +02:00
rm -f tgt-pal/Makefile tgt-stub/Makefile tgt-verilog/Makefile
2002-02-16 04:18:53 +01:00
ifeq (@ENABLE_VVM@,yes)
TT_VVM = mangle.o t-vvm.o
2002-02-16 04:18:53 +01:00
endif
TT = t-dll.o t-dll-api.o t-dll-expr.o t-dll-proc.o $(TT_VVM) t-xnf.o
FF = cprop.o nodangle.o synth.o synth2.o syn-rules.o xnfio.o
1999-04-25 23:54:33 +02:00
O = main.o async.o design_dump.o dup_expr.o elaborate.o elab_expr.o \
elab_lval.o elab_net.o elab_anet.o elab_pexpr.o elab_scope.o \
elab_sig.o emit.o eval.o eval_attrib.o eval_rconst.o \
eval_tree.o expr_synth.o functor.o lexor.o lexor_keyword.o link_const.o \
load_module.o netlist.o netmisc.o net_assign.o \
2002-03-09 03:10:22 +01:00
net_design.o net_event.o net_expr.o net_force.o net_func.o \
net_link.o net_modulo.o net_nex_input.o net_nex_output.o \
net_proc.o net_scope.o net_udp.o pad_to_width.o \
1999-09-29 02:42:50 +02:00
parse.o parse_misc.o pform.o pform_dump.o \
set_width.o \
verinum.o verireal.o target.o targets.o \
Attrib.o HName.o LineInfo.o Module.o PDelays.o PEvent.o \
2000-04-01 21:31:57 +02:00
PExpr.o PGate.o \
PTask.o PFunction.o PWire.o Statement.o \
1999-07-03 04:12:51 +02:00
$(FF) $(TT)
1999-04-25 23:54:33 +02:00
Makefile: Makefile.in config.h.in config.status
1999-04-25 23:54:33 +02:00
./config.status
1999-08-17 17:57:43 +02:00
libvpi.a: vpithunk.o
rm -f $@
ar cvq $@ vpithunk.o
ranlib $@
# The vpithunk.c file (that makes up the libvpi.a library) needs to
# be make with PIC flags, because shared objects load it.
vpithunk.o: vpithunk.c
@[ -d dep ] || mkdir dep
$(CC) $(CPPFLAGS) $(CFLAGS) $(PICFLAGS) -MD -c $< -o $*.o
mv $*.d dep/$*.d
2001-05-20 17:09:39 +02:00
ifeq (@WIN32@,yes)
# Under Windows (mingw) I need to make the ivl.exe in two steps.
# The first step makes an ivl.exe that dlltool can use to make an
# export and import library, and the last link makes a, ivl.exe
# that really exports the things that the import library imports.
ivl@EXEEXT@: $O ivl.def
$(CXX) -o ivl@EXEEXT@ $O $(dllib) @EXTRALIBS@
dlltool --dllname ivl@EXEEXT@ --def ivl.def \
--output-lib libivl.a --output-exp ivl.exp
$(CXX) -o ivl@EXEEXT@ ivl.exp $O $(dllib) @EXTRALIBS@
else
2000-09-30 05:20:47 +02:00
ivl@EXEEXT@: $O
$(CXX) $(CXXFLAGS) $(rdynamic) $(LDFLAGS) -o ivl@EXEEXT@ $O $(dllib)
endif
1999-04-25 23:54:33 +02:00
2000-04-21 08:41:02 +02:00
2002-04-07 02:47:10 +02:00
ifeq (@WIN32@,yes)
else
iverilog-vpi: iverilog-vpi.sh
sed -e 's;@SHARED@;@shared@;' -e 's;@PIC@;@PICFLAG@;' $< > $@
chmod +x $@
endif
%.o: %.cc
1999-04-26 04:45:08 +02:00
@[ -d dep ] || mkdir dep
1999-11-29 18:02:21 +01:00
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -MD -c $< -o $*.o
1999-04-25 23:54:33 +02:00
mv $*.d dep/$*.d
lexor.o: lexor.cc parse.h
1999-04-25 23:54:33 +02:00
parse.o: parse.cc
1999-06-15 04:50:02 +02:00
1999-10-23 01:58:13 +02:00
parse.h parse.cc: $(srcdir)/parse.y
2001-12-30 18:20:33 +01:00
$(YACC) --verbose -t -p VL -d -o parse.cc $(srcdir)/parse.y
mv parse.cc.h parse.h || mv parse.hh parse.h
1999-04-25 23:54:33 +02:00
2000-05-13 22:55:47 +02:00
syn-rules.cc: $(srcdir)/syn-rules.y
2001-12-30 18:20:33 +01:00
$(YACC) --verbose -p syn_ -o syn-rules.cc $(srcdir)/syn-rules.y
2000-05-13 22:55:47 +02:00
1999-10-23 01:58:13 +02:00
lexor.cc: $(srcdir)/lexor.lex
2001-12-30 18:20:33 +01:00
$(LEX) -PVL -s -olexor.cc $(srcdir)/lexor.lex
1999-04-25 23:54:33 +02:00
lexor_keyword.o: lexor_keyword.cc
2000-03-12 18:09:40 +01:00
lexor_keyword.cc: lexor_keyword.gperf
gperf -o -i 7 -C -k 1-3,$$ -L ANSI-C -H keyword_hash -N check_identifier -t $(srcdir)/lexor_keyword.gperf > lexor_keyword.cc || (rm -f lexor_keyword.cc ; false)
2000-03-12 18:09:40 +01:00
2002-05-28 07:21:30 +02:00
iverilog-vpi.ps: $(srcdir)/iverilog-vpi.man
man -t $(srcdir)/iverilog-vpi.man > iverilog-vpi.ps
iverilog-vpi.pdf: iverilog-vpi.ps
ps2pdf iverilog-vpi.ps iverilog-vpi.pdf
ifeq (@WIN32@,yes)
INSTALL_DOC = $(prefix)/iverilog-vpi.pdf
INSTALL_DOCDIR =
all: iverilog-vpi.pdf
else
INSTALL_DOC = $(mandir)/man1/iverilog-vpi.1
INSTALL_DOCDIR = $(mandir)/man1
endif
2001-08-03 19:06:47 +02:00
ifeq (@WIN32@,yes)
WIN32_INSTALL = $(prefix)/hello.vl $(prefix)/sqrt.vl $(prefix)/QUICK_START.txt
2002-04-07 02:47:10 +02:00
else
WIN32_INSTALL = $(bindir)/iverilog-vpi
2001-08-03 19:06:47 +02:00
endif
2000-03-12 18:09:40 +01:00
2002-05-28 07:21:30 +02:00
install: all installdirs $(libdir)/ivl/ivl@EXEEXT@ $(libdir)/ivl/iverilog.conf $(includedir)/ivl_target.h $(includedir)/vpi_user.h $(includedir)/acc_user.h $(includedir)/veriuser.h $(libdir)/libvpi.a $(WIN32_INSTALL) $(INSTALL_DOC)
2000-09-30 05:20:47 +02:00
cd vpi ; $(MAKE) install
1999-10-23 01:58:13 +02:00
cd ivlpp ; $(MAKE) install
cd driver ; $(MAKE) install
2002-02-16 04:18:53 +01:00
for tgt in $(SUBDIRS) $(SUB_VVM); do (cd $$tgt ; $(MAKE) install); done
2000-12-09 02:17:38 +01:00
for tgt in $(TARGETS); do (cd $$tgt ; $(MAKE) install); done
2000-04-21 08:41:02 +02:00
2002-04-07 02:50:13 +02:00
$(bindir)/iverilog-vpi: ./iverilog-vpi
$(INSTALL_PROGRAM) ./iverilog-vpi $(bindir)/iverilog-vpi
2002-04-07 02:47:10 +02:00
$(libdir)/libvpi.a : ./libvpi.a
$(INSTALL_DATA) libvpi.a $(libdir)/libvpi.a
2000-09-30 05:20:47 +02:00
$(libdir)/ivl/ivl@EXEEXT@: ./ivl@EXEEXT@
$(INSTALL_PROGRAM) ./ivl@EXEEXT@ $(libdir)/ivl/ivl@EXEEXT@
$(STRIP) $(strip_dynamic) $(libdir)/ivl/ivl@EXEEXT@
1999-04-25 23:54:33 +02:00
$(libdir)/ivl/iverilog.conf: $(srcdir)/iverilog.conf
$(INSTALL_DATA) $(srcdir)/iverilog.conf $(libdir)/ivl/iverilog.conf
$(includedir)/ivl_target.h: $(srcdir)/ivl_target.h
$(INSTALL_DATA) $(srcdir)/ivl_target.h $(includedir)/ivl_target.h
2001-03-14 20:27:44 +01:00
$(includedir)/vpi_user.h: $(srcdir)/vpi_user.h
$(INSTALL_DATA) $(srcdir)/vpi_user.h $(includedir)/vpi_user.h
2002-05-23 05:46:42 +02:00
$(includedir)/acc_user.h: $(srcdir)/acc_user.h
$(INSTALL_DATA) $(srcdir)/acc_user.h $(includedir)/acc_user.h
2002-05-19 07:21:00 +02:00
$(includedir)/veriuser.h: $(srcdir)/veriuser.h
$(INSTALL_DATA) $(srcdir)/veriuser.h $(includedir)/veriuser.h
2002-05-28 07:21:30 +02:00
$(mandir)/man1/iverilog-vpi.1: $(srcdir)/iverilog-vpi.man
$(INSTALL_DATA) $(srcdir)/iverilog-vpi.man $(mandir)/man1/iverilog-vpi.1
$(prefix)/iverilog-vpi.pdf: iverilog-vpi.pdf
$(INSTALL_DATA) iverilog-vpi.pdf $(prefix)/iverilog-vpi.pdf
2001-08-03 19:06:47 +02:00
# In windows installations, put a few examples and the quick_start
# into the destination directory.
ifeq (@WIN32@,yes)
$(prefix)/hello.vl: $(srcdir)/examples/hello.vl
./dosify.exe $(srcdir)/examples/hello.vl tmp.vl
mv tmp.vl $(prefix)/hello.vl
2001-08-03 19:06:47 +02:00
$(prefix)/sqrt.vl: $(srcdir)/examples/sqrt.vl
./dosify.exe $(srcdir)/examples/sqrt.vl tmp.vl
mv tmp.vl $(prefix)/sqrt.vl
2001-08-03 19:06:47 +02:00
$(prefix)/QUICK_START.txt: $(srcdir)/QUICK_START.txt
./dosify.exe $(srcdir)/QUICK_START.txt tmp.txt
mv tmp.txt $(prefix)/QUICK_START.txt
2001-08-03 19:06:47 +02:00
endif
1999-04-25 23:54:33 +02:00
installdirs: mkinstalldirs
2002-06-05 20:52:14 +02:00
$(srcdir)/mkinstalldirs $(bindir) $(includedir) $(libdir)/ivl \
$(mandir) $(mandir)/man1
2001-08-03 19:06:47 +02:00
1999-04-25 23:54:33 +02:00
uninstall:
2002-06-05 20:52:14 +02:00
rm -f $(libdir)/ivl/iverilog.conf
2002-06-14 06:17:12 +02:00
rm -f $(libdir)/ivl/ivl
2002-06-05 20:52:14 +02:00
-rmdir $(libdir)/ivl
rm -f $(libdir)/libvpi.a
2000-12-02 06:57:46 +01:00
rm -f $(bindir)/verilog
2002-06-05 20:52:14 +02:00
rm -f $(bindir)/iverilog-vpi
2000-09-30 05:20:47 +02:00
rm -f $(bindir)/gverilog@EXEEXT@
rm -f $(includedir)/ivl_target.h
2001-03-14 20:27:44 +01:00
rm -f $(includedir)/vpi_user.h
2002-05-23 05:46:42 +02:00
rm -f $(includedir)/acc_user.h
2002-05-19 07:21:00 +02:00
rm -f $(includedir)/veriuser.h
2002-06-05 20:52:14 +02:00
rm -f $(mandir)/man1/iverilog-vpi.1
cd driver ; $(MAKE) uninstall
1999-10-23 01:58:13 +02:00
cd vpi ; $(MAKE) uninstall
cd ivlpp ; $(MAKE) uninstall
2002-02-16 04:18:53 +01:00
for tgt in $(SUBDIRS) $(SUB_VVM); do (cd $$tgt ; $(MAKE) uninstall); done
2000-12-09 02:17:38 +01:00
for tgt in $(TARGETS); do (cd $$tgt ; $(MAKE) uninstall); done
1999-04-25 23:54:33 +02:00
-include $(patsubst %.o, dep/%.d, $O)
-include $(patsubst %.o, dep/%.d, vpithunk.o)