[processor-sdk/pdk.git] / packages / ti / board / diag / uart / build / am65xx_idk / armv7 / 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 ARMV7LIBDIR ?= ./lib
47 # Cross tools
48 # Set compiler/archiver/linker commands and include paths
49 CODEGEN_INCLUDE = $(TOOLCHAIN_PATH_R5)/include
50 CC = $(TOOLCHAIN_PATH_R5)/bin/armcl
51 AR = $(TOOLCHAIN_PATH_R5)/bin/armar
52 LNK = $(TOOLCHAIN_PATH_R5)/bin/armlnk
53 SIZE = $(TOOLCHAIN_PATH_R5)/bin/armofd
54 RTSLIB_NAME = rtsv7R4_A_le_v3D16_eabi.lib
56 # INCLUDE Directories
57 CSL_DIR = $(PDK_INSTALL_PATH)/ti/csl/
58 INCDIR := $(CSL_DIR);$(PDK_INSTALL_PATH);$(PDK_DIAG_DIR);$(PDK_DIAG_DIR)/src/$(BOARD)/include;$(PDK_DIAG_DIR)/diag/common/$(DEVICE);$(CODEGEN_INCLUDE);$(PDK_DIAG_DIR)/src/evmKeystone3/include
60 # Libraries
61 BOARD_LIB = "$(PDK_DIAG_DIR)/lib/$(BOARD)/r5f/release/ti.board.aer5f"
62 UART_LIB = "$(PDK_INSTALL_PATH)/ti/drv/uart/lib/am65xx/r5f/release/ti.drv.uart.aer5f"
63 I2C_LIB = "$(PDK_INSTALL_PATH)/ti/drv/i2c/lib/am65xx/r5f/release/ti.drv.i2c.aer5f"
64 CSL_LIB = "$(PDK_INSTALL_PATH)/ti/csl/lib/am65xx/r5f/release/ti.csl.aer5f"
65 CSL_INIT_LIB = "$(PDK_INSTALL_PATH)/ti/csl/lib/am65xx/r5f/release/ti.csl.init.aer5f"
66 OSAL_LIB = "$(PDK_INSTALL_PATH)/ti/osal/lib/nonos/am65xx/r5f/release/ti.osal.aer5f"
67 SCICLIENT_LIB = "$(PDK_INSTALL_PATH)/ti/drv/sciclient/lib/am65xx/mcu1_0/release/sciclient.aer5f"
68 PERIPHERAL_LIB = $(UART_LIB) $(I2C_LIB) $(CSL_LIB) $(CSL_INIT_LIB) $(SCICLIENT_LIB)
70 RTSLIB_PATH = "$(TOOLCHAIN_PATH_R5)/lib/libc.a"
71 LNK_LIBS = -l$(PERIPHERAL_LIB) -l$(BOARD_LIB) -l$(OSAL_LIB) $(RTSLIB_PATH)
73 # Compiler options
74 INTERNALDEFS = -g -ms -DMAKEFILE_BUILD -c -qq -pdsw225 $(DEBUG_FLAG) -D$(BOARD) -DSOC_$(DEVICE) --endian=little -mv7R5 --abi=eabi -eo.oer5f -ea.ser5f --symdebug:dwarf --embed_inline_assembly --float_support=vfpv3d16 -ms -oe -op0 -os --optimize_with_debug --inline_recursion_limit=20 -DBUILD_MCU1_0 -DBUILD_MCU -DBARE_METAL
76 # Linker options
77 INTERNALLINKDEFS = --emit_warnings_as_errors -w -q -u _c_int00 $(PDK_DIAG_DIR)/diag/common/$(DEVICE)/linker_r5.lds -c -mv7R5 --diag_suppress=10063 --opt='--float_support=vfpv3d16 --endian=little -mv7R5 --abi=eabi -qq -pdsw225 -g -ms -DMAKEFILE_BUILD -oe --symdebug:dwarf -ms -op2 -os --optimize_with_debug --inline_recursion_limit=20 --diag_suppress=23000' --strict_compatibility=on -x --zero_init=on $(LNK_LIBS)
79 # Executable using device independent library and device object file
80 ifeq ($(TESTMODE),STRESS_TEST)
81 EXE=uartStress_diagExample_$(BOARD)_$(TARGET).xer5f
82 else
83 ifeq ($(TESTMODE),COMPLIANCE_TEST)
84 EXE=uartCompliance_diagExample_$(BOARD)_$(TARGET).out
85 else
86 EXE=uart_diagExample_$(BOARD)_$(TARGET).out
87 endif
88 endif
90 OBJEXT = oer5f
91 ASMOBJEXT = oer5f
92 SRCDIR = $(PDK_DIAG_DIR)/diag/uart/src
94 INCS = -I. -I$(strip $(subst ;, -I,$(INCDIR)))
96 VPATH=$(SRCDIR):$(PDK_DIAG_DIR)/diag/common/$(DEVICE):$(PDK_INSTALL_PATH)/ti/drv/uart/soc/am65xx:$(PDK_INSTALL_PATH)/ti/drv/i2c/soc/am65xx
98 #List the Source Files
99 ifeq ($(TESTMODE),STRESS_TEST)
100 TEST_SRC = uart_stress_test.c
101 else
102 TEST_SRC = uart_diag.c
103 endif
105 TEST_SRC_DEV =
107 #Common entry object
108 ENTRY_SRC = diag_entry_r5.asm
110 #Common diagnostic source objects
111 DIAG_SRC = diag_common_cfg.c
113 # FLAGS for the SourceFiles
114 CFLAGS += -O2
115 SRC_CFLAGS = -I. $(CFLAGS) -g -eo.$(OBJEXT) -ea.$(ASMOBJEXT)
117 # Make Rule for the SRC Files
118 TEST_SRC_OBJS = $(patsubst %.c, $(DIAGOBJDIR)/%.$(OBJEXT), $(TEST_SRC))
119 ENTRY_OBJ = $(patsubst %.asm, $(DIAGOBJDIR)/%.$(ASMOBJEXT), $(ENTRY_SRC))
120 TEST_SRC_DEV_OBJS = $(patsubst %.c, $(DIAGOBJDIR)/%.$(OBJEXT), $(TEST_SRC_DEV))
121 DIAG_SRC_OBJS = $(patsubst %.c, $(DIAGOBJDIR)/%.$(OBJEXT), $(DIAG_SRC))
123 NUM_PROCS = 1
125 ifeq ($(OS),Windows_NT)
126 NUM_PROCS = $(NUMBER_OF_PROCESSORS)
127 else
128 NUM_PROCS = $(shell grep -c ^processor /proc/cpuinfo)
129 endif
131 BUILD_LIB_ONCE = $(TOOLCHAIN_PATH_R5)/lib/$(RTSLIB_NAME)
133 all:$(DIAGBINDIR)/$(EXE)
135 $(DIAGBINDIR)/$(EXE): $(TEST_SRC_OBJS) $(TEST_SRC_DEV_OBJS) $(ENTRY_OBJ) $(DIAG_SRC_OBJS) $(DIAGBINDIR)/.created $(DIAGOBJDIR)/.created $(BUILD_LIB_ONCE)
136 @echo linking $(TEST_SRC_OBJS) $(TEST_SRC_DEV_OBJS) $(ENTRY_OBJ) $(DIAG_SRC_OBJS) into $@ ...
137 @$(LNK) $(TEST_SRC_OBJS) $(TEST_SRC_DEV_OBJS) $(ENTRY_OBJ) $(DIAG_SRC_OBJS) $(INTERNALLINKDEFS) -m"$(DIAGBINDIR)/uart_$(BOARD).map" -o $@
139 $(DIAGOBJDIR)/%.$(OBJEXT): %.c $(DIAGOBJDIR)/.created
140 @echo compiling $< ...
141 @$(CC) -c $(SRC_CFLAGS) $(INTERNALDEFS) $(INCS) -fr=$(DIAGOBJDIR) -fs=$(DIAGOBJDIR) -fc $<
143 $(DIAGOBJDIR)/%.$(ASMOBJEXT): %.asm $(DIAGOBJDIR)/.created
144 @echo compiling $< ...
145 @$(CC) -c $(SRC_CFLAGS) $(INTERNALDEFS) $(INCS) -fr=$(DIAGOBJDIR) -fs=$(DIAGOBJDIR) -fa $<
147 $(DIAGOBJDIR)/.created:
148 @mkdir -p $(DIAGOBJDIR)
149 @touch $(DIAGOBJDIR)/.created
151 $(DIAGBINDIR)/.created:
152 @mkdir -p $(DIAGBINDIR)
153 @touch $(DIAGBINDIR)/.created
155 $(BUILD_LIB_ONCE):
156 @echo \# $@ not found, building $@ ...
157 @$(TOOLCHAIN_PATH_R5)/lib/mklib --pattern=$(RTSLIB_NAME) --parallel=$(NUM_PROCS) --compiler_bin_dir=$(TOOLCHAIN_PATH_R5)/bin
159 clean:
160 @rm -f $(DIAGBINDIR)/$(EXE)
161 @rm -f $(TEST_SRC_OBJS) $(TEST_SRC_DEV_OBJS) $(ENTRY_OBJ) $(DIAGBINDIR)/.created $(DIAGBINDIR)/*.map $(DIAGOBJDIR)/.created