1 #
2 # Macro definitions referenced below
3 #
5 empty =
6 space =$(empty) $(empty)
8 ARMV7OBJDIR ?= ./obj/$(DEVICE)
9 ARMV7BINDIR ?= ./bin/$(DEVICE)
10 ARMV7LIBDIR ?= ./lib
12 ARMV7OBJDIR := $(ARMV7OBJDIR)/icss_emac/test
13 ARMV7BINDIR := $(ARMV7BINDIR)/icss_emac/test
15 #Cross tools
16 ifdef CROSS_TOOL_INSTALL_PATH
17 # Support backwards compatibility with KeyStone1 approach
18 CC = $(CROSS_TOOL_INSTALL_PATH)/$(CROSS_TOOL_PRFX)gcc
19 AC = $(CROSS_TOOL_INSTALL_PATH)/$(CROSS_TOOL_PRFX)as
20 AR = $(CROSS_TOOL_INSTALL_PATH)/$(CROSS_TOOL_PRFX)ar
21 LD = $(CROSS_TOOL_INSTALL_PATH)/$(CROSS_TOOL_PRFX)gcc
22 endif
24 # INCLUDE Directories
25 ICSS_EMAC_INC_DIR = $(PDK_INSTALL_PATH)/ti/drv/icss_emac
26 PRUSS_INC_DIR = $(PDK_INSTALL_PATH)/ti/drv/pruss
28 ICSS_EMAC_SRC_DIR ?= $(PDK_INSTALL_PATH)/ti/drv/icss_emac
29 ICSS_EMAC_TEST_DIR = $(ICSS_EMAC_SRC_DIR)/test
30 ICSS_EMAC_ARM_LIN_TEST_DIR = $(ICSS_EMAC_TEST_DIR)/src/armv7/linux
31 ICSS_EMAC_DEVICE_DIR = $(ICSS_EMAC_SRC_DIR)/soc/$(DEVICE)
32 ICSS_EMAC_FW_DIR = $(ICSS_EMAC_SRC_DIR)/firmware/icss_dualemac/config
34 INCDIR := $(PDK_INSTALL_PATH);$(ICSS_EMAC_INC_DIR);$(PRUSS_INC_DIR);$(ICSS_EMAC_TEST_DIR)/../../../..;\
35 $(ICSS_EMAC_ARM_LIN_TEST_DIR)
37 # Libraries
38 ICSS_EMAC_LIB = -licss_emac
39 PRUSS_LIB = -L $(PDK_INSTALL_PATH)/ti/drv/pruss/lib -lpruss
40 OSAL_LIB = -L $(PDK_INSTALL_PATH)/ti/osal/lib/linux -losal
42 # Firmware
43 FW_BIN_PATH = $(PDK_PKG_PATH)/ti/drv/icss_emac/firmware/icss_dualemac/bin/k2g/a15_0
44 FW_LIB_PRU0 = $(FW_BIN_PATH)/REV2/icss_dualemac_PRU0.bin
45 FW_LIB_PRU1 = $(FW_BIN_PATH)/REV2/icss_dualemac_PRU1.bin
46 FW_LNK_CMD_REV2 = $(PDK_PKG_PATH)/ti/build/pruss/lnk_a8_a9_a15_REV2_linux.cmd
48 ifeq ($(USEDYNAMIC_LIB), yes)
49 #presuming ARM executable would depend on dynamic library dependency
50 EXE_EXTN = _so
51 LIBS = $(OSAL_LIB) $(PRUSS_LIB) $(ICSS_EMAC_LIB)
52 else
53 #forcing ARM executable to depend on static LLD libraries
54 EXE_EXTN =
55 LIBS = -Wl,-Bstatic $(OSAL_LIB) $(PRUSS_LIB) $(ICSS_EMAC_LIB) -Wl,-Bdynamic
56 endif
59 # Compiler options
60 INTERNALDEFS = $(DEBUG_FLAG) -D__ARMv7 -D__LINUX_USER_SPACE -D_LITTLE_ENDIAN=1 -DMAKEFILE_BUILD -D_GNU_SOURCE -DSOC_K2G -DiceK2G
61 # -DUIO_INTERRUPT_ONE_SHOT_MODE
63 # Linker options
64 INTERNALLINKDEFS = -Wl,--start-group -L $(ARMV7LIBDIR) $(LIBS) -lrt -Wl,--end-group -pthread $(LDFLAGS)
66 MAIN_TEST_EXE=icss_emacMainTest$(EXE_EXTN).out
68 OBJEXT = o
70 SRCDIR = $(ICSS_EMAC_TEST_DIR)/src:$(ICSS_EMAC_ARM_LIN_TEST_DIR):$(ICSS_EMAC_DEVICE_DIR):$(ICSS_EMAC_FW_DIR):
72 INCS = -I. -I$(strip $(subst ;, -I,$(INCDIR)))
74 VPATH=$(SRCDIR)
76 #List the Source Files
77 DEVICE_TEST_SRC = \
78 icss_emacSoc.c \
79 icss_emacFwConfig.c
81 OSAL_TEST_SRC = \
82 mmap_helper.c
84 MAIN_TEST_SRC = \
85 main_k2g.c \
86 test_common_utils.c
88 # FLAGS for the SourceFiles
89 SRC_CFLAGS = -I. $(CFLAGS)
91 # Make Rule for the SRC Files
92 DEVICE_TEST_SRC_OBJS = $(patsubst %.c, $(ARMV7OBJDIR)/%.$(OBJEXT), $(DEVICE_TEST_SRC))
93 OSAL_TEST_SRC_OBJS = $(patsubst %.c, $(ARMV7OBJDIR)/%.$(OBJEXT), $(OSAL_TEST_SRC))
94 MAIN_TEST_SRC_OBJS = $(patsubst %.c, $(ARMV7OBJDIR)/%.$(OBJEXT), $(MAIN_TEST_SRC))
96 all:$(ARMV7BINDIR)/$(MAIN_TEST_EXE)
98 $(ARMV7BINDIR)/$(MAIN_TEST_EXE): $(MAIN_TEST_SRC_OBJS) $(OSAL_TEST_SRC_OBJS) $(DEVICE_TEST_SRC_OBJS) $(ARMV7BINDIR)/.created
99 @echo linking $(MAIN_TEST_SRC_OBJS) $(OSAL_TEST_SRC_OBJS) $(DEVICE_TEST_SRC_OBJS) ${FW_LIB_PRU0} ${FW_LIB_PRU1} ${FW_LNK_CMD_REV2} into $@ ...
100 @$(CC) $(MAIN_TEST_SRC_OBJS) $(OSAL_TEST_SRC_OBJS) $(DEVICE_TEST_SRC_OBJS) ${FW_LIB_PRU0} ${FW_LIB_PRU1} ${FW_LNK_CMD_REV2} $(INTERNALLINKDEFS) -o $@
102 $(ARMV7OBJDIR)/%.$(OBJEXT): %.c $(ARMV7OBJDIR)/.created
103 @echo compiling $< ...
104 @$(CC) -c $(SRC_CFLAGS) $(INTERNALDEFS) $(INCS) $< -o $@
106 $(ARMV7OBJDIR)/.created:
107 @mkdir -p $(ARMV7OBJDIR)
108 @touch $(ARMV7OBJDIR)/.created
110 $(ARMV7BINDIR)/.created:
111 @mkdir -p $(ARMV7BINDIR)
112 @touch $(ARMV7BINDIR)/.created
114 clean:
115 @rm -fr $(ARMV7OBJDIR)
116 @rm -fr $(ARMV7BINDIR)