forked from phoenix-rtos/phoenix-rtos-lwip
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
107 lines (82 loc) · 2.75 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#
# Makefile for phoenix-rtos-lwip
#
# Copyright 2019 Phoenix Systems
#
# %LICENSE%
#
SIL ?= @
MAKEFLAGS += --no-print-directory
#TARGET ?= ia32-qemu
#TARGET ?= armv7-stm32
TARGET ?= arm-imx6ull
TOPDIR := $(CURDIR)
PREFIX_BUILD ?= ../_build/$(TARGET)
PREFIX_BUILD := $(abspath $(PREFIX_BUILD))
BUILD_DIR ?= $(PREFIX_BUILD)/$(notdir $(TOPDIR))
BUILD_DIR := $(abspath $(BUILD_DIR))
# Compliation options for various architectures
TARGET_FAMILY = $(firstword $(subst -, ,$(TARGET)-))
include Makefile.$(TARGET_FAMILY)
# build artifacts dir
CURR_SUFFIX := $(patsubst $(TOPDIR)/%,%,$(abspath $(CURDIR))/)
PREFIX_O := $(BUILD_DIR)/$(CURR_SUFFIX)
# target install paths, can be provided exterally
PREFIX_A ?= $(PREFIX_BUILD)/lib/
PREFIX_H ?= $(PREFIX_BUILD)/include/
PREFIX_PROG ?= $(PREFIX_BUILD)/prog/
PREFIX_PROG_STRIPPED ?= $(PREFIX_BUILD)/prog.stripped/
CFLAGS += -I"$(PREFIX_H)" -Iinclude -Ilib-lwip/src/include
LDFLAGS += -L"$(PREFIX_A)"
# add include path for auto-generated files
CFLAGS += -I"$(BUILD_DIR)/$(CURR_SUFFIX)"
ARCH = $(SIL)@mkdir -p $(@D); \
(printf "AR %-24s\n" "$(@F)"); \
$(AR) $(ARFLAGS) $@ $^ 2>/dev/null
LINK = $(SIL)mkdir -p $(@D); \
(printf "LD %-24s\n" "$(@F)"); \
$(LD) $(LDFLAGS) -o "$@" $^ $(LDLIBS)
HEADER = $(SIL)mkdir -p $(@D); \
(printf "HEADER %-24s\n" "$<"); \
cp -pR "$<" "$@"
$(PREFIX_O)%.o: %.c
@mkdir -p $(@D)
$(SIL)(printf "CC %-24s\n" "$<")
$(SIL)$(CC) -c $(CFLAGS) "$<" -o "$@"
$(SIL)$(CC) -M -MD -MP -MF $(PREFIX_O)$*.c.d -MT "$@" $(CFLAGS) $<
$(PREFIX_O)%.o: %.S
@mkdir -p $(@D)
$(SIL)(printf "ASM %s/%-24s\n" "$(notdir $(@D))" "$<")
$(SIL)$(CC) -c $(CFLAGS) "$<" -o "$@"
$(SIL)$(CC) -M -MD -MP -MF $(PREFIX_O)$*.S.d -MT "$@" $(CFLAGS) $<
$(PREFIX_PROG_STRIPPED)%: $(PREFIX_PROG)%
@mkdir -p $(@D)
@(printf "STR %-24s\n" "$(@F)")
$(SIL)$(STRIP) -o $@ $<
include Makefile.$(TARGET)
all: $(PREFIX_PROG_STRIPPED)lwip
LWIPDIR := lib-lwip/src
include $(LWIPDIR)/Filelists.mk
LWIP_EXCLUDE := netif/slipif.c
LWIP_SRCS := $(filter-out $(addprefix $(LWIPDIR)/,$(LWIP_EXCLUDE)),$(LWIPNOAPPSFILES))
LWIP_OBJS := $(patsubst %.c,$(PREFIX_O)%.o,$(LWIP_SRCS))
PORT_SRCS := $(wildcard port/*.c)
PORT_OBJS := $(patsubst %.c,$(PREFIX_O)%.o,$(PORT_SRCS))
DRIVERS_SRCS = netif-driver.c
DRIVERS_SRCS_UTIL = bdring.c pktmem.c physmmap.c res-create.c
DRIVERS_SRCS_PPPOS = pppos.c
DRIVERS_SRCS_TUNTAP = tuntap.c
include Makefile.$(TARGET)
DRIVERS_OBJS := $(patsubst %.c,$(PREFIX_O)%.o,$(addprefix drivers/, $(DRIVERS_SRCS)))
CFLAGS += $(addprefix -DHAVE_DRIVER_,$(sort $(NET_DRIVERS)))
ifneq ($(EPHY_KSZ8081RND),)
CFLAGS += -DEPHY_KSZ8081RND
endif
$(PREFIX_PROG)lwip: $(LWIP_OBJS) $(PORT_OBJS) $(DRIVERS_OBJS)
$(LINK)
.PHONY: clean
clean:
@echo "rm -rf $(BUILD_DIR)"
ifneq ($(filter clean,$(MAKECMDGOALS)),)
$(shell rm -rf $(BUILD_DIR))
endif