embox
116 строк · 5.5 Кб
1
2ifeq ($(ROOT_DIR),)
3$(error ROOT_DIR is not set.)
4endif
5
6ifeq ($(THIRDPARTY_DIR),)
7$(error THIRDPARTY_DIR is not set.)
8endif
9
10AT=
11
12DEVICE=TI816X
13GPPOS=Embox
14LOADER=ELF
15SYSLINK_INSTALL_DIR=$(realpath $(THIRDPARTY_DIR))/ti/syslink_2_21_01_05
16IPC_INSTALL_DIR=$(realpath $(THIRDPARTY_DIR))/ti/ipc_1_24_00_16
17CGT_ARM_PREFIX=/<prefix>/arm-none-linux-gnueabi-
18EMBOXKERNEL=$(realpath $(ROOT_DIR))
19
20SYSLINK_BUILD_DEBUG=1
21SYSLINK_BUILD_OPTIMIZE=0
22SYSLINK_TRACE_ENABLE=1
23SYSLINK_NOTIFYDRIVER=NOTIFYDRIVERSHM
24SYSLINK_TRANSPORT=TRANSPORTSHM
25
26SYSLINK_DRIVER=$(SYSLINK_INSTALL_DIR)/packages/ti/syslink/bin/TI816X/syslink.o
27SYSLINK_LIB=$(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.o_debug
28SYSLINK_SLAVELOADER=$(SYSLINK_INSTALL_DIR)/packages/ti/syslink/bin/TI816X/samples/slaveloader_debug.o
29
30EMBOX_IMPORTED_CPPFLAGS += -I$(abspath .)/include
31EMBOX_IMPORTED_CPPFLAGS += $(filter -I%,$(EMBOX_CPPFLAGS))
32EMBOX_IMPORTED_CPPFLAGS += $(filter -nostdinc,$(EMBOX_CPPFLAGS))
33EMBOX_IMPORTED_CPPFLAGS += $(filter -D__EMBOX__,$(EMBOX_CPPFLAGS))
34
35EMBOX_IMPORTED_CFLAGS += $(EMBOX_IMPORTED_CPPFLAGS)
36EMBOX_IMPORTED_CXXFLAGS += $(EMBOX_IMPORTED_CPPFLAGS)
37
38EMBOX_IMPORTED_CFLAGS += $(filter -fno-common,$(EMBOX_CFLAGS))
39EMBOX_IMPORTED_CFLAGS += $(filter -march%,$(EMBOX_CFLAGS))
40EMBOX_IMPORTED_CFLAGS += $(filter -fno-stack-protector,$(EMBOX_CFLAGS))
41EMBOX_IMPORTED_CFLAGS += $(filter -std=gnu99,$(EMBOX_CFLAGS))
42EMBOX_IMPORTED_CFLAGS += $(filter -mlittle-endian,$(EMBOX_CFLAGS))
43EMBOX_IMPORTED_CFLAGS += $(filter -mabi%,$(EMBOX_CFLAGS))
44EMBOX_IMPORTED_CFLAGS += $(filter -mapcs,$(EMBOX_CFLAGS))
45EMBOX_IMPORTED_CFLAGS += $(filter -msoft-float,$(EMBOX_CFLAGS))
46EMBOX_IMPORTED_CFLAGS += $(filter -g,$(EMBOX_CFLAGS))
47
48EMBOX_IMPORTED_CXXFLAGS += $(subst .,$(ROOT_DIR),$(filter -I%,$(EMBOX_CXXFLAGS)))
49EMBOX_IMPORTED_CXXFLAGS += $(filter -fno-common,$(EMBOX_CXXFLAGS))
50EMBOX_IMPORTED_CXXFLAGS += $(filter -march%,$(EMBOX_CXXFLAGS))
51EMBOX_IMPORTED_CXXFLAGS += $(filter -std=gnu99,$(EMBOX_CXXFLAGS))
52EMBOX_IMPORTED_CXXFLAGS += $(filter -mlittle-endian,$(EMBOX_CXXFLAGS))
53EMBOX_IMPORTED_CXXFLAGS += $(filter -mabi%,$(EMBOX_CXXFLAGS))
54EMBOX_IMPORTED_CXXFLAGS += $(filter -mapcs,$(EMBOX_CXXFLAGS))
55EMBOX_IMPORTED_CXXFLAGS += $(filter -msoft-float,$(EMBOX_CXXFLAGS))
56EMBOX_IMPORTED_CXXFLAGS += $(filter -g,$(EMBOX_CXXFLAGS))
57
58EMBOX_IMPORTED_MAKEFLAGS += $(filter -j,$(EMBOX_MAKEFLAGS))
59ifneq ($(filter -j,$(EMBOX_MAKEFLAGS)),)
60EMBOX_IMPORTED_MAKEFLAGS += $(shell nproc)
61endif
62# no wonder the following doesn't work
63# EMBOX_IMPORTED_MAKEFLAGS += $(filter --jobserver-fds=%,$(EMBOX_MAKEFLAGS))
64
65EMBOX_DERIVED_CFLAGS += $(EMBOX_IMPORTED_CFLAGS) -fvisibility=hidden
66EMBOX_DERIVED_CXXFLAGS += $(EMBOX_IMPORTED_CXXFLAGS) -fvisibility=hidden
67EMBOX_DERIVED_MAKEFLAGS += $(EMBOX_IMPORTED_MAKEFLAGS)
68
69all: syslink-driver syslink-lib syslink-slaveloader
70
71syslink-driver: $(SYSLINK_DRIVER)
72
73syslink-lib: $(SYSLINK_LIB)
74
75syslink-slaveloader: $(SYSLINK_SLAVELOADER)
76
77.PHONY: all clean syslink-driver syslink-lib syslink-slaveload
78
79$(SYSLINK_DRIVER):
80$(MAKE) -C $(realpath $(THIRDPARTY_DIR))/ti/syslink_2_21_01_05/packages syslink-driver \
81DEVICE=$(DEVICE) GPPOS=$(GPPOS) LOADER=$(LOADER) EMBOXKERNEL=$(EMBOXKERNEL) \
82SYSLINK_INSTALL_DIR=$(SYSLINK_INSTALL_DIR) IPC_INSTALL_DIR=$(IPC_INSTALL_DIR) \
83SYSLINK_BUILD_DEBUG=$(SYSLINK_BUILD_DEBUG) SYSLINK_BUILD_OPTIMIZE=$(SYSLINK_BUILD_OPTIMIZE) \
84SYSLINK_TRACE_ENABLE=$(SYSLINK_TRACE_ENABLE) \
85SYSLINK_NOTIFYDRIVER=$(SYSLINK_NOTIFYDRIVER) SYSLINK_TRANSPORT=$(SYSLINK_TRANSPORT) \
86CFLAGS='$(EMBOX_DERIVED_CFLAGS) -D__EMBOX_KERNEL__' CXXFLAGS='$(EMBOX_DERIVED_CXXFLAGS) -D__EMBOX_KERNEL__' \
87CC=$(EMBOX_CC) CXX=$(EMBOX_CXX) LD=$(EMBOX_LD) OBJCOPY=$(EMBOX_OBJCOPY)
88
89$(SYSLINK_LIB):
90$(MAKE) -C $(realpath $(THIRDPARTY_DIR))/ti/syslink_2_21_01_05/packages syslink-hlos \
91DEVICE=$(DEVICE) GPPOS=$(GPPOS) LOADER=$(LOADER) EMBOXKERNEL=$(EMBOXKERNEL) \
92SYSLINK_INSTALL_DIR=$(SYSLINK_INSTALL_DIR) IPC_INSTALL_DIR=$(IPC_INSTALL_DIR) \
93SYSLINK_BUILD_DEBUG=$(SYSLINK_BUILD_DEBUG) SYSLINK_BUILD_OPTIMIZE=$(SYSLINK_BUILD_OPTIMIZE) \
94SYSLINK_TRACE_ENABLE=$(SYSLINK_TRACE_ENABLE) \
95SYSLINK_NOTIFYDRIVER=$(SYSLINK_NOTIFYDRIVER) SYSLINK_TRANSPORT=$(SYSLINK_TRANSPORT) \
96CFLAGS='$(EMBOX_DERIVED_CFLAGS)' CXXFLAGS='$(EMBOX_DERIVED_CXXFLAGS)' \
97CC=$(EMBOX_CC) CXX=$(EMBOX_CXX) LD=$(EMBOX_LD) OBJCOPY=$(EMBOX_OBJCOPY)
98
99$(SYSLINK_SLAVELOADER): $(SYSLINK_LIB)
100$(MAKE) -C $(realpath $(THIRDPARTY_DIR))/ti/syslink_2_21_01_05/packages SlaveLoader \
101DEVICE=$(DEVICE) GPPOS=$(GPPOS) LOADER=$(LOADER) EMBOXKERNEL=$(EMBOXKERNEL) \
102SYSLINK_INSTALL_DIR=$(SYSLINK_INSTALL_DIR) IPC_INSTALL_DIR=$(IPC_INSTALL_DIR) \
103SYSLINK_BUILD_DEBUG=$(SYSLINK_BUILD_DEBUG) SYSLINK_BUILD_OPTIMIZE=$(SYSLINK_BUILD_OPTIMIZE) \
104SYSLINK_TRACE_ENABLE=$(SYSLINK_TRACE_ENABLE) \
105SYSLINK_NOTIFYDRIVER=$(SYSLINK_NOTIFYDRIVER) SYSLINK_TRANSPORT=$(SYSLINK_TRANSPORT) \
106CFLAGS='$(EMBOX_DERIVED_CFLAGS)' CXXFLAGS='$(EMBOX_DERIVED_CXXFLAGS)' \
107CC=$(EMBOX_CC) CXX=$(EMBOX_CXX) LD=$(EMBOX_LD) OBJCOPY=$(EMBOX_OBJCOPY)
108
109clean:
110-$(MAKE) -C $(realpath $(THIRDPARTY_DIR))/ti/syslink_2_21_01_05/packages clean \
111DEVICE=$(DEVICE) GPPOS=$(GPPOS) LOADER=$(LOADER) EMBOXKERNEL=$(EMBOXKERNEL) \
112SYSLINK_INSTALL_DIR=$(SYSLINK_INSTALL_DIR) IPC_INSTALL_DIR=$(IPC_INSTALL_DIR) \
113SYSLINK_BUILD_DEBUG=$(SYSLINK_BUILD_DEBUG) SYSLINK_BUILD_OPTIMIZE=$(SYSLINK_BUILD_OPTIMIZE) \
114SYSLINK_TRACE_ENABLE=$(SYSLINK_TRACE_ENABLE) \
115SYSLINK_NOTIFYDRIVER=$(SYSLINK_NOTIFYDRIVER) SYSLINK_TRANSPORT=$(SYSLINK_TRANSPORT) \
116CFLAGS='$(EMBOX_DERIVED_CFLAGS)' CXXFLAGS='$(EMBOX_DERIVED_CXXFLAGS)' \
117CC=$(EMBOX_CC) CXX=$(EMBOX_CXX) LD=$(EMBOX_LD) OBJCOPY=$(EMBOX_OBJCOPY)
118
119