# # 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) # any later version. # # 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.104 2001/09/20 03:21:01 steve Exp $" # # SHELL = /bin/sh VERSION = 0.5 prefix = @prefix@ exec_prefix = @exec_prefix@ srcdir = @srcdir@ SUBDIRS = @subdirs@ VPATH = $(srcdir) bindir = @bindir@ libdir = @libdir@ includedir = $(prefix)/include dllib=@DLLIB@ rdynamic=@rdynamic@ strip_dynamic=@strip_dynamic@ CC = @CC@ CXX = @CXX@ INSTALL = @INSTALL@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ STRIP = @STRIP@ CPPFLAGS = @CPPFLAGS@ @DEFS@ CXXFLAGS = @CXXFLAGS@ -I. -I$(srcdir) PICFLAGS = @PICFLAG@ LDFLAGS = @LDFLAGS@ # 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 all: ivl@EXEEXT@ libvpi.a for dir in $(SUBDIRS); do (cd $$dir ; $(MAKE) all); done cd vvm ; $(MAKE) all cd vpi ; $(MAKE) all cd ivlpp ; $(MAKE) all cd driver ; $(MAKE) all cd tgt-verilog ; $(MAKE) all cd tgt-stub ; $(MAKE) all for tgt in $(TARGETS); do (cd $$tgt ; $(MAKE) all); done # 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 endif # This rule rules the compiler in the trivial hello.vl program to make # sure the basics were compiled properly. check: all for dir in $(SUBDIRS); do (cd $$dir ; $(MAKE) check); done driver/iverilog -Ccheck.conf -ocheck -tvvm-check -B./ivlpp examples/hello.vl $(CXX) -o check $(rdynamic) -fno-exceptions -I$(srcdir) -I$(srcdir)/vvm -I$(srcdir)/vpip -Lvvm -Lvpip check.cc -lvvm -lvpip $(dllib) ./check | grep 'Hello, World' clean: rm -f *.o parse.cc parse.cc.output parse.h dep/*.d lexor.cc lexor_keyword.cc ivl@EXEEXT@ libivl.a libvpi.a cd vvm ; $(MAKE) clean cd vpi ; $(MAKE) clean cd driver ; $(MAKE) clean cd ivlpp ; $(MAKE) clean cd tgt-verilog ; $(MAKE) clean cd tgt-stub ; $(MAKE) clean for dir in $(SUBDIRS); do (cd $$dir ; $(MAKE) clean); done for tgt in $(TARGETS); do (cd $$tgt ; $(MAKE) clean); done distclean: clean for dir in $(SUBDIRS); do (cd $$dir ; $(MAKE) distclean); done for tgt in $(TARGETS); do (cd $$tgt ; $(MAKE) distclean); done rm -f vvm/Makefile rm -f vpi/Makefile rm -f ivlpp/Makefile rm -f driver/Makefile rm -f config.status config.cache config.log rm -f Makefile TT = t-dll.o t-dll-api.o t-dll-expr.o t-dll-proc.o t-vvm.o t-xnf.o FF = nodangle.o synth.o syn-rules.o xnfio.o O = main.o cprop.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_rconst.o \ eval_tree.o expr_synth.o functor.o lexor.o lexor_keyword.o link_const.o \ mangle.o netlist.o netmisc.o net_assign.o \ net_design.o net_event.o net_force.o net_link.o net_modulo.o net_proc.o \ net_scope.o net_udp.o pad_to_width.o \ parse.o parse_misc.o pform.o pform_dump.o \ set_width.o \ verinum.o verireal.o target.o targets.o util.o \ Attrib.o LineInfo.o Module.o PDelays.o PEvent.o \ PExpr.o PGate.o \ PTask.o PFunction.o PWire.o Statement.o \ $(FF) $(TT) Makefile: Makefile.in config.h.in config.status ./config.status 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 ifeq (@WIN32@,yes) ivl@EXEEXT@: $O ivl.def dlltool --dllname ivl@EXEEXT@ --def ivl.def \ --output-lib libivl.a --output-exp ivl.exp # $(CXX) -o ivl@EXEEXT@ -Wl,--base-file,ivl.base ivl.exp $O $(dllib) # dlltool --dllname ivl@EXEEXT@ --base-file ivl.base \ # --output-exp ivl.exp --def ivl.def $(CXX) -o ivl@EXEEXT@ ivl.exp $O $(dllib) @EXTRALIBS@ else ivl@EXEEXT@: $O $(CXX) $(CXXFLAGS) $(rdynamic) $(LDFLAGS) -o ivl@EXEEXT@ $O $(dllib) endif %.o: %.cc @[ -d dep ] || mkdir dep $(CXX) $(CPPFLAGS) $(CXXFLAGS) -MD -c $< -o $*.o mv $*.d dep/$*.d lexor.o: lexor.cc parse.h parse.o: parse.cc parse.h parse.cc: $(srcdir)/parse.y bison --verbose -t -p VL -d -o parse.cc $(srcdir)/parse.y mv parse.cc.h parse.h syn-rules.cc: $(srcdir)/syn-rules.y bison --verbose -p syn_ -o syn-rules.cc $(srcdir)/syn-rules.y lexor.cc: $(srcdir)/lexor.lex flex -PVL -s -olexor.cc $(srcdir)/lexor.lex lexor_keyword.o: lexor_keyword.cc 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) ifeq (@WIN32@,yes) WIN32_INSTALL = $(prefix)/hello.vl $(prefix)/sqrt.vl $(prefix)/QUICK_START.txt endif install: all installdirs $(libdir)/ivl/ivl@EXEEXT@ $(libdir)/ivl/iverilog.conf $(includedir)/ivl_target.h $(includedir)/vpi_user.h $(libdir)/libvpi.a $(WIN32_INSTALL) cd vvm ; $(MAKE) install cd vpi ; $(MAKE) install cd ivlpp ; $(MAKE) install cd driver ; $(MAKE) install for tgt in $(SUBDIRS); do (cd $$tgt ; $(MAKE) install); done for tgt in $(TARGETS); do (cd $$tgt ; $(MAKE) install); done $(libdir)/libvpi.a : ./libvpi.a $(INSTALL_DATA) libvpi.a $(libdir)/libvpi.a $(libdir)/ivl/ivl@EXEEXT@: ./ivl@EXEEXT@ $(INSTALL_PROGRAM) ./ivl@EXEEXT@ $(libdir)/ivl/ivl@EXEEXT@ $(STRIP) $(strip_dynamic) $(libdir)/ivl/ivl@EXEEXT@ $(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 $(includedir)/vpi_user.h: $(srcdir)/vpi_user.h $(INSTALL_DATA) $(srcdir)/vpi_user.h $(includedir)/vpi_user.h # 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 $(prefix)/sqrt.vl: $(srcdir)/examples/sqrt.vl ./dosify.exe $(srcdir)/examples/sqrt.vl tmp.vl mv tmp.vl $(prefix)/sqrt.vl $(prefix)/QUICK_START.txt: $(srcdir)/QUICK_START.txt ./dosify.exe $(srcdir)/QUICK_START.txt tmp.txt mv tmp.txt $(prefix)/QUICK_START.txt endif installdirs: mkinstalldirs $(srcdir)/mkinstalldirs $(bindir) $(includedir) $(libdir)/ivl uninstall: rm -f $(libdir)/ivl/ivl@EXEEXT@ rm -f $(bindir)/verilog rm -f $(bindir)/gverilog@EXEEXT@ rm -f $(includedir)/ivl_target.h rm -f $(includedir)/vpi_user.h cd driver ; $(MAKE) uninstall cd vpi ; $(MAKE) uninstall cd vvm ; $(MAKE) uninstall cd ivlpp ; $(MAKE) uninstall for tgt in $(SUBDIRS); do (cd $$tgt ; $(MAKE) uninstall); done for tgt in $(TARGETS); do (cd $$tgt ; $(MAKE) uninstall); done -include $(patsubst %.o, dep/%.d, $O) -include $(patsubst %.o, dep/%.d, vpithunk.o)