]> rtime.felk.cvut.cz Git - arc.git/blob - makefile
Dcm, Dcm_GetSecurityLevel and Dcm_GetSesCtrlType will always return E_OK, this accord...
[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 # C:/apa -> /c/apa\r
67 # ../tjo -> ../tjo\r
68 to_msyspath = $(shell echo "$(1)" | sed -e 's,\\,\/,g;s,\([a-zA-Z]\):,/\1,')\r
69 \r
70 # Convert Path if on windows.\r
71 ifeq ($(OS),Windows_NT)\r
72         BDIR:=$(call to_msyspath,$(BDIR))\r
73 endif\r
74 \r
75 USE_T32_SIM?=n\r
76 export USE_T32_SIM\r
77 \r
78 # Tools\r
79 # Ugly thing to make things work under cmd.exe \r
80 PATH := /usr/bin/:$(PATH) \r
81 FIND := $(shell which find)\r
82 \r
83 export objdir = obj_$(BOARDDIR)\r
84 export CFG_MCU \r
85 export CFG_CPU\r
86 export MCU\r
87 export def-y+=$(CFG_ARCH_$(ARCH)) $(CFG_MCU) $(CFG_CPU)\r
88 \r
89 \r
90 # We descend into the object directories and build the. That way it's easier to build\r
91 # multi-arch support and we don't have to use objdir everywhere.\r
92 # ROOTDIR - The top-most directory\r
93 # SUBDIR - The current subdirectory it's building.\r
94 \r
95 comma:= ,\r
96 empty:=\r
97 space:= $(empty) $(empty)\r
98 split = $(subst $(comma), ,$(1))\r
99 dir_cmd_goals  := $(call split,$(BDIR))\r
100 cmd_cmd_goals := $(filter all clean config,$(MAKECMDGOALS))\r
101 \r
102 # Check for CROSS_COMPILE\r
103 ifneq ($(cmd_cmd_goals),)\r
104 \r
105 # Check that the board actually exist\r
106 ifdef BOARDDIR\r
107   all_boards := $(subst /,,$(subst boards/,,$(shell $(FIND) boards/ -maxdepth 1 -type d)))\r
108   all_boards_print := $(subst $(space),$(comma)$(space),$(strip $(all_boards)))\r
109   ifeq ($(filter $(BOARDDIR),$(all_boards)),)\r
110         $(error no such board: $(BOARDDIR), valid boards are: $(all_boards_print))\r
111   endif\r
112 endif\r
113 \r
114 # Check BDIR\r
115 endif\r
116 \r
117 libs:\r
118         mkdir -p $@\r
119 \r
120 .PHONY all:\r
121 \r
122 all: libs $(dir_cmd_goals)\r
123 \r
124 .PHONY: clean\r
125 .PHONY: release\r
126 \r
127 .PHONY: help\r
128 help:\r
129         @echo "Build a simple example"\r
130         @echo "  > make BOARDDIR=mpc551xsim CROSS_COMPILE=/opt/powerpc-eabi/bin/powerpc-eabi- BDIR=examples/simple all"\r
131         @echo ""\r
132         @echo "Clean"\r
133         @echo "  > make clean"\r
134         @echo ""\r
135         @echo "Present config:"\r
136         @echo "  BDIR          = ${BDIR}"\r
137         @echo "  BOARDDIR      = $(BOARDDIR)"\r
138         @echo "  CROSS_COMPILE = $(CROSS_COMPILE)"\r
139         @echo "  CURDIR        = $(CURDIR)"     \r
140         @echo ""\r
141 \r
142 \r
143 test:\r
144         @echo $(all_boards)\r
145 \r
146 show_build:\r
147         @echo ""\r
148         @echo "==========[ BUILD INFO ]==========="\r
149         @echo "  BDIR:           $(BDIR) [$(origin BDIR)]"\r
150         @echo "  BOARDDIR:       $(BOARDDIR) [$(origin BOARDDIR)]"\r
151         @echo "  COMPILER:       $(COMPILER) [$(origin COMPILER)]"      \r
152 ifeq ($(COMPILER),cw)   \r
153         @echo "  CW_COMPILE:     $(CW_COMPILE) [$(origin CW_COMPILE)]"\r
154 else ifeq ($(COMPILER),iar)     \r
155         @echo "  IAR_COMPILE:     $(IAR_COMPILE) [$(origin IAR_COMPILE)]"\r
156 else \r
157         @echo "  CROSS_COMPILE:  $(CROSS_COMPILE) [$(origin CROSS_COMPILE)]"\r
158 endif\r
159         @echo "  CURDIR:         $(CURDIR)"\r
160         @echo "  SELECT_CONSOLE: $(SELECT_CONSOLE) [$(origin SELECT_CONSOLE)]"\r
161         \r
162         \r
163         \r
164 $(dir_cmd_goals) :: show_build FORCE    \r
165         @echo ""\r
166         @echo ==========[ ${abspath $@}  ]===========\r
167         @if [ ! -d $@ ]; then echo "No such directory: \"$@\" quitting"; exit 1; fi\r
168         +@[ -d $@/$(objdir) ] || mkdir -p $@/$(objdir)\r
169         @chmod 777 $@/$(objdir)\r
170         $(Q)$(MAKE) -r  -C $@/$(objdir) -f $(CURDIR)/scripts/rules.mk  ROOTDIR=$(CURDIR) SUBDIR=$@ $(cmd_cmd_goals)\r
171 .PHONY: test    \r
172 \r
173 FORCE:\r
174 \r
175 .PHONY: boards\r
176 boards:\r
177         @find . -type d -name *\r
178 \r
179 clean_all:\r
180         $(Q)find . -type d -name obj_* | xargs rm -rf\r
181         $(Q)find . -type f -name *.a | xargs rm -rf\r
182         @echo\r
183         @echo "  >>>>>>>>>  DONE  <<<<<<<<<"\r
184         @echo\r
185         \r
186 config: $(dir_cmd_goals)        \r
187         \r
188 .PHONY clean:   \r
189 clean: $(dir_cmd_goals)\r
190         @echo\r
191         @echo "  >> Cleaning MAIN $(CURDIR)"\r
192 #       $(Q)find . -type d -name $(objdir) | xargs rm -rf\r
193 #       $(Q)find . -type f -name *.a | xargs rm -rf\r
194 #       $(Q)rm   -rf libs/*\r
195         @echo\r
196         @echo "  >>>>>>>>>  DONE  <<<<<<<<<"\r
197         @echo\r
198 \r
199                 \r
200         \r
201 \r
202 \r
203 \r