]> rtime.felk.cvut.cz Git - arc.git/blob - makefile
Added timers
[arc.git] / makefile
1 # build with:\r
2 #   $ make BOARDDIR=<board> BDIR=<dir>[,<dir>] CROSS_COMPILE=<gcc> all|clean|clean_all\r
3 #\r
4 # TARGETS\r
5 #   all:                Target when building\r
6 #   clean:      Remove generatated files for a board \r
7 #   clean_all:  Remove all generated files\r
8 #   help:       Print some help\r
9 #\r
10 # VARIABLES:\r
11 #   BOARDDIR=<board dir> \r
12 #       Select what board to build for \r
13 #   BDIR=<dir>[,<dir>] \r
14 #       Select what directories to build. The kernel is always built.\r
15 #   CROSS_COMPILE\r
16 #       Specify the compiler to use.  \r
17 #   Q=[(@)/empty] \r
18 #               If Q=@ cmd's will not be echoed.\r
19 #\r
20 # EXAMPLES\r
21 #   Clean all\r
22 #     $ make clean_all\r
23 #\r
24 #   Clean for a specific board\r
25 #     $ make BDIR=mpc551xsim clean\r
26 #\r
27 #   Build the simple example (assuming CROSS_COMPILE set)\r
28 #     $ make BOARDDIR= mpc551xsim BDIR=examples/simple all\r
29 #\r
30 \r
31 \r
32 export UNAME:=$(shell uname)\r
33 \r
34 ifneq ($(findstring Darwin,$(UNAME)),)\r
35   SHELL:=/bin/bash\r
36   export SED=/opt/local/bin/gsed\r
37 else\r
38         export SED=sed\r
39 endif\r
40 \r
41 ifeq ($(VERBOSE),y)\r
42 export Q?=\r
43 else\r
44 export Q?=@\r
45 endif\r
46 \r
47 export TOPDIR = $(CURDIR)\r
48 export PATH\r
49 \r
50 # Select default console\r
51 # RAMLOG | TTY_T32 | TTY_WINIDEA \r
52 export SELECT_OS_CONSOLE\r
53 export SELECT_CONSOLE\r
54 export USE_DEBUG_PRINTF\r
55 export SELECT_OPT\r
56 \r
57 ifneq ($(filter clean_all,$(MAKECMDGOALS)),clean_all)\r
58   ifeq ($(BOARDDIR),)\r
59     $(error BOARDDIR is empty)\r
60   endif\r
61   ifeq ($(BDIR),)\r
62     $(error BDIR is empty)\r
63   endif\r
64 endif\r
65 \r
66 # Convert Path if on windows.\r
67 ifeq ($(OS),Windows_NT)  \r
68     BDIR:=/$(subst :/,/,$(subst \,/,$(BDIR)))\r
69 endif\r
70 \r
71 USE_T32_SIM?=n\r
72 export USE_T32_SIM\r
73 \r
74 # Tools\r
75 # Ugly thing to make things work under cmd.exe \r
76 PATH := /usr/bin/:$(PATH) \r
77 FIND := $(shell which find)\r
78 \r
79 export objdir = obj_$(BOARDDIR)\r
80 export CFG_MCU \r
81 export CFG_CPU\r
82 export MCU\r
83 export def-y+=$(CFG_ARCH_$(ARCH)) $(CFG_MCU) $(CFG_CPU)\r
84 \r
85 # We descend into the object directories and build the. That way it's easier to build\r
86 # multi-arch support and we don't have to use objdir everywhere.\r
87 # ROOTDIR - The top-most directory\r
88 # SUBDIR - The current subdirectory it's building.\r
89 \r
90 comma:= ,\r
91 empty:=\r
92 space:= $(empty) $(empty)\r
93 split = $(subst $(comma), ,$(1))\r
94 dir_cmd_goals  := $(call split,$(BDIR))\r
95 cmd_cmd_goals := $(filter all clean config,$(MAKECMDGOALS))\r
96 \r
97 # Check for CROSS_COMPILE\r
98 ifneq ($(cmd_cmd_goals),)\r
99 \r
100 # Check that the board actually exist\r
101 ifdef BOARDDIR\r
102   all_boards := $(subst boards/,,$(shell $(FIND) boards/ -maxdepth 1 -type d))\r
103   all_boards_print := $(subst $(space),$(comma)$(space),$(strip $(all_boards)))\r
104   ifeq ($(filter $(BOARDDIR),$(all_boards)),)\r
105         $(error no such board: $(BOARDDIR), valid boards are: $(all_boards_print))\r
106   endif\r
107 endif\r
108 \r
109 # Check BDIR\r
110 endif\r
111 \r
112 libs:\r
113         mkdir -p $@\r
114 \r
115 .PHONY all:\r
116 \r
117 all: libs $(dir_cmd_goals)\r
118 \r
119 .PHONY: clean\r
120 .PHONY: release\r
121 \r
122 .PHONY: help\r
123 help:\r
124         @echo "Build a simple example"\r
125         @echo "  > make BOARDDIR=mpc551xsim CROSS_COMPILE=/opt/powerpc-eabi/bin/powerpc-eabi- BDIR=examples/simple all"\r
126         @echo ""\r
127         @echo "Clean"\r
128         @echo "  > make clean"\r
129         @echo ""\r
130         @echo "Present config:"\r
131         @echo "  BDIR          = ${BDIR}"\r
132         @echo "  BOARDDIR      = $(BOARDDIR)"\r
133         @echo "  CROSS_COMPILE = $(CROSS_COMPILE)"\r
134         @echo "  CURDIR        = $(CURDIR)"     \r
135         @echo ""\r
136 \r
137 \r
138 test:\r
139         @echo $(all_boards)\r
140 \r
141 show_build:\r
142         @echo ""\r
143         @echo "==========[ BUILD INFO ]==========="\r
144         @echo "  BDIR:           $(BDIR) [$(origin BDIR)]"\r
145         @echo "  BOARDDIR:       $(BOARDDIR) [$(origin BOARDDIR)]"\r
146         @echo "  COMPILER:       $(COMPILER) [$(origin COMPILER)]"      \r
147 ifeq ($(COMPILER),cw)   \r
148         @echo "  CW_COMPILE:     $(CW_COMPILE) [$(origin CW_COMPILE)]"\r
149 else ifeq ($(COMPILER),iar)     \r
150         @echo "  IAR_COMPILE:     $(IAR_COMPILE) [$(origin IAR_COMPILE)]"\r
151 else \r
152         @echo "  CROSS_COMPILE:  $(CROSS_COMPILE) [$(origin CROSS_COMPILE)]"\r
153 endif\r
154         @echo "  CURDIR:         $(CURDIR)"\r
155         @echo "  SELECT_CONSOLE: $(SELECT_CONSOLE) [$(origin SELECT_CONSOLE)]"\r
156         \r
157         \r
158         \r
159 $(dir_cmd_goals) :: show_build FORCE    \r
160         @echo ""\r
161         @echo ==========[ ${abspath $@}  ]===========\r
162         @if [ ! -d $@ ]; then echo "No such directory: \"$@\" quitting"; exit 1; fi\r
163         +@[ -d $@/$(objdir) ] || mkdir -p $@/$(objdir)\r
164         @chmod 777 $@/$(objdir)\r
165         $(Q)$(MAKE) -r  -C $@/$(objdir) -f $(CURDIR)/scripts/rules.mk  ROOTDIR=$(CURDIR) SUBDIR=$@ $(cmd_cmd_goals)\r
166 .PHONY: test    \r
167 \r
168 FORCE:\r
169 \r
170 .PHONY: boards\r
171 boards:\r
172         @find . -type d -name *\r
173 \r
174 clean_all:\r
175         $(Q)find . -type d -name obj_* | xargs rm -rf\r
176         $(Q)find . -type f -name *.a | xargs rm -rf\r
177         @echo\r
178         @echo "  >>>>>>>>>  DONE  <<<<<<<<<"\r
179         @echo\r
180         \r
181 config: $(dir_cmd_goals)        \r
182         \r
183 .PHONY clean:   \r
184 clean: $(dir_cmd_goals)\r
185         @echo\r
186         @echo "  >> Cleaning MAIN $(CURDIR)"\r
187 #       $(Q)find . -type d -name $(objdir) | xargs rm -rf\r
188 #       $(Q)find . -type f -name *.a | xargs rm -rf\r
189 #       $(Q)rm   -rf libs/*\r
190         @echo\r
191         @echo "  >>>>>>>>>  DONE  <<<<<<<<<"\r
192         @echo\r
193 \r
194                 \r
195         \r
196 \r
197 \r
198 \r