1# Copyright (c) 2023 Institute of Parallel And Distributed Systems (IPADS), Shanghai Jiao Tong University (SJTU) 2# Licensed under the Mulan PSL v2. 3# You can use this software according to the terms and conditions of the Mulan PSL v2. 4# You may obtain a copy of Mulan PSL v2 at: 5# http://license.coscl.org.cn/MulanPSL2 6# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR 7# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR 8# PURPOSE. 9# See the Mulan PSL v2 for more details. 10 11CFLAGS := $(DEFAULT_USER_CFLAGS) -Iinclude 12LDFLAGS := $(DEFAULT_STATIC_USER_LDFLAGS) -pie 13SRCS := $(wildcard *.c) 14SRCS += libs/libchcoreelf/libchcoreelf.c 15SRCS += libs/liblaunch/liblaunch.c 16 17# link fsm.srv and tmpfs.srv to procmgr.srv 18INCBINS := fsm tmpfs 19INCBINS_SRC := $(INCBINS:%=%.incbin.S) 20 21.PHONY: fsm.srv tmpfs.srv $(INCBINS_SRC) 22fsm.srv: $(SERVER_DIR)/fsm/fsm.srv 23 $(Q)cp $< . 24tmpfs.srv: $(SERVER_DIR)/tmpfs/tmpfs.srv 25 $(Q)cp $< . 26 27$(INCBINS_SRC): %.incbin.S: incbin_basic_srv.tpl.S %.srv 28 $(Q)sed 's/$${_binary_name}/$*_elf/g;s/$${_binary_path}/$*.srv/g' $< > $@ 29 30SRCS += $(INCBINS_SRC) 31OBJS := $(SRCS:%=%.o) 32DEPS := $(OBJS:.o=.d) 33 34TOOL_DIR = $(ROOT_DIR)/tools/read_procmgr_elf_tool 35read_procmgr_elf_tool: $(TOOL_DIR)/elf.c $(TOOL_DIR)/main.c 36 clang $^ -o $@ 37 38procmgr.srv: linker.ld $(OBJS) 39 $(Q)$(CC) -Wl,-T,$< $(LDFLAGS) $(OBJS) -o $@ 40 41procmgr.bin: procmgr.srv 42 $(Q)$(OBJCOPY) -O binary -S $< $@ 43 44procmgr: procmgr.srv read_procmgr_elf_tool 45 $(Q)./read_procmgr_elf_tool procmgr.srv 46 $(Q)cp procmgr.srv procmgr 47 $(Q)exec 3<>procmgr && cat elf_info.temp >&3 48 $(Q)rm -f elf_info.temp 49 50clean: 51 $(Q)rm -f $(OBJS) $(DEPS) procmgr.srv procmgr.bin procmgr fsm.srv tmpfs.srv $(INCBINS_SRC) read_procmgr_elf_tool 52 53-include $(DEPS) 54 55$(OBJS): %.o: % 56 $(Q)$(CC) $(CFLAGS) -c $< -o $@ -MMD 57