embox
91 строка · 3.6 Кб
1EMBOX_TARGET_CC =$(shell which $(EMBOX_CROSS_COMPILE)gcc)
2EMBOX_TARGET_CXX=$(shell which $(EMBOX_CROSS_COMPILE)g++)
3
4ifeq (,$(EMBOX_TARGET_CC))
5$(error Cannot find C compiler: $(EMBOX_CROSS_COMPILE)gcc)
6endif
7ifeq (,$(EMBOX_TARGET_CXX))
8$(error Cannot find C++ compiler: $(EMBOX_CROSS_COMPILE)g++)
9endif
10
11
12AT=
13
14STLPORT_DIR = $(BUILD_DIR)
15STLPORT_FLAGS = $(STLPORT_DIR)/flags
16
17EMBOX_IMPORTED_CPPFLAGS += -I../../stlport
18EMBOX_IMPORTED_CPPFLAGS += -save-temps=obj
19EMBOX_IMPORTED_CPPFLAGS += -include $(abspath .)/stlport_embox_compat.h
20EMBOX_IMPORTED_CPPFLAGS += -DUSE_SPRINTF_INSTEAD
21EMBOX_IMPORTED_CPPFLAGS += $(filter -I%,$(EMBOX_CPPFLAGS))
22EMBOX_IMPORTED_CPPFLAGS += $(filter -nostdinc,$(EMBOX_CPPFLAGS))
23EMBOX_IMPORTED_CPPFLAGS += $(filter -D%,$(EMBOX_CPPFLAGS))
24EMBOX_IMPORTED_CPPFLAGS += $(filter -U%,$(EMBOX_CPPFLAGS))
25#EMBOX_IMPORTED_CPPFLAGS := $(filter-out -D"__impl_x%,$(EMBOX_IMPORTED_CPPFLAGS))
26
27EMBOX_IMPORTED_CFLAGS += $(EMBOX_IMPORTED_CPPFLAGS)
28EMBOX_IMPORTED_CFLAGS += $(filter -fno-common,$(EMBOX_CFLAGS))
29EMBOX_IMPORTED_CFLAGS += $(filter -march%,$(EMBOX_CFLAGS))
30EMBOX_IMPORTED_CFLAGS += $(filter -m%,$(EMBOX_CFLAGS))
31EMBOX_IMPORTED_CFLAGS += $(filter -fno-stack-protector,$(EMBOX_CFLAGS))
32EMBOX_IMPORTED_CFLAGS += $(filter -g,$(EMBOX_CFLAGS))
33EMBOX_IMPORTED_CFLAGS += $(filter -mno-unaligned-access,$(EMBOX_CFLAGS))
34EMBOX_IMPORTED_CFLAGS += -I$(abspath .)/include
35
36EMBOX_IMPORTED_CXXFLAGS += $(EMBOX_IMPORTED_CPPFLAGS)
37EMBOX_IMPORTED_CXXFLAGS += $(subst .,$(ROOT_DIR),$(filter -I%,$(EMBOX_CXXFLAGS)))
38EMBOX_IMPORTED_CXXFLAGS += $(filter -fno-common,$(EMBOX_CXXFLAGS))
39EMBOX_IMPORTED_CXXFLAGS += $(filter -march%,$(EMBOX_CXXFLAGS))
40EMBOX_IMPORTED_CXXFLAGS += $(filter -m32,$(EMBOX_CXXFLAGS))
41EMBOX_IMPORTED_CXXFLAGS += $(filter -fno-stack-protector,$(EMBOX_CXXFLAGS))
42EMBOX_IMPORTED_CXXFLAGS += $(filter -g,$(EMBOX_CXXFLAGS))
43EMBOX_IMPORTED_CXXFLAGS += $(filter -fno-rtti,$(EMBOX_CXXFLAGS))
44EMBOX_IMPORTED_CXXFLAGS += $(filter -fno-exceptions,$(EMBOX_CXXFLAGS))
45EMBOX_IMPORTED_CXXFLAGS += $(filter -fno-threadsafe-statics,$(EMBOX_CXXFLAGS))
46EMBOX_IMPORTED_CXXFLAGS += $(filter -mno-unaligned-access,$(EMBOX_CXXFLAGS))
47EMBOX_IMPORTED_CXXFLAGS += -I$(abspath .)/include
48
49EMBOX_IMPORTED_MAKEFLAGS += $(filter -j,$(EMBOX_MAKEFLAGS))
50ifneq ($(filter -j,$(EMBOX_MAKEFLAGS)),)
51EMBOX_IMPORTED_MAKEFLAGS += $(shell nproc)
52endif
53# no wonder the following doesn't work
54# EMBOX_IMPORTED_MAKEFLAGS += $(filter --jobserver-fds=%,$(EMBOX_MAKEFLAGS))
55
56ifneq (,$(filter -fno-rtti,$(EMBOX_CXXFLAGS)))
57EMBOX_RTTI_FLAG = --without-rtti
58else
59EMBOX_RTTI_FLAG =
60endif
61
62EMBOX_DERIVED_CFLAGS += $(EMBOX_IMPORTED_CFLAGS)
63EMBOX_DERIVED_CXXFLAGS += $(EMBOX_IMPORTED_CXXFLAGS)
64EMBOX_DERIVED_MAKEFLAGS += $(EMBOX_IMPORTED_MAKEFLAGS)
65EMBOX_DERIVED_RTTI_FLAG = $(EMBOX_RTTI_FLAG)
66EMBOX_DERIVED_CC = $(EMBOX_TARGET_CC)
67EMBOX_DERIVED_CXX = $(EMBOX_TARGET_CXX)
68
69
70all:
71
72.PHONY: all
73
74$(STLPORT_DIR):
75$(AT)mkdir -p $@
76
77$(STLPORT_FLAGS): | $(STLPORT_DIR)
78-$(AT)rm $@
79$(AT)echo EMBOX_DERIVED_CFLAGS=\"$(EMBOX_DERIVED_CFLAGS)\" >> $@
80$(AT)echo EMBOX_DERIVED_CXXFLAGS=\"$(EMBOX_DERIVED_CXXFLAGS)\" >> $@
81$(AT)echo EMBOX_DERIVED_MAKEFLAGS=\"$(EMBOX_DERIVED_MAKEFLAGS)\" >> $@
82$(AT)echo EMBOX_DERIVED_RTTI_FLAG=\"$(EMBOX_DERIVED_RTTI_FLAG)\" >> $@
83$(AT)echo EMBOX_DERIVED_CC=\"$(EMBOX_DERIVED_CC)\" >> $@
84$(AT)echo EMBOX_DERIVED_CXX=\"$(EMBOX_DERIVED_CXX)\" >> $@
85$(AT)echo EMBOX_ROOT=\"$(ROOT_DIR)\" >> $@
86
87$(STLPORT_DIR)/Makefile: CMakeLists.txt $(STLPORT_FLAGS) | $(STLPORT_DIR)
88$(AT)cd $(STLPORT_DIR) && $(shell cat $(STLPORT_FLAGS)) cmake $(shell pwd)
89
90all: $(STLPORT_DIR)/Makefile
91$(AT)cd $(STLPORT_DIR) && $(MAKE) # -j `nproc`
92