]> rtime.felk.cvut.cz Git - arc.git/blob - makefile
Merged in from default
[arc.git] / makefile
1 # build with:\r
2 # make subdir1                  - build the subdir1 \r
3 # make subdir1/subdir2  - build subdir2\r
4\r
5 # clean:\r
6 #       Removed all generated files \r
7 #\r
8 # BOARDDIR=<board dir> \r
9 #       Select what board to build for \r
10 \r
11 # BOARDDIR=<board dir> \r
12 #       Select what board to build for\r
13\r
14 # Q=[(@)/empty] \r
15 #               If Q=@ cmd's will not be echoed.\r
16 #  \r
17 # Build\r
18 #   >make BOARDDIR=mpc551xsim BDIR=system/kernel,examples/simple all \r
19 # Clean \r
20 #   >make BOARDDIR=mpc551xsim BDIR=system/kernel,examples/simple clean\r
21 #\r
22 \r
23 export UNAME:=$(shell uname)\r
24 \r
25 ifneq ($(findstring Darwin,$(UNAME)),)\r
26   SHELL:=/bin/bash\r
27   export SED=/opt/local/bin/gsed\r
28 else\r
29         export SED=sed\r
30 endif\r
31 \r
32 \r
33 Q?=@\r
34 export Q\r
35 export TOPDIR = $(CURDIR)\r
36 export PATH\r
37 \r
38 # Select default console\r
39 # RAMLOG | TTY_T32 | TTY_WINIDEA \r
40 export SELECT_OS_CONSOLE\r
41 export SELECT_CONSOLE\r
42 export USE_DEBUG_PRINTF\r
43 export SELECT_OPT?=OPT_RELEASE\r
44 export CFG_$(SELECT_OPT)=y\r
45 \r
46 ifneq ($(filter clean_all,$(MAKECMDGOALS)),clean_all)\r
47   ifeq (${BOARDDIR},)\r
48     $(error BOARDDIR is empty) \r
49   endif\r
50 endif\r
51 \r
52 USE_T32_SIM?=n\r
53 export USE_T32_SIM\r
54 \r
55 # override BDIR := system/kernel ${BDIR} \r
56 \r
57 # Tools\r
58 # Ugly thing to make things work under cmd.exe \r
59 PATH := /usr/bin/:$(PATH) \r
60 find := $(shell which find)\r
61 \r
62 export objdir = obj_$(BOARDDIR)\r
63 \r
64 .PHONY: clean\r
65 .PHONY: release\r
66 \r
67 .PHONY: help\r
68 help:\r
69         @echo "Make kernel and a simple example"\r
70         @echo "  > make BOARDDIR=mpc551xsim CROSS_COMPILE=/opt/powerpc-eabi/bin/powerpc-eabi- BDIR=examples/simple all"\r
71         @echo ""\r
72         @echo "Save the config (CROSS_COMPILE and BDIR)"\r
73         @echo "  > make BOARDDIR=mpc551xsim CROSS_COMPILE=/opt/powerpc-eabi/bin/powerpc-eabi- BDIR=examples/simple save"\r
74         @echo ""\r
75         @echo "Clean"\r
76         @echo "  > make clean"\r
77         @echo ""\r
78         @echo "Present config:"\r
79         @echo "  ARCH=$(ARCH)"\r
80         @echo "  ARCH_FAM=$(ARCH_FAM)"\r
81         @echo "  BOARDDIR =$(BOARDDIR)"\r
82         @echo "  CROSS_COMPILE =$(CROSS_COMPILE)"\r
83         @echo ""\r
84         \r
85 export CFG_MCU \r
86 export CFG_CPU\r
87 export MCU\r
88 export def-y+=$(CFG_ARCH_$(ARCH)) $(CFG_MCU) $(CFG_CPU)\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 split = $(subst $(comma), ,$(1))\r
97 dir_cmd_goals  := $(call split,$(BDIR))\r
98 cmd_cmd_goals := $(filter clean all install,$(MAKECMDGOALS))\r
99 \r
100 libs:\r
101         mkdir -p $@\r
102 \r
103 all: libs $(dir_cmd_goals)\r
104 \r
105 show_build:\r
106         @echo Building for $(dir_cmd_goals)\r
107         @echo BOARDDIR: $(BOARDDIR)\r
108         @echo ARCH_FAM/ARCH: $(ARCH_FAM)/$(ARCH)\r
109         \r
110 \r
111 $(dir_cmd_goals) :: show_build FORCE    \r
112         @echo ==========[ $@  ]===========\r
113         +@[ -d $@/$(objdir) ] || mkdir -p $@/$(objdir)\r
114         @chmod 777 $@/$(objdir)\r
115         $(Q)$(MAKE) -r  -C $@/$(objdir) -f $(CURDIR)/scripts/rules.mk  ROOTDIR=$(CURDIR) SUBDIR=$@ $(cmd_cmd_goals)\r
116 .PHONY: test    \r
117 \r
118 FORCE:\r
119 \r
120 clean_all:\r
121         @find . -type d -name obj_* | xargs rm -rf\r
122         @find . -type f -name *.a | xargs rm -rf\r
123         echo Done!\r
124         \r
125 clean: $(dir_cmd_goals)\r
126         @echo "Clean:"\r
127         @echo "  Removing objectfiles and libs for ARCH=$(ARCH)"\r
128         @find . -type d -name $(objdir) | xargs rm -rf\r
129         @find . -type f -name *.a| xargs rm -rf\r
130         @rm   -rf libs/*\r
131         @echo Done!\r
132 \r
133                 \r
134         \r
135 \r
136 \r
137 \r