[processor-sdk/pdk.git] / packages / ti / board / diag / emac / build / am65xx_idk / armv8 / makefile
1 # Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/
2 #
3 #
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions
6 # are met:
7 #
8 # Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer.
10 #
11 # Redistributions in binary form must reproduce the above copyright
12 # notice, this list of conditions and the following disclaimer in the
13 # documentation and/or other materials provided with the
14 # distribution.
15 #
16 # Neither the name of Texas Instruments Incorporated nor the names of
17 # its contributors may be used to endorse or promote products derived
18 # from this software without specific prior written permission.
19 #
20 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 # Output directories
33 ifeq ($(TESTMODE),STRESS_TEST)
34 DIAGOBJDIR ?= $(PDK_DIAG_DIR)/obj/$(BOARD)/$(TARGET)/stress
35 else
36 ifeq ($(TESTMODE),COMPLIANCE_TEST)
37 DIAGOBJDIR ?= $(PDK_DIAG_DIR)/obj/$(BOARD)/$(TARGET)/compliance
38 else
39 DIAGOBJDIR ?= $(PDK_DIAG_DIR)/obj/$(BOARD)/$(TARGET)/functional
40 endif
41 endif
42 DIAGBINDIR ?= $(PDK_DIAG_DIR)/bin/$(BOARD)/$(TARGET)
44 # ARMV7 link directory that contain built peripheral libraries
45 ARMV8LIBDIR ?= ./lib
47 # Cross tools
48 CODEGEN_INCLUDE = $(TOOLCHAIN_PATH_A53)/aarch64-elf/include
49 CC = $(TOOLCHAIN_PATH_A53)/bin/aarch64-elf-gcc
50 AR = $(TOOLCHAIN_PATH_A53)/bin/aarch64-elf-ar
51 LNK = $(TOOLCHAIN_PATH_A53)/bin/aarch64-elf-gcc
52 SIZE = $(TOOLCHAIN_PATH_A53)/bin/aarch64-elf-size
54 # INCLUDE Directories
55 CSL_DIR = $(PDK_INSTALL_PATH)/ti/csl/
56 INCDIR := $(CSL_DIR);$(PDK_INSTALL_PATH);$(PDK_DIAG_DIR);$(PDK_DIAG_DIR)/src/$(BOARD)/include;$(PDK_DIAG_DIR)/diag/common/$(DEVICE)
58 # Libraries
59 BOARD_LIB = "$(PDK_DIAG_DIR)/lib/$(BOARD)/a53/release/ti.board.aa53fg"
60 UART_LIB = "$(PDK_INSTALL_PATH)/ti/drv/uart/lib/am65xx/a53/release/ti.drv.uart.aa53fg"
61 SCICLIENT_LIB = "$(PDK_INSTALL_PATH)/ti/drv/sciclient/lib/am65xx/mpu1_0/release/sciclient.aa53fg"
62 I2C_LIB = "$(PDK_INSTALL_PATH)/ti/drv/i2c/lib/am65xx/a53/release/ti.drv.i2c.aa53fg"
63 #CPPI_LIB = "$(PDK_INSTALL_PATH)/ti/drv/cppi/lib/am65xx/a53/release/ti.drv.cppi.aa53fg"
64 #QMSS_LIB = "$(PDK_INSTALL_PATH)/ti/drv/qmss/lib/am65xx/a53/release/ti.drv.qmss.aa53fg"
65 EMAC_LIB = "$(PDK_INSTALL_PATH)/ti/drv/emac/lib/am65xx/a53/release/ti.drv.emac.aa53fg"
66 CSL_LIB = "$(PDK_INSTALL_PATH)/ti/csl/lib/am65xx/a53/release/ti.csl.aa53fg"
67 CSL_INIT_LIB = "$(PDK_INSTALL_PATH)/ti/csl/lib/am65xx/a53/release/ti.csl.init.aa53fg"
68 OSAL_LIB = "$(PDK_INSTALL_PATH)/ti/osal/lib/nonos/am65xx/a53/release/ti.osal.aa53fg"
69 UDMA_LIB = "$(PDK_INSTALL_PATH)/ti/drv/udma/lib/am65xx/mpu1_0/release/udma.aa53fg"
70 PERIPHERAL_LIB = $(UART_LIB) $(I2C_LIB) $(CSL_LIB) $(CSL_INIT_LIB) $(EMAC_LIB) $(UDMA_LIB) $(SCICLIENT_LIB)
72 # Compiler options
73 INTERNALDEFS = -Wimplicit -Wall $(DEBUG_FLAG) -D__ARMv8 -D$(BOARD) -DSOC_$(DEVICE) -Wunused -Wunknown-pragmas -ffunction-sections -fdata-sections -c -mcpu=cortex-a53+fp+simd -g -mabi=lp64 -mcmodel=large -mstrict-align -mfix-cortex-a53-835769 -mfix-cortex-a53-843419 -Wno-int-to-pointer-cast -Wno-pointer-to-int-cast -Werror
75 # Linker options
76 INTERNALLINKDEFS = -Werror -Wl,-static -Wl,--gc-sections -nostartfiles -Wl,-T $(PDK_DIAG_DIR)/diag/common/$(DEVICE)/linker_a53.lds -Wl,--build-id=none --entry Entry -Wl,--start-group -l"c" -lrdimon -l"m" -l"gcc" -l"stdc++" $(BOARD_LIB) $(PERIPHERAL_LIB) $(OSAL_LIB) -Wl,--end-group $(LDFLAGS)
78 # Executable using device independent library and device object file
79 ifeq ($(TESTMODE),STRESS_TEST)
80 EXE=emacStress_diagExample_$(BOARD)_$(TARGET).out
81 else
82 ifeq ($(TESTMODE),COMPLIANCE_TEST)
83 EXE=emacCompliance_diagExample_$(BOARD)_$(TARGET).out
84 else
85 EXE=emac_diagExample_$(BOARD)_$(TARGET).out
86 endif
87 endif
89 OBJEXT = o
90 ASMOBJEXT = ao
91 SRCDIR = $(PDK_DIAG_DIR)/diag/emac/src
93 INCS = -I. -I$(strip $(subst ;, -I,$(INCDIR)))
95 VPATH=$(SRCDIR):$(PDK_DIAG_DIR)/diag/common/$(DEVICE):$(PDK_INSTALL_PATH)/ti/drv/uart/soc/am65xx:$(PDK_INSTALL_PATH)/ti/drv/i2c/soc/am65xx
97 #List the Source Files
98 TEST_SRC = \
99 emac_test.c
101 TEST_SRC_DEV =
103 #Common entry object
104 ENTRY_SRC = diag_entry.S
106 #Common diagnostic source objects
107 DIAG_SRC = diag_common_cfg.c
109 # FLAGS for the SourceFiles
110 CFLAGS += -DDIAG_$(TESTMODE) -Wall -O2
111 SRC_CFLAGS = -I. $(CFLAGS) -g -gdwarf-3 -gstrict-dwarf -Wall
113 # Make Rule for the SRC Files
114 TEST_SRC_OBJS = $(patsubst %.c, $(DIAGOBJDIR)/%.$(OBJEXT), $(TEST_SRC))
115 ENTRY_OBJ = $(patsubst %.S, $(DIAGOBJDIR)/%.$(ASMOBJEXT), $(ENTRY_SRC))
116 TEST_SRC_DEV_OBJS = $(patsubst %.c, $(DIAGOBJDIR)/%.$(OBJEXT), $(TEST_SRC_DEV))
117 DIAG_SRC_OBJS = $(patsubst %.c, $(DIAGOBJDIR)/%.$(OBJEXT), $(DIAG_SRC))
119 all:$(DIAGBINDIR)/$(EXE)
121 $(DIAGBINDIR)/$(EXE): $(TEST_SRC_OBJS) $(TEST_SRC_DEV_OBJS) $(ENTRY_OBJ) $(DIAG_SRC_OBJS) $(DIAGBINDIR)/.created $(DIAGOBJDIR)/.created
122 @echo linking $(TEST_SRC_OBJS) $(TEST_SRC_DEV_OBJS) $(ENTRY_OBJ) $(DIAG_SRC_OBJS) into $@ ...
123 @$(CC) $(TEST_SRC_OBJS) $(TEST_SRC_DEV_OBJS) $(ENTRY_OBJ) $(DIAG_SRC_OBJS) $(INTERNALLINKDEFS) -Wl,-Map=$(DIAGBINDIR)/emac_$(BOARD).map -o $@
125 $(DIAGOBJDIR)/%.$(OBJEXT): %.c $(DIAGOBJDIR)/.created
126 @echo compiling $< ...
127 @$(CC) -c $(SRC_CFLAGS) $(INTERNALDEFS) $(INCS) $< -o $@
129 $(DIAGOBJDIR)/%.$(ASMOBJEXT): %.S $(DIAGOBJDIR)/.created
130 @echo compiling $< ...
131 @$(CC) -c $(SRC_CFLAGS) $(INTERNALDEFS) $(INCS) $< -o $@
133 $(DIAGOBJDIR)/.created:
134 @mkdir -p $(DIAGOBJDIR)
135 @touch $(DIAGOBJDIR)/.created
137 $(DIAGBINDIR)/.created:
138 @mkdir -p $(DIAGBINDIR)
139 @touch $(DIAGBINDIR)/.created
141 clean:
142 @rm -f $(DIAGBINDIR)/$(EXE)
143 @rm -f $(TEST_SRC_OBJS) $(TEST_SRC_DEV_OBJS) $(ENTRY_OBJ) $(DIAGBINDIR)/.created $(DIAGBINDIR)/*.map $(DIAGOBJDIR)/.created