]> rtime.felk.cvut.cz Git - arc.git/blob - makefile
Merged with dem-dev
[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 export UNAME:=$(shell uname)\r
25 \r
26 ifneq ($(findstring Darwin,$(UNAME)),)\r
27   SHELL:=/bin/bash\r
28   export SED=/opt/local/bin/gsed\r
29 else\r
30         export SED=sed\r
31 endif\r
32 \r
33 USE_DBG_PRINTF?=y\r
34 \r
35 Q?=@\r
36 export Q\r
37 export TOPDIR = $(CURDIR)\r
38 export RELEASE = n\r
39 export PATH\r
40 \r
41 ifneq ($(filter clean_all,$(MAKECMDGOALS)),clean_all)\r
42   ifeq (${BOARDDIR},)\r
43     $(error BOARDDIR is empty) \r
44   endif\r
45 endif\r
46 \r
47 USE_T32_SIM?=n\r
48 export USE_T32_SIM\r
49 \r
50 export BUILD_TREE=y\r
51 export RELEASE_TREE=n\r
52 \r
53 override BDIR := system/kernel ${BDIR} \r
54 \r
55 # Tools\r
56 # Ugly thing to make things work under cmd.exe \r
57 PATH := /usr/bin/:$(PATH) \r
58 find := $(shell which find)\r
59 \r
60 export objdir = obj_$(BOARDDIR)\r
61 \r
62 .PHONY: clean\r
63 .PHONY: release\r
64 \r
65 .PHONY: help\r
66 help:\r
67         @echo "Make kernel and a simple example"\r
68         @echo "  > make BOARDDIR=mpc551xsim CROSS_COMPILE=/opt/powerpc-eabi/bin/powerpc-eabi- BDIR=system/kernel,examples/simple all"\r
69         @echo ""\r
70         @echo "Save the config (CROSS_COMPILE and BDIR)"\r
71         @echo "  > make BOARDDIR=mpc551xsim CROSS_COMPILE=/opt/powerpc-eabi/bin/powerpc-eabi- BDIR=system/kernel,examples/simple save"\r
72         @echo ""\r
73         @echo "Clean"\r
74         @echo "  > make clean"\r
75         @echo ""\r
76         @echo "Present config:"\r
77         @echo "  ARCH=$(ARCH)"\r
78         @echo "  ARCH_FAM=$(ARCH_FAM)"\r
79         @echo "  BOARDDIR =$(BOARDDIR)"\r
80         @echo "  CROSS_COMPILE =$(CROSS_COMPILE)"\r
81         @echo ""\r
82         \r
83 def-$(USE_DBG_PRINTF) += USE_DBG_PRINTF\r
84 \r
85 \r
86 export CFG_MCU \r
87 export CFG_CPU\r
88 export MCU\r
89 export def-y+=$(CFG_ARCH_$(ARCH)) $(CFG_MCU) $(CFG_CPU)\r
90 \r
91 # We descend into the object directories and build the. That way it's easier to build\r
92 # multi-arch support and we don't have to use objdir everywhere.\r
93 # ROOTDIR - The top-most directory\r
94 # SUBDIR - The current subdirectory it's building.\r
95 \r
96 comma:= ,\r
97 split = $(subst $(comma), ,$(1))\r
98 dir_cmd_goals  := $(call split,$(BDIR))\r
99 cmd_cmd_goals := $(filter clean all install,$(MAKECMDGOALS))\r
100 \r
101 libs:\r
102         mkdir -p $@\r
103 \r
104 all: libs $(dir_cmd_goals)\r
105 \r
106 show_build:\r
107         @echo Building for $(dir_cmd_goals)\r
108         @echo BOARDDIR: $(BOARDDIR)\r
109         @echo ARCH_FAM/ARCH: $(ARCH_FAM)/$(ARCH)\r
110         \r
111 \r
112 $(dir_cmd_goals) :: show_build FORCE    \r
113         @echo ==========[ $@  ]===========\r
114         +@[ -d $@/$(objdir) ] || mkdir -p $@/$(objdir)\r
115         @chmod 777 $@/$(objdir)\r
116         $(Q)$(MAKE) -r  -C $@/$(objdir) -f $(CURDIR)/scripts/rules.mk  ROOTDIR=$(CURDIR) SUBDIR=$@ $(cmd_cmd_goals)\r
117 .PHONY: test    \r
118 \r
119 FORCE:\r
120 \r
121 clean_all:\r
122         @find . -type d -name obj_* | xargs rm -rf\r
123         @find . -type f -name *.a | xargs rm -rf\r
124         echo Done!\r
125         \r
126 clean: $(dir_cmd_goals)\r
127         @echo "Clean:"\r
128         @echo "  Removing objectfiles and libs for ARCH=$(ARCH)"\r
129         @find . -type d -name $(objdir) | xargs rm -rf\r
130         @find . -type f -name *.a| xargs rm -rf\r
131         @rm   -rf libs/*\r
132         @echo Done!\r
133 \r
134                 \r
135         \r
136 \r
137 \r
138 \r