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