• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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