1 |
12 |
xianfeng |
#Makefile for building OR1200 tool-chains
|
2 |
|
|
#Version 0.1 by Tao Xiao
|
3 |
|
|
#Date: 23/02/2009
|
4 |
|
|
#
|
5 |
|
|
##Versions
|
6 |
|
|
BINUTILS :=binutils-2.16.1
|
7 |
|
|
GCC :=gcc-3.4.4
|
8 |
|
|
LINUX :=linux-2.6.23
|
9 |
|
|
SIM :=or1ksim-0.2.0
|
10 |
|
|
GDB :=gdb-6.8
|
11 |
|
|
UCLIC :=uClibc-0.9.28.3
|
12 |
|
|
BUSYBOX :=busybox-1.7.5
|
13 |
|
|
|
14 |
|
|
sub-tools := $(BINUTILS) $(GCC) $(LINUX) $(SIM) $(GDB)
|
15 |
|
|
PHONY :=
|
16 |
|
|
PHONY += sub-tools
|
17 |
|
|
|
18 |
|
|
##Patches
|
19 |
|
|
$(BINUTILS)-PATCH :=$(BINUTILS)_unified.diff_rgd_fixed.bz2
|
20 |
|
|
$(GCC)-PATCH :=$(GCC)-or32-unified.diff.bz2
|
21 |
|
|
$(LINUX)-PATCH :=linux_2.6.23_or32_unified_simtested.bz2
|
22 |
|
|
$(GDB)-PATCH :=or32-gdb-6.8-patch-2.0.bz2
|
23 |
|
|
$(SIM)-PATCH :=or1ksim-0.2.0-patch-2.0.bz2
|
24 |
|
|
|
25 |
|
|
$(UCLIC)-PATCH1 :=uClibc-0.9.28-or32-unified.bz2
|
26 |
|
|
$(UCLIC)-PATCH2 :=uClibc-0.9.28-or32-libc-support.bz2
|
27 |
|
|
$(UCLIC)-PATCH3 :=embecosm-esp2-or32-uclibc-0.9.28.3-patch-2.0.bz2
|
28 |
|
|
|
29 |
|
|
##Configs
|
30 |
|
|
CONFIG1 :=rgd_uc_28_2.6.23_dotconfig
|
31 |
|
|
CONFIG2 :=rgd_bb_1.75dotconfig
|
32 |
|
|
CONFIG3 :=DOT_CONFIG_2.6.23_OR32
|
33 |
|
|
|
34 |
|
|
##Tarballs (for some goddam reason passing -j to tar sometimes corrupts files)
|
35 |
|
|
INITRD_FB :=initrd-fb-03.ext2.last.work.1.7.5.bz2
|
36 |
|
|
SIM_GDB :=sim_gdb.cfg
|
37 |
|
|
|
38 |
|
|
##Log file name
|
39 |
|
|
LOGFILE :=$(CURDIR)/install.log
|
40 |
|
|
|
41 |
|
|
HOST ?=linuxdevel.3322.org
|
42 |
|
|
ULAB_ORSOC_DIR ?=ftp/OpenRISC/toolchain
|
43 |
|
|
|
44 |
|
|
FILELIST += $($(BINUTILS)-PATCH) $($(GCC)-PATCH) $($(LINUX)-PATCH) $($(GDB)-PATCH) $($(SIM)-PATCH) \
|
45 |
|
|
$($(UCLIC)-PATCH1) $($(UCLIC)-PATCH2) $($(UCLIC)-PATCH3)
|
46 |
|
|
|
47 |
|
|
FILELIST += $(INITRD_FB) $(patsubst %, %.tar.bz2, $(sub-tools) $(UCLIC) $(BUSYBOX))
|
48 |
|
|
|
49 |
|
|
FILELIST += $(CONFIG1) $(CONFIG2) $(CONFIG3) $(SIM_GDB)
|
50 |
|
|
|
51 |
|
|
PHONY += $(FILELIST)
|
52 |
|
|
$(FILELIST) : FORCE $(DOWNLOAD_DIR)
|
53 |
|
|
@cd $(DOWNLOAD_DIR) ; [ -f $@ ] || wget $(HOST)/$(ULAB_ORSOC_DIR)/$@
|
54 |
|
|
|
55 |
|
|
PHONY += BUILD_DIR DOWNLOAD_DIR
|
56 |
|
|
BUILD_DIR := $(CURDIR)/build
|
57 |
|
|
DOWNLOAD_DIR := $(CURDIR)/download
|
58 |
|
|
|
59 |
|
|
export PATH := $(BUILD_DIR)/tools/or32-uclinux/bin:$(PATH)
|
60 |
|
|
|
61 |
|
|
$(BUILD_DIR) $(DOWNLOAD_DIR) : FORCE
|
62 |
|
|
@[ -d $@ ] || mkdir $@
|
63 |
|
|
|
64 |
|
|
$(sub-tools) : $(DOWNLOAD_DIR) $(BUILD_DIR) $(FILELIST)
|
65 |
|
|
@cd $(BUILD_DIR);\
|
66 |
|
|
[ -d $@ ] || { \
|
67 |
|
|
tar jxf $(DOWNLOAD_DIR)/$@.tar.bz2 ;\
|
68 |
|
|
cd $@;\
|
69 |
|
|
bzip2 -dc $(DOWNLOAD_DIR)/$($@-PATCH) | patch -p1; }
|
70 |
|
|
|
71 |
|
|
$(BUSYBOX) : $(DOWNLOAD_DIR) $(BUILD_DIR) $(FILELIST)
|
72 |
|
|
@cd $(BUILD_DIR);\
|
73 |
|
|
[ -d $@ ] || { \
|
74 |
|
|
tar jxf $(DOWNLOAD_DIR)/$@.tar.bz2;\
|
75 |
|
|
cp $(DOWNLOAD_DIR)/$(CONFIG2) $(BUILD_DIR)/$(BUSYBOX)/.config;\
|
76 |
|
|
cp $(DOWNLOAD_DIR)/$(CONFIG2) $(BUILD_DIR)/$(BUSYBOX)/.config.old;}
|
77 |
|
|
|
78 |
|
|
$(UCLIC) : $(DOWNLOAD_DIR) $(BUILD_DIR) $(FILELIST)
|
79 |
|
|
@cd $(BUILD_DIR);\
|
80 |
|
|
[ -d $@ ] || { ;\
|
81 |
|
|
tar jxf $(DOWNLOAD_DIR)/$@.tar.bz2;\
|
82 |
|
|
cd $@;
|
83 |
|
|
bzip2 -dc $(DOWNLOAD_DIR)/$($(UCLIC)-PATCH1) | patch -p1;\
|
84 |
|
|
cd libc;\
|
85 |
|
|
bzip2 -dc $(DOWNLOAD_DIR)/$($(UCLIC)-PATCH2) | patch -p1;\
|
86 |
|
|
cd ..;\
|
87 |
|
|
bzip2 -dc $(DOWNLOAD_DIR)/$($(UCLIC)-PATCH3) | patch -p1;\
|
88 |
|
|
sed -r "s:KERNEL_SOURCE=.*:KERNEL_SOURCE=\"$(BUILD_DIR)/$(LINUX)\":" \
|
89 |
|
|
$(DOWNLOAD_DIR)/$(CONFIG1) > $(BUILD_DIR)/$(UCLIC)/.config;\
|
90 |
|
|
cp $(BUILD_DIR)/$(UCLIC)/.config $(BUILD_DIR)/$(UCLIC)/.config.old;\
|
91 |
|
|
make oldconfig;\
|
92 |
|
|
ln -s extra/Configs/Config.or32 Config ;}
|
93 |
|
|
|
94 |
|
|
PHONY += prepare
|
95 |
|
|
prepare : $(sub-tools) $(UCLIC) $(BUSYBOX)
|
96 |
|
|
|
97 |
|
|
PHONY += tools
|
98 |
|
|
tools : prepare binutils gcc libc gcc_final sim linux_final gdb busybox FORCE
|
99 |
|
|
|
100 |
|
|
PHONY += binutils
|
101 |
|
|
binutils: $(BINUTILS) prepare
|
102 |
|
|
@[ -d $(BUILD_DIR)/b-b ] || { \
|
103 |
|
|
mkdir $(BUILD_DIR)/b-b;\
|
104 |
|
|
cd $(BUILD_DIR)/b-b;\
|
105 |
|
|
$(BUILD_DIR)/$(BINUTILS)/configure --target=or32-uclinux \
|
106 |
|
|
--prefix=$(BUILD_DIR)/tools/or32-uclinux;}
|
107 |
|
|
$(MAKE) -C $(BUILD_DIR)/b-b -j4 all
|
108 |
|
|
$(MAKE) -C $(BUILD_DIR)/b-b install
|
109 |
|
|
|
110 |
|
|
PHONY += linux_prepare
|
111 |
|
|
linux_prepare: $(LINUX) prepare
|
112 |
|
|
@cp $(DOWNLOAD_DIR)/$(CONFIG3) $(BUILD_DIR)/$(LINUX)/.config
|
113 |
|
|
$(MAKE) -C $(BUILD_DIR)/$(LINUX) oldconfig
|
114 |
|
|
|
115 |
|
|
PHONY += gcc_prepare
|
116 |
|
|
gcc_prepare: $(LINUX) prepare
|
117 |
|
|
@cd $(BUILD_DIR);\
|
118 |
|
|
[ -d tools/or32-uclinux/include ] || { \
|
119 |
|
|
mkdir tools/or32-uclinux/include;\
|
120 |
|
|
cd tools/or32-uclinux/;\
|
121 |
|
|
ln -s include sys-include;\
|
122 |
|
|
mkdir asm linux;\
|
123 |
|
|
cp -f -dR $(BUILD_DIR)/$(LINUX)/include/linux/* linux;\
|
124 |
|
|
cp -f -dR $(BUILD_DIR)/$(LINUX)/include/asm-or32/* asm;}
|
125 |
|
|
|
126 |
|
|
gcc : $(GCC) gcc_prepare prepare
|
127 |
|
|
@[ -d $(BUILD_DIR)/b-gcc ] || { \
|
128 |
|
|
mkdir $(BUILD_DIR)/b-gcc;\
|
129 |
|
|
cd $(BUILD_DIR)/b-gcc;\
|
130 |
|
|
$(BUILD_DIR)/$(GCC)/configure --target=or32-uclinux \
|
131 |
|
|
--prefix=$(BUILD_DIR)/tools/or32-uclinux \
|
132 |
|
|
--with-local-prefix=$(BUILD_DIR)/tools/or32-uclinux/or32-uclinux \
|
133 |
|
|
--enable-languages=c;}
|
134 |
|
|
$(MAKE) -C $(BUILD_DIR)/b-gcc -j4 all
|
135 |
|
|
$(MAKE) -C $(BUILD_DIR)/b-gcc install
|
136 |
|
|
|
137 |
|
|
PHONY += linux
|
138 |
|
|
linux : linux_prepare
|
139 |
|
|
$(MAKE) -C $(BUILD_DIR)/$(LINUX) -j4 vmlinux ARCH=or32 CROSS_COMPILE=or32-uclinux-
|
140 |
|
|
|
141 |
|
|
PHONY += libc
|
142 |
|
|
libc : $(UCLIC) prepare
|
143 |
|
|
$(MAKE) -C $(BUILD_DIR)/$(UCLIC) CC=or32-uclinux-gcc -j4 all
|
144 |
|
|
$(MAKE) -C $(BUILD_DIR)/$(UCLIC) CC=or32-uclinux-gcc install
|
145 |
|
|
|
146 |
|
|
PHONY += gcc_final
|
147 |
|
|
gcc_final : libc
|
148 |
|
|
@cd $(BUILD_DIR)/b-gcc;\
|
149 |
|
|
$(BUILD_DIR)/$(GCC)/configure --target=or32-uclinux --prefix=$(BUILD_DIR)/tools/or32-uclinux \
|
150 |
|
|
--with-local-prefix=$(BUILD_DIR)/tools/or32-uclinux/or32-uclinux --enable-languages=c
|
151 |
|
|
$(MAKE) -C $(BUILD_DIR)/b-gcc -j4 all
|
152 |
|
|
$(MAKE) -C $(BUILD_DIR)/b-gcc install
|
153 |
|
|
@cd $(BUILD_DIR)/tools/or32-uclinux/or32-uclinux;\
|
154 |
|
|
ln -s ../include sys-include;\
|
155 |
|
|
cd lib;\
|
156 |
|
|
cp -f -dR ../../lib/* .
|
157 |
|
|
|
158 |
|
|
PHONY += gdb
|
159 |
|
|
gdb : $(GDB)
|
160 |
|
|
@cd $(BUILD_DIR)/$(GDB);\
|
161 |
|
|
./configure --target=or32-uclinux --prefix=$(BUILD_DIR)/tools/or32-uclinux
|
162 |
|
|
$(MAKE) -C $(BUILD_DIR)/$(GDB) all
|
163 |
|
|
$(MAKE) -C $(BUILD_DIR)/$(GDB) install
|
164 |
|
|
|
165 |
|
|
PHONY += linux_final
|
166 |
|
|
linux_final : gcc_final linux
|
167 |
|
|
$(MAKE) -C $(BUILD_DIR)/$(LINUX) -j4 vmlinux ARCH=or32 CROSS_COMPILE=or32-uclinux-
|
168 |
|
|
|
169 |
|
|
PHONY += sim
|
170 |
|
|
sim : $(SIM)
|
171 |
|
|
@cd $(BUILD_DIR)/$(SIM);\
|
172 |
|
|
./configure --target=or32-uclinux --prefix=$(BUILD_DIR)/tools/or32-uclinux;\
|
173 |
|
|
$(MAKE) -C $(BUILD_DIR)/$(SIM) -j4 all
|
174 |
|
|
$(MAKE) -C $(BUILD_DIR)/$(SIM) install
|
175 |
|
|
|
176 |
|
|
PHONY += busybox
|
177 |
|
|
busybox : $(BUSYBOX)
|
178 |
|
|
$(MAKE) -C $(BUILD_DIR)/$(BUSYBOX) -j4 ARCH=or32 CROSS_COMPILE=or32-uclinux-
|
179 |
|
|
$(MAKE) -C $(BUILD_DIR)/$(BUSYBOX) install ARCH=or32 CROSS_COMPILE=or32-uclinux-
|
180 |
|
|
|
181 |
|
|
PHONY += FORCE
|
182 |
|
|
FORCE:
|
183 |
|
|
|
184 |
|
|
.PHONY : $(PHONY)
|