embox

Форк
0
/
Makefile 
116 строк · 5.5 Кб
1

2
ifeq ($(ROOT_DIR),)
3
$(error ROOT_DIR is not set.)
4
endif
5

6
ifeq ($(THIRDPARTY_DIR),)
7
$(error THIRDPARTY_DIR is not set.)
8
endif
9

10
AT=
11

12
DEVICE=TI816X
13
GPPOS=Embox
14
LOADER=ELF
15
SYSLINK_INSTALL_DIR=$(realpath $(THIRDPARTY_DIR))/ti/syslink_2_21_01_05
16
IPC_INSTALL_DIR=$(realpath $(THIRDPARTY_DIR))/ti/ipc_1_24_00_16
17
CGT_ARM_PREFIX=/<prefix>/arm-none-linux-gnueabi-
18
EMBOXKERNEL=$(realpath $(ROOT_DIR))
19

20
SYSLINK_BUILD_DEBUG=1
21
SYSLINK_BUILD_OPTIMIZE=0
22
SYSLINK_TRACE_ENABLE=1
23
SYSLINK_NOTIFYDRIVER=NOTIFYDRIVERSHM
24
SYSLINK_TRANSPORT=TRANSPORTSHM
25

26
SYSLINK_DRIVER=$(SYSLINK_INSTALL_DIR)/packages/ti/syslink/bin/TI816X/syslink.o
27
SYSLINK_LIB=$(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.o_debug
28
SYSLINK_SLAVELOADER=$(SYSLINK_INSTALL_DIR)/packages/ti/syslink/bin/TI816X/samples/slaveloader_debug.o
29

30
EMBOX_IMPORTED_CPPFLAGS += -I$(abspath .)/include
31
EMBOX_IMPORTED_CPPFLAGS += $(filter -I%,$(EMBOX_CPPFLAGS))
32
EMBOX_IMPORTED_CPPFLAGS += $(filter -nostdinc,$(EMBOX_CPPFLAGS))
33
EMBOX_IMPORTED_CPPFLAGS += $(filter -D__EMBOX__,$(EMBOX_CPPFLAGS))
34

35
EMBOX_IMPORTED_CFLAGS   += $(EMBOX_IMPORTED_CPPFLAGS)
36
EMBOX_IMPORTED_CXXFLAGS += $(EMBOX_IMPORTED_CPPFLAGS)
37

38
EMBOX_IMPORTED_CFLAGS   += $(filter -fno-common,$(EMBOX_CFLAGS))
39
EMBOX_IMPORTED_CFLAGS   += $(filter -march%,$(EMBOX_CFLAGS))
40
EMBOX_IMPORTED_CFLAGS   += $(filter -fno-stack-protector,$(EMBOX_CFLAGS))
41
EMBOX_IMPORTED_CFLAGS   += $(filter -std=gnu99,$(EMBOX_CFLAGS))
42
EMBOX_IMPORTED_CFLAGS   += $(filter -mlittle-endian,$(EMBOX_CFLAGS))
43
EMBOX_IMPORTED_CFLAGS   += $(filter -mabi%,$(EMBOX_CFLAGS))
44
EMBOX_IMPORTED_CFLAGS   += $(filter -mapcs,$(EMBOX_CFLAGS))
45
EMBOX_IMPORTED_CFLAGS   += $(filter -msoft-float,$(EMBOX_CFLAGS))
46
EMBOX_IMPORTED_CFLAGS   += $(filter -g,$(EMBOX_CFLAGS))
47

48
EMBOX_IMPORTED_CXXFLAGS += $(subst .,$(ROOT_DIR),$(filter -I%,$(EMBOX_CXXFLAGS)))
49
EMBOX_IMPORTED_CXXFLAGS += $(filter -fno-common,$(EMBOX_CXXFLAGS))
50
EMBOX_IMPORTED_CXXFLAGS += $(filter -march%,$(EMBOX_CXXFLAGS))
51
EMBOX_IMPORTED_CXXFLAGS += $(filter -std=gnu99,$(EMBOX_CXXFLAGS))
52
EMBOX_IMPORTED_CXXFLAGS += $(filter -mlittle-endian,$(EMBOX_CXXFLAGS))
53
EMBOX_IMPORTED_CXXFLAGS += $(filter -mabi%,$(EMBOX_CXXFLAGS))
54
EMBOX_IMPORTED_CXXFLAGS += $(filter -mapcs,$(EMBOX_CXXFLAGS))
55
EMBOX_IMPORTED_CXXFLAGS += $(filter -msoft-float,$(EMBOX_CXXFLAGS))
56
EMBOX_IMPORTED_CXXFLAGS += $(filter -g,$(EMBOX_CXXFLAGS))
57

58
EMBOX_IMPORTED_MAKEFLAGS += $(filter -j,$(EMBOX_MAKEFLAGS))
59
ifneq ($(filter -j,$(EMBOX_MAKEFLAGS)),)
60
EMBOX_IMPORTED_MAKEFLAGS += $(shell nproc)
61
endif
62
# no wonder the following doesn't work
63
# EMBOX_IMPORTED_MAKEFLAGS += $(filter --jobserver-fds=%,$(EMBOX_MAKEFLAGS))
64

65
EMBOX_DERIVED_CFLAGS    += $(EMBOX_IMPORTED_CFLAGS) -fvisibility=hidden
66
EMBOX_DERIVED_CXXFLAGS  += $(EMBOX_IMPORTED_CXXFLAGS)  -fvisibility=hidden
67
EMBOX_DERIVED_MAKEFLAGS += $(EMBOX_IMPORTED_MAKEFLAGS)
68

69
all: syslink-driver syslink-lib syslink-slaveloader
70

71
syslink-driver: $(SYSLINK_DRIVER)
72

73
syslink-lib: $(SYSLINK_LIB)
74

75
syslink-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 \
81
		DEVICE=$(DEVICE) GPPOS=$(GPPOS) LOADER=$(LOADER) EMBOXKERNEL=$(EMBOXKERNEL) \
82
		SYSLINK_INSTALL_DIR=$(SYSLINK_INSTALL_DIR) IPC_INSTALL_DIR=$(IPC_INSTALL_DIR) \
83
		SYSLINK_BUILD_DEBUG=$(SYSLINK_BUILD_DEBUG) SYSLINK_BUILD_OPTIMIZE=$(SYSLINK_BUILD_OPTIMIZE) \
84
		SYSLINK_TRACE_ENABLE=$(SYSLINK_TRACE_ENABLE) \
85
		SYSLINK_NOTIFYDRIVER=$(SYSLINK_NOTIFYDRIVER) SYSLINK_TRANSPORT=$(SYSLINK_TRANSPORT) \
86
		CFLAGS='$(EMBOX_DERIVED_CFLAGS) -D__EMBOX_KERNEL__' CXXFLAGS='$(EMBOX_DERIVED_CXXFLAGS) -D__EMBOX_KERNEL__' \
87
		CC=$(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 \
91
		DEVICE=$(DEVICE) GPPOS=$(GPPOS) LOADER=$(LOADER) EMBOXKERNEL=$(EMBOXKERNEL) \
92
		SYSLINK_INSTALL_DIR=$(SYSLINK_INSTALL_DIR) IPC_INSTALL_DIR=$(IPC_INSTALL_DIR) \
93
		SYSLINK_BUILD_DEBUG=$(SYSLINK_BUILD_DEBUG) SYSLINK_BUILD_OPTIMIZE=$(SYSLINK_BUILD_OPTIMIZE) \
94
		SYSLINK_TRACE_ENABLE=$(SYSLINK_TRACE_ENABLE) \
95
		SYSLINK_NOTIFYDRIVER=$(SYSLINK_NOTIFYDRIVER) SYSLINK_TRANSPORT=$(SYSLINK_TRANSPORT) \
96
		CFLAGS='$(EMBOX_DERIVED_CFLAGS)' CXXFLAGS='$(EMBOX_DERIVED_CXXFLAGS)' \
97
		CC=$(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 \
101
		DEVICE=$(DEVICE) GPPOS=$(GPPOS) LOADER=$(LOADER) EMBOXKERNEL=$(EMBOXKERNEL) \
102
		SYSLINK_INSTALL_DIR=$(SYSLINK_INSTALL_DIR) IPC_INSTALL_DIR=$(IPC_INSTALL_DIR) \
103
		SYSLINK_BUILD_DEBUG=$(SYSLINK_BUILD_DEBUG) SYSLINK_BUILD_OPTIMIZE=$(SYSLINK_BUILD_OPTIMIZE) \
104
		SYSLINK_TRACE_ENABLE=$(SYSLINK_TRACE_ENABLE) \
105
		SYSLINK_NOTIFYDRIVER=$(SYSLINK_NOTIFYDRIVER) SYSLINK_TRANSPORT=$(SYSLINK_TRANSPORT) \
106
		CFLAGS='$(EMBOX_DERIVED_CFLAGS)' CXXFLAGS='$(EMBOX_DERIVED_CXXFLAGS)' \
107
		CC=$(EMBOX_CC) CXX=$(EMBOX_CXX) LD=$(EMBOX_LD) OBJCOPY=$(EMBOX_OBJCOPY)
108

109
clean:
110
	-$(MAKE) -C $(realpath $(THIRDPARTY_DIR))/ti/syslink_2_21_01_05/packages clean \
111
		DEVICE=$(DEVICE) GPPOS=$(GPPOS) LOADER=$(LOADER) EMBOXKERNEL=$(EMBOXKERNEL) \
112
		SYSLINK_INSTALL_DIR=$(SYSLINK_INSTALL_DIR) IPC_INSTALL_DIR=$(IPC_INSTALL_DIR) \
113
		SYSLINK_BUILD_DEBUG=$(SYSLINK_BUILD_DEBUG) SYSLINK_BUILD_OPTIMIZE=$(SYSLINK_BUILD_OPTIMIZE) \
114
		SYSLINK_TRACE_ENABLE=$(SYSLINK_TRACE_ENABLE) \
115
		SYSLINK_NOTIFYDRIVER=$(SYSLINK_NOTIFYDRIVER) SYSLINK_TRANSPORT=$(SYSLINK_TRANSPORT) \
116
		CFLAGS='$(EMBOX_DERIVED_CFLAGS)' CXXFLAGS='$(EMBOX_DERIVED_CXXFLAGS)' \
117
		CC=$(EMBOX_CC) CXX=$(EMBOX_CXX) LD=$(EMBOX_LD) OBJCOPY=$(EMBOX_OBJCOPY)
118

119

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.