1 # Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/\r
2 #\r
3 #\r
4 # Redistribution and use in source and binary forms, with or without\r
5 # modification, are permitted provided that the following conditions\r
6 # are met:\r
7 #\r
8 # Redistributions of source code must retain the above copyright\r
9 # notice, this list of conditions and the following disclaimer.\r
10 #\r
11 # Redistributions in binary form must reproduce the above copyright\r
12 # notice, this list of conditions and the following disclaimer in the\r
13 # documentation and/or other materials provided with the\r
14 # distribution.\r
15 #\r
16 # Neither the name of Texas Instruments Incorporated nor the names of\r
17 # its contributors may be used to endorse or promote products derived\r
18 # from this software without specific prior written permission.\r
19 #\r
20 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
21 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
22 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
23 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
24 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
25 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
26 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
27 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
28 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
29 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
30 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
31 \r
32 MODULE =gpio\r
33 #DEVICE_LC = $(shell echo $(DEVICE) | tr A-Z a-z)\r
34 lc = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1))))))))))))))))))))))))))\r
35 ifeq ($(DEVICE),K2K)\r
36 DEVICE2 = K2H\r
37 else\r
38 DEVICE2 = $(DEVICE)\r
39 endif\r
40 DEVICE_LC = $(call lc,$(DEVICE))\r
41 ifeq ($(DEVICE_LC),k2k)\r
42 DEVICE_LC2 = k2h\r
43 else\r
44 DEVICE_LC2 = $(DEVICE_LC)\r
45 endif\r
46 \r
47 # Module directories\r
48 CSL_DIR = $(PDK_INSTALL_PATH)/ti/csl/\r
49 UART_DIR = $(PDK_INSTALL_PATH)/ti/drv/uart\r
50 GPIO_DIR = $(PDK_INSTALL_PATH)/ti/drv/$(MODULE)\r
51 OSAL_DIR = $(PDK_INSTALL_PATH)/ti/osal\r
52 BOARD_DIR = $(PDK_INSTALL_PATH)/ti/board\r
53 \r
54 # Output directories\r
55 TESTOBJDIR = $(GPIO_DIR)/test/baremetal/c66/$(DEVICE_LC)/obj\r
56 TESTBINDIR = $(GPIO_DIR)/test/baremetal/c66/$(DEVICE_LC)/bin\r
57 \r
58 # LIB Directories\r
59 CSL_LIB_DIR = $(CSL_DIR)/lib/$(DEVICE_LC)/c66\r
60 UART_LIB_DIR = $(UART_DIR)/lib/$(DEVICE_LC2)/c66\r
61 GPIO_LIB_DIR = $(GPIO_DIR)/lib/$(DEVICE_LC2)/c66\r
62 OSAL_LIB_DIR = $(OSAL_DIR)/lib/nonos/$(DEVICE_LC2)/c66\r
63 BOARD_LIB_DIR = $(BOARD_DIR)/lib/evm$(DEVICE2)/c66\r
64 \r
65 # INCLUDE Directories\r
66 INCDIR := $(CSL_DIR);$(UART_DIR);$(GPIO_DIR);$(PDK_INSTALL_PATH);$(OSAL_DIR);$(BOARD_DIR)\r
67 \r
68 # Cross tools\r
69 ifdef CGTOOLS\r
70 # Support backwards compatibility with KeyStone1 approach\r
71 CC = $(CGTOOLS)/bin/cl6x\r
72 endif\r
73 \r
74 COPTS= -g -c -mv6600 -ml3 -I $(CGTOOLS)/include\r
75 AOPTS= -g -c -mv6600 -eogem.oa\r
76 \r
77 ifeq ($(ENDIAN),big)\r
78 ifeq ($(ABI_FORMAT),coffabi)\r
79 COPTS+= -me --abi=coffabi -eo.oe66e\r
80 AOPTS+= -me --abi=coffabi -ea.se66e\r
81 else\r
82 COPTS+= -me --abi=eabi -eo.oe66e --strip_coff_underscore\r
83 AOPTS+= -me --abi=eabi -ea.se66e --strip_coff_underscore\r
84 OBJEXT = oe66e\r
85 ASMOBJEXT = se66e\r
86 endif\r
87 CSL_LIB= $(CSL_LIB_DIR)/ti.csl.ae66e\r
88 CSL_INTC_LIB= $(CSL_LIB_DIR)/ti.csl.intc.ae66e\r
89 OSAL_LIB= $(OSAL_LIB_DIR)/ti.osal.ae66e\r
90 BOARD_LIB= $(BOARD_LIB_DIR)/ti.board.ae66e\r
91 UART_LIB= $(UART_LIB_DIR)/ti.drv.uart.$(DEVICE_LC2).ae66e\r
92 GPIO_LIB= $(GPIO_LIB_DIR)/ti.drv.gpio.$(DEVICE_LC2).ae66e\r
93 else\r
94 ifeq ($(ABI_FORMAT),coffabi)\r
95 COPTS+= --abi=coffabi -eo.oe66\r
96 AOPTS+= --abi=coffabi -ea.se66\r
97 else\r
98 COPTS+= --abi=eabi -eo.oe66 --strip_coff_underscore\r
99 AOPTS+= --abi=eabi -ea.se66 --strip_coff_underscore\r
100 endif\r
101 CSL_LIB= $(CSL_LIB_DIR)/ti.csl.ae66\r
102 CSL_INTC_LIB= $(CSL_LIB_DIR)/ti.csl.intc.ae66\r
103 OSAL_LIB= $(OSAL_LIB_DIR)/ti.osal.ae66\r
104 BOARD_LIB= $(BOARD_LIB_DIR)/ti.board.ae66\r
105 UART_LIB= $(UART_LIB_DIR)/ti.drv.uart.$(DEVICE_LC2).ae66\r
106 GPIO_LIB= $(GPIO_LIB_DIR)/ti.drv.gpio.$(DEVICE_LC2).ae66\r
107 OBJEXT = oe66\r
108 ASMOBJEXT = se66\r
109 endif\r
110 \r
111 # Libraries\r
112 LIB= -l$(BOARD_LIB) -l$(UART_LIB) -l$(GPIO_LIB) -l$(OSAL_LIB) -l$(CSL_LIB) -l$(CSL_INTC_LIB) -l$(CGTOOLS)/lib/rts6600_elf.lib -l$(CGTOOLS)/lib/libc.a \r
113 \r
114 # Compiler options\r
115 INTERNALDEFS = -DSOC_$(DEVICE) -DEVM_$(DEVICE) -DBARE_METAL\r
116 \r
117 # Linker options\r
118 LOPTS = -mv6600 --abi=eabi -z -c\r
119 \r
120 # Executable using device independent library and device object file\r
121 EXE1=GPIO_LedBlink_$(DEVICE)_EVM_c66xTestproject\r
122 EXE2=GPIO_LedBlink_$(DEVICE)_EVM_c66xExampleproject\r
123 \r
124 SRCDIR = $(GPIO_DIR)/test/src\r
125 TESTDIR = $(GPIO_DIR)/test/led_blink\r
126 EXAMPLEDIR = $(GPIO_DIR)/example/led_blink\r
127 \r
128 INCS = -I. -I$(strip $(subst ;, -I,$(INCDIR)))\r
129 \r
130 VPATH=$(TESTDIR)/src:$(TESTDIR)/$(DEVICE_LC2):$(EXAMPLEDIR)/src:$(UART_DIR)/test/src\r
131 \r
132 #List the Source Files\r
133 TEST_SRC = \\r
134 main_led_blink.c \\r
135 GPIO_board.c\r
136 \r
137 EXAMPLE_SRC = \\r
138 main_led_blink.c \\r
139 GPIO_board.c\r
140 \r
141 UART_SRC_DEV = \\r
142 UART_board.c\r
143 \r
144 # Make Rule for the SRC Files\r
145 TEST_SRC_OBJS = $(patsubst %.c, $(TESTOBJDIR)/%.$(OBJEXT), $(TEST_SRC))\r
146 EXAMPLE_SRC_OBJS = $(patsubst %.c, $(TESTOBJDIR)/%.$(OBJEXT), $(EXAMPLE_SRC))\r
147 UART_SRC_DEV_OBJS = $(patsubst %.c, $(TESTOBJDIR)/%.$(OBJEXT), $(UART_SRC_DEV))\r
148 \r
149 all:$(TESTOBJDIR)/.created $(TESTBINDIR)/$(EXE1).out $(TESTBINDIR)/$(EXE2).out\r
150 \r
151 $(TESTBINDIR)/$(EXE1).out: $(TEST_SRC_OBJS) $(UART_SRC_DEV_OBJS) $(TESTBINDIR)/.created $(TESTOBJDIR)/.created\r
152 echo linking $(TEST_SRC_OBJS) into $@ ...\r
153 $(CC) $(LOPTS) $(TESTDIR)/$(DEVICE_LC2)/linker.cmd $(TEST_SRC_OBJS) $(UART_SRC_DEV_OBJS) $(LIB) -o $@ -m $(TESTBINDIR)/$(EXE1).map\r
154 \r
155 $(TESTBINDIR)/$(EXE2).out: $(EXAMPLE_SRC_OBJS) $(UART_SRC_DEV_OBJS) $(TESTBINDIR)/.created $(TESTOBJDIR)/.created\r
156 echo linking $(EXAMPLE_SRC_OBJS) into $@ ...\r
157 $(CC) $(LOPTS) $(TESTDIR)/$(DEVICE_LC2)/linker.cmd $(EXAMPLE_SRC_OBJS) $(UART_SRC_DEV_OBJS) $(LIB) -o $@ -m $(TESTBINDIR)/$(EXE2).map\r
158 \r
159 $(TESTOBJDIR)/%.$(OBJEXT): %.c $(TESTOBJDIR)/.created\r
160 echo compiling $< ...\r
161 $(CC) -c $(COPTS) $(INTERNALDEFS) $(INCS) $< -fr $(dir $@) -fo $(notdir $@)\r
162 \r
163 $(TESTOBJDIR)/%.$(ASMOBJEXT): %.S $(TESTOBJDIR)/.created\r
164 @echo compiling $< ...\r
165 @$(CC) -c $(AOPTS) $(INTERNALDEFS) $(INCS) $< -fr $(dir $@) -fo $(notdir $@)\r
166 \r
167 $(TESTOBJDIR)/.created:\r
168 mkdir -p $(TESTOBJDIR)\r
169 touch $(TESTOBJDIR)/.created\r
170 \r
171 $(TESTBINDIR)/.created:\r
172 mkdir -p $(TESTBINDIR)\r
173 touch $(TESTBINDIR)/.created\r
174 \r
175 clean:\r
176 @rm -f $(TESTBINDIR)/$(EXE1).out $(TESTBINDIR)/$(EXE1).map\r
177 @rm -f $(TESTBINDIR)/$(EXE2).out $(TESTBINDIR)/$(EXE2).map\r
178 @rm -f $(TEST_SRC_OBJS) $(EXAMPLE_SRC_OBJS) $(UART_SRC_DEV_OBJS) $(TESTBINDIR)/.created $(TESTOBJDIR)/.created\r
179 \r
180 \r