# -*- Makefile -*- #***************************************************************************** # # DESCRIPTION: Verilator: Makefile for verilog source # # Code available from: https://verilator.org # #***************************************************************************** # # Copyright 2003-2020 by Wilson Snyder. This program is free software; you can # redistribute it and/or modify it under the terms of either the GNU # Lesser General Public License Version 3 or the Perl Artistic License # Version 2.0. # # Verilator 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 General Public License for more details. # #****************************************************************************/ #### Start of system configuration section. #### srcdir = @srcdir@ PERL = @PERL@ EXEEXT = @EXEEXT@ # VPATH only does sources; fix install_test's not creating ../bin vpath %.h @srcdir@ #### End of system configuration section. #### default: dbg opt debug: dbg optimize: opt ifneq ($(words $(CURDIR)),1) $(error Unsupported: GNU Make cannot build in directories containing spaces, build elsewhere: '$(CURDIR)') endif UNDER_GIT = $(wildcard ${srcdir}/../.git/logs/HEAD) #********************************************************************* obj_opt: mkdir -p $@ obj_dbg: mkdir -p $@ ../bin: mkdir -p $@ .SUFFIXES: .PHONY: ../bin/verilator_bin ../bin/verilator_bin_dbg ../bin/verilator_coverage_bin_dbg opt: ../bin/verilator_bin ifeq ($(VERILATOR_NO_OPT_BUILD),1) # Faster laptop development... One build ../bin/verilator_bin: ../bin/verilator_bin_dbg -rm -rf $@ $@.exe -cp -p $<$(EXEEXT) $@$(EXEEXT) else ../bin/verilator_bin: obj_opt ../bin prefiles $(MAKE) -C obj_opt -j 1 TGT=../$@ -f ../Makefile_obj serial $(MAKE) -C obj_opt TGT=../$@ -f ../Makefile_obj endif dbg: ../bin/verilator_bin_dbg ../bin/verilator_coverage_bin_dbg ../bin/verilator_bin_dbg: obj_dbg ../bin prefiles $(MAKE) -C obj_dbg -j 1 TGT=../$@ VL_DEBUG=1 -f ../Makefile_obj serial $(MAKE) -C obj_dbg TGT=../$@ VL_DEBUG=1 -f ../Makefile_obj ../bin/verilator_coverage_bin_dbg: obj_dbg ../bin prefiles $(MAKE) -C obj_dbg TGT=../$@ VL_DEBUG=1 VL_VLCOV=1 -f ../Makefile_obj serial_vlcov $(MAKE) -C obj_dbg TGT=../$@ VL_DEBUG=1 VL_VLCOV=1 -f ../Makefile_obj prefiles:: prefiles:: config_rev.h ifneq ($(UNDER_GIT),) # If local git tree... Else don't burden users # This output goes into srcdir if locally configured, as we need to distribute it as part of the kit. config_rev.h: ${srcdir}/config_rev.pl ${srcdir}/../.git/logs/HEAD $(PERL) ${srcdir}/config_rev.pl ${srcdir} >$@ else config_rev.h: ${srcdir}/config_rev.pl $(PERL) ${srcdir}/config_rev.pl ${srcdir} >$@ endif maintainer-copy:: clean mostlyclean distclean maintainer-clean:: -rm -rf obj_* *.log *.dmp *.vpd core -rm -f *.o *.d perlxsi.c *_gen_* -rm -f *__gen* -rm -f .objcache* distclean maintainer-clean:: -rm -f Makefile Makefile_obj config_build.h maintainer-clean:: -rm -f config_rev.h