mirror of
https://github.com/verilator/verilator.git
synced 2025-01-06 14:47:36 +00:00
80 lines
2.3 KiB
Makefile
80 lines
2.3 KiB
Makefile
# -*- Makefile -*-
|
|
#*****************************************************************************
|
|
#
|
|
# DESCRIPTION: Verilator Example: Makefile for inside object directory
|
|
#
|
|
# This is executed in the object directory, and called by ../Makefile
|
|
#
|
|
# Copyright 2003-2019 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.
|
|
#
|
|
#*****************************************************************************
|
|
|
|
default: $(VM_PREFIX)
|
|
|
|
ifneq ($(MAKE_MAIN),0)
|
|
# Add main to classes rather then SC_SRCS to save a compiler run
|
|
VM_CLASSES += ${VM_PREFIX}__main $(VM_USER_CLASSES) $(VM_GLOBAL_FAST) $(VM_GLOBAL_SLOW)
|
|
endif
|
|
|
|
include $(VM_PREFIX).mk
|
|
|
|
VPATH += ../../$(VM_USER_DIR)
|
|
|
|
#######################################################################
|
|
|
|
# Needed by DPI tests
|
|
CPPFLAGS += -DVERILATOR=1
|
|
|
|
# Debugging
|
|
CPPFLAGS += -DVL_DEBUG=1
|
|
# Assertions disabled as SystemC libraries are not clean
|
|
#CPPFLAGS += -D_GLIBCXX_DEBUG
|
|
|
|
# Needed by tracing routines
|
|
CPPFLAGS += -DTEST_OBJ_DIR=$(TEST_OBJ_DIR)
|
|
CPPFLAGS += -DVM_PREFIX=$(VM_PREFIX)
|
|
CPPFLAGS += -DVM_PREFIX_INCLUDE="<$(VM_PREFIX).h>"
|
|
CPPFLAGS += $(CPPFLAGS_DRIVER)
|
|
CPPFLAGS += $(CPPFLAGS_DRIVER2)
|
|
CPPFLAGS += $(CPPFLAGS_ADD)
|
|
|
|
ifeq ($(CFG_WITH_LONGTESTS),yes)
|
|
ifeq ($(DRIVER_STD),newest)
|
|
CPPFLAGS += $(CFG_CXXFLAGS_STD_NEWEST)
|
|
else ifeq ($(DRIVER_STD),oldest)
|
|
CPPFLAGS += $(CFG_CXXFLAGS_STD_OLDEST)
|
|
endif
|
|
endif
|
|
|
|
#######################################################################
|
|
# Linking final exe
|
|
|
|
ifeq ($(VM_SC),1)
|
|
LIBS += $(SC_LIBS)
|
|
endif
|
|
|
|
.SUFFIXES:
|
|
|
|
#Default compile, pick up OBJCACHE
|
|
%.o: %.cpp
|
|
$(OBJCACHE) $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $<
|
|
|
|
#Default link, using normal make rules
|
|
#$(VM_PREFIX): $(VK_GLOBAL_OBJS) $(VK_OBJS)
|
|
# $(LINK) $(LDFLAGS) -g $^ $(LOADLIBES) $(LDLIBS) -o $@ $(LIBS) 2>&1
|
|
|
|
#Our own compile rules; Faster compile, all in one file
|
|
$(VM_PREFIX)__ALLboth.cpp: $(VK_CLASSES_CPP) $(VK_SUPPORT_CPP)
|
|
$(VERILATOR_INCLUDER) -DVL_INLINE_OPT=inline $^ > $@
|
|
|
|
$(VM_PREFIX)__ALLboth.o: $(VM_PREFIX)__ALLboth.cpp
|
|
$(OBJCACHE) $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(OPT_FAST) -c -o $@ $<
|
|
|
|
ifneq ($(MAKE_MAIN),0)
|
|
$(VM_PREFIX): $(VM_PREFIX)__ALLboth.o
|
|
$(LINK) $(LDFLAGS) -g $^ $(LOADLIBES) $(LDLIBS) -o $@ $(LIBS) 2>&1
|
|
endif
|