NJU-ProjectN/nemu ics2023 initialized
NJU-ProjectN/nemu eb63cf3568dbf4e0c3c6ef462e6ec685550fabbc Merge pull request #76 from rijuyuezhu/master
This commit is contained in:
parent
1efe03efb9
commit
2824efad33
141 changed files with 19573 additions and 0 deletions
61
nemu/Makefile
Normal file
61
nemu/Makefile
Normal file
|
@ -0,0 +1,61 @@
|
|||
#***************************************************************************************
|
||||
# Copyright (c) 2014-2022 Zihao Yu, Nanjing University
|
||||
#
|
||||
# NEMU is licensed under Mulan PSL v2.
|
||||
# You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
# You may obtain a copy of Mulan PSL v2 at:
|
||||
# http://license.coscl.org.cn/MulanPSL2
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
#
|
||||
# See the Mulan PSL v2 for more details.
|
||||
#**************************************************************************************/
|
||||
|
||||
# Sanity check
|
||||
ifeq ($(wildcard $(NEMU_HOME)/src/nemu-main.c),)
|
||||
$(error NEMU_HOME=$(NEMU_HOME) is not a NEMU repo)
|
||||
endif
|
||||
|
||||
# Include variables and rules generated by menuconfig
|
||||
-include $(NEMU_HOME)/include/config/auto.conf
|
||||
-include $(NEMU_HOME)/include/config/auto.conf.cmd
|
||||
|
||||
remove_quote = $(patsubst "%",%,$(1))
|
||||
|
||||
# Extract variabls from menuconfig
|
||||
GUEST_ISA ?= $(call remove_quote,$(CONFIG_ISA))
|
||||
ENGINE ?= $(call remove_quote,$(CONFIG_ENGINE))
|
||||
NAME = $(GUEST_ISA)-nemu-$(ENGINE)
|
||||
|
||||
# Include all filelist.mk to merge file lists
|
||||
FILELIST_MK = $(shell find -L ./src -name "filelist.mk")
|
||||
include $(FILELIST_MK)
|
||||
|
||||
# Filter out directories and files in blacklist to obtain the final set of source files
|
||||
DIRS-BLACKLIST-y += $(DIRS-BLACKLIST)
|
||||
SRCS-BLACKLIST-y += $(SRCS-BLACKLIST) $(shell find -L $(DIRS-BLACKLIST-y) -name "*.c")
|
||||
SRCS-y += $(shell find -L $(DIRS-y) -name "*.c")
|
||||
SRCS = $(filter-out $(SRCS-BLACKLIST-y),$(SRCS-y))
|
||||
|
||||
# Extract compiler and options from menuconfig
|
||||
CC = $(call remove_quote,$(CONFIG_CC))
|
||||
CFLAGS_BUILD += $(call remove_quote,$(CONFIG_CC_OPT))
|
||||
CFLAGS_BUILD += $(if $(CONFIG_CC_LTO),-flto,)
|
||||
CFLAGS_BUILD += $(if $(CONFIG_CC_DEBUG),-Og -ggdb3,)
|
||||
CFLAGS_BUILD += $(if $(CONFIG_CC_ASAN),-fsanitize=address,)
|
||||
CFLAGS_TRACE += -DITRACE_COND=$(if $(CONFIG_ITRACE_COND),$(call remove_quote,$(CONFIG_ITRACE_COND)),true)
|
||||
CFLAGS += $(CFLAGS_BUILD) $(CFLAGS_TRACE) -D__GUEST_ISA__=$(GUEST_ISA)
|
||||
LDFLAGS += $(CFLAGS_BUILD)
|
||||
|
||||
# Include rules for menuconfig
|
||||
include $(NEMU_HOME)/scripts/config.mk
|
||||
|
||||
ifdef CONFIG_TARGET_AM
|
||||
include $(AM_HOME)/Makefile
|
||||
LINKAGE += $(ARCHIVES)
|
||||
else
|
||||
# Include rules to build NEMU
|
||||
include $(NEMU_HOME)/scripts/native.mk
|
||||
endif
|
Loading…
Add table
Add a link
Reference in a new issue