Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / sam / system / Makefile
# ========== Copyright Header Begin ==========================================
#
# OpenSPARC T2 Processor File: Makefile
# Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
#
# The above named program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public
# License version 2 as published by the Free Software Foundation.
#
# The above named 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
# General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this work; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ========== Copyright Header End ============================================
#
# "@(#)1.2 06/01/15 system/Makefile"
#
# invoked with: build DEFINES="<list of target-specific compiler defines>"
#
# ------------------------------ defines -------------------------------
include $(TOP_DIR)/Makefile.defines
CCBLAZE = blaze/cpu_interface.cc blaze/dev_registry.cc \
blaze/main.cc blaze/netsim.cc blaze/system.cc blaze/term.cc \
blaze/term_redirect.cc blaze/workerthreads.cc blaze/ui_cmds.cc \
blaze/ui_mem_cmds.cc blaze/ui_utils.cc blaze/prioque.cc blaze/dr.cc \
blaze/elfsym.cc blaze/symbols.cc blaze/ui_elfsym.cc \
blaze/stracer.cc blaze/command_opts.cc blaze/ui.cc
OBJBLAZE = $(CCBLAZE:blaze/%.cc=$(OBJ_DIR)/%.o)
CCTRMOD = tracemod/tm_mmi.cc tracemod/tm_impl.cc tracemod/tm_api.cc \
tracemod/tm_cpu_ext.cc tracemod/tm_blaze_ext.cc
OBJTRMOD = $(CCTRMOD:tracemod/%.cc=$(OBJ_DIR)/%.o)
CCUTIL = util/fileutil.cc
OBJUTIL = $(CCUTIL:util/%.cc=$(OBJ_DIR)/%.o)
CCMEM = mem/Memory.cc
OBJMEM = $(CCMEM:mem/%.cc=$(OBJ_DIR)/%.o)
CCOBJS = $(OBJBLAZE) $(OBJTRMOD) $(OBJUTIL) $(OBJMEM)
ASFILES = util/atomic.s
ASOBJS=$(ASFILES:util/%.s=$(OBJ_DIR)/%.o)
INCLUDES += -I./include -Iblaze/include -Iutil/include -Itracemod/include -Idr/include -Imem/include -I$(TOP_DIR)/include
INCLUDES += -I$(SPIX_HOME)/inc
LIBS += -L$(SPIX_HOME)/lib -lspix_sparc
LIBS += -R$(DEVTOOLS_HOME)/lib -L$(DEVTOOLS_HOME)/lib -lreadline -lhistory
MODULE_HOME = ../devices
INCLUDES += -I$(MODULE_HOME)/serial/include -I$(MODULE_HOME)/common/include -I$(MODULE_HOME)/bi/include -I$(MODULE_HOME)/rtc/include -I$(MODULE_HOME)/scsi/include -I$(MODULE_HOME)/fc/include -I$(MODULE_HOME)/gem/include -I$(MODULE_HOME)/schizo/include
INCLUDES += -I$(DEVTOOLS_HOME)/include
EXTRAFLAGS += -D__CWD__=\"$(PWD)\"
CCFLAGS += $(EXTRAFLAGS) $(INCLUDES) $(DEFINES)
CCFLAGS += -DBLAZEVERSION_STRING=\"$(VERSION)\"
EXTRAASFLAGS.v8plus = -P -xregsym=no -D_ASM -D__STDC__=0
EXTRAASFLAGS.v9 = -P -xregsym=no -D_ASM -D__STDC__=0 -DARCH_V9
EXTRAASFLAGS.amd64 = -P -D_ASM -D__STDC__=0 -DARCH_X64
ASFLAGS += $(EXTRAASFLAGS.$(ARCH))
LDFLAGS += -znolazyload
LIBS += -ladm -lsocket -lnsl -ldl -lrt -lelf -lcurses
INSTALL_INCS = Memory.h address.h bi.h bootbus_ctrl.h cpu_interface.h \
vcpu.h dev_props.h dr.h dump.h fc_ctrl.h ll.h mem.h \
mmi-blaze.h mmi.h netsim.h pcidisk.h prioque.h property.h remote.h \
rtc.h schizo.h scsi_ctrl.h serial.h simce.h simge.h sym_scsi_ctrl.h \
system.h tracemod.h types.h ui.h vtracer.h vtracer_async_queue.h
#
INSTALL_DEMOS = sam.rc scsidisk.init fcdisk.init
# -------------------------- targets and rules -------------------------
build: $(BIN_DIR)/sam
$(BIN_DIR)/sam: $(CCOBJS) $(ASOBJS) $(OBJ_DIR)/SS_Memory.o
@echo
@echo building $@
@echo
$(LINK.cc) -o $@ $(CCOBJS) $(ASOBJS) $(LIBS) $(OBJ_DIR)/SS_Memory.o
# still not sure what's the best way to do this (until we just plain flatten
# and merge all the subdirs, which are pretty darn unnecessary anyway)
#
$(OBJBLAZE) : $(CCBLAZE)
@ $(TESTDIR) $(OBJ_DIR)
@echo
@echo building $@
@echo
$(COMPILE.cc) -o $@ $(@:$(OBJ_DIR)/%.o=blaze/%.cc)
#
$(OBJTRMOD) : $(CCTRMOD)
@ $(TESTDIR) $(OBJ_DIR)
@echo
@echo building $@
@echo
$(COMPILE.cc) -o $@ $(@:$(OBJ_DIR)/%.o=tracemod/%.cc)
#
$(OBJUTIL) : $(CCUTIL)
@ $(TESTDIR) $(OBJ_DIR)
@echo
@echo building $@
@echo
$(COMPILE.cc) -o $@ $(@:$(OBJ_DIR)/%.o=util/%.cc)
#
$(OBJ_DIR)/Memory.o : mem/Memory.cc
@ $(TESTDIR) $(OBJ_DIR)
@echo
@echo building $@
@echo
$(COMPILE.cc) -o $@ mem/Memory.cc
#
$(ASOBJS) : $(ASFILES)
@ $(TESTDIR) $(OBJ_DIR)
@echo
@echo building $@
@echo
$(COMPILE.s) -o $@ $(@:$(OBJ_DIR)/%.o=util/%.s)
$(OBJ_DIR)/SS_Memory.o: mem/SS_Memory.s
@echo
@echo assembling $@
@echo
$(COMPILE.s) $< -o $@ mem/SS_Memory.s
install:
@echo "Can't make install from a subdir"
clean:
$(RM) -f $(OBJ_DIR)
include $(TOP_DIR)/Makefile.rules
# ----------------------------------------------------------------------