]> rtime.felk.cvut.cz Git - arc.git/blob - makefile
Initial commit.
[arc.git] / makefile
1 \r
2 # build with:\r
3 # make subdir1                  - build the subdir1 \r
4 # make subdir1/subdir2  - build subdir2\r
5\r
6 # clean:\r
7 #       Removed all generated files \r
8 #\r
9 # BOARDDIR=<board dir> \r
10 #       Select what board to build for \r
11 \r
12 # BOARDDIR=<board dir> \r
13 #       Select what board to build for\r
14\r
15 # Q=[(@)/empty] \r
16 #               If Q=@ cmd's will not be echoed.\r
17 #  \r
18 # Build\r
19 #   >make BOARDDIR=mpc551xsim BDIR=system/kernel,examples/simple all \r
20 # Clean \r
21 #   >make BOARDDIR=mpc551xsim BDIR=system/kernel,examples/simple clean\r
22 #\r
23 \r
24 \r
25 \r
26 #-include board_config.mk\r
27 #export ARCH\r
28 #export ARCH_FAM\r
29 #export BOARDDIR\r
30 \r
31 UNAME:=$(shell uname)\r
32 \r
33 ifneq ($(findstring Darwin,$(UNAME)),)\r
34   SHELL:=/bin/bash\r
35   export SED=/opt/local/bin/gsed\r
36 else\r
37         export SED=sed\r
38 endif\r
39 \r
40 USE_DBG_PRINTF?=y\r
41 \r
42 Q?=@\r
43 export Q\r
44 export TOPDIR = $(CURDIR)\r
45 export RELEASE = n\r
46 export PATH\r
47 \r
48 #ifeq (${BDIR},)\r
49 #       -include saved_config.mk\r
50 #endif\r
51 \r
52 ifneq ($(filter clean_all,$(MAKECMDGOALS)),clean_all)\r
53   ifeq (${BOARDDIR},)\r
54     $(error BOARDDIR is empty) \r
55   endif\r
56 endif\r
57 \r
58 USE_T32_SIM?=n\r
59 export USE_T32_SIM\r
60 \r
61 export BUILD_TREE=y\r
62 export RELEASE_TREE=n\r
63 \r
64 override BDIR := system/kernel ${BDIR} \r
65 #BDIR += system/kernel/testsystem\r
66 \r
67 # Misc\r
68 #subdir-y += ecum\r
69 # Drivers\r
70 \r
71 \r
72 # Tools\r
73 # Ugly thing to make things work under cmd.exe \r
74 PATH := /usr/bin/:$(PATH) \r
75 find := $(shell which find)\r
76 \r
77 export objdir = obj_$(BOARDDIR)\r
78 \r
79 #comma = ,\r
80 #empty = \r
81 #space = $(empty) $(empty)  \r
82 \r
83 .PHONY: clean\r
84 .PHONY: release\r
85 \r
86 .PHONY: help\r
87 help:\r
88         @echo "Make kernel and a simple example"\r
89         @echo "  > make BOARDDIR=mpc551xsim CROSS_COMPILE=/opt/powerpc-eabi/bin/powerpc-eabi- BDIR=system/kernel,examples/simple all"\r
90         @echo ""\r
91         @echo "Save the config (CROSS_COMPILE and BDIR)"\r
92         @echo "  > make BOARDDIR=mpc551xsim CROSS_COMPILE=/opt/powerpc-eabi/bin/powerpc-eabi- BDIR=system/kernel,examples/simple save"\r
93         @echo ""\r
94         @echo "Clean"\r
95         @echo "  > make clean"\r
96         @echo ""\r
97         @echo "Present config:"\r
98         @echo "  ARCH=$(ARCH)"\r
99         @echo "  ARCH_FAM=$(ARCH_FAM)"\r
100         @echo "  BOARDDIR =$(BOARDDIR)"\r
101         @echo "  CROSS_COMPILE =$(CROSS_COMPILE)"\r
102         @echo ""\r
103         \r
104 def-$(USE_T32_SIM) += USE_T32_SIM\r
105 def-$(USE_DBG_PRINTF) += USE_DBG_PRINTF\r
106 \r
107 \r
108 export CFG_MCU \r
109 export CFG_CPU\r
110 export MCU\r
111 export def-y+=$(CFG_ARCH_$(ARCH)) $(CFG_MCU) $(CFG_CPU)\r
112 \r
113 BASEDIR = $(TOPDIR)/$(MOD)\r
114 \r
115 # We descend into the object directories and build the. That way it's easier to build\r
116 # multi-arch support and we don't have to use objdir everywhere.\r
117 # ROOTDIR - The top-most directory\r
118 # SUBDIR - The current subdirectory it's building.\r
119 \r
120 test:\r
121         make embUnit/textui embunit/embUnit drivers/test all\r
122 \r
123 comma:= ,\r
124 split = $(subst $(comma), ,$(1))\r
125 \r
126 \r
127 #dir_cmd_goals := $(filter-out %_config config testa all install uninstall clean test save,$(MAKECMDGOALS))\r
128 dir_cmd_goals  := $(call split,$(BDIR))\r
129 \r
130 cmd_cmd_goals := $(filter clean all install,$(MAKECMDGOALS))\r
131 \r
132 #$(error $(dir_cmd_goals) $(MAKECMDGOALS))\r
133 \r
134 libs:\r
135         mkdir -p $@\r
136 \r
137 all: libs $(dir_cmd_goals)\r
138 \r
139 show_build:\r
140         @echo Building for $(dir_cmd_goals)\r
141         @echo BOARDDIR: $(BOARDDIR)\r
142         @echo ARCH_FAM/ARCH: $(ARCH_FAM)/$(ARCH)\r
143         \r
144 \r
145 $(dir_cmd_goals) :: show_build FORCE    \r
146         @echo ==========[ $@  ]===========\r
147         +@[ -d $@/$(objdir) ] || mkdir -p $@/$(objdir)\r
148         @chmod 777 $@/$(objdir)\r
149         $(Q)$(MAKE) -r  -C $@/$(objdir) -f $(CURDIR)/scripts/rules.mk  ROOTDIR=$(CURDIR) SUBDIR=$@ $(cmd_cmd_goals)\r
150 \r
151 \r
152 # --no-print-directory\r
153 \r
154 .PHONY: test    \r
155 \r
156 FORCE:\r
157 \r
158 clean_all:\r
159         @find . -type d -name obj_* | xargs rm -rf\r
160         @find . -type f -name *.a | xargs rm -rf\r
161         echo Done!\r
162         \r
163 clean: $(dir_cmd_goals)\r
164         @echo "Clean:"\r
165         @echo "  Removing objectfiles and libs for ARCH=$(ARCH)"\r
166         @find . -type d -name $(objdir) | xargs rm -rf\r
167         @find . -type f -name *.a| xargs rm -rf\r
168         @rm   -rf libs/*\r
169         @echo Done!\r
170 \r
171                 \r
172         \r
173 \r
174 \r
175 \r