OSDN Git Service

2013.10.24
[uclinux-h8/uClinux-dist.git] / glibc / Makefile
1
2 glibc-2.3.6-url := \
3         http://ftp.gnu.org/gnu/glibc/glibc-2.3.6.tar.bz2
4 glibc-linuxthreads-2.3.6-url := \
5         http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.3.6.tar.bz2
6 glibc-libidn-2.3.6-url := \
7         http://ftp.gnu.org/gnu/glibc/glibc-libidn-2.3.6.tar.bz2
8
9 glibc-2.5-url := \
10         http://ftp.gnu.org/gnu/glibc/glibc-2.5.tar.bz2
11 glibc-linuxthreads-2.5-url := \
12         http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.5.tar.bz2
13 glibc-libidn-2.5-url := \
14         http://ftp.gnu.org/gnu/glibc/glibc-libidn-2.5.tar.bz2
15
16
17 CONFOPTS = \
18         --disable-sanity-checks \
19         --with-headers=$(STAGEDIR)/include \
20         --disable-profile \
21         --prefix= --sysconfdir=/etc/config
22
23 # CONFOPTS += --enable-kernel=2.4.22
24
25 # do we want a non-debuggable lib or not,  if so remove the C flag and
26 # enable it in glibc,  it knows best where to add it.
27 ifneq ($(findstring -fomit-frame-pointer,$(CFLAGS)),)
28         CONFOPTS += --enable-omitfp
29         CFLAGS := $(subst -fomit-frame-pointer,,$(CFLAGS))
30 endif
31
32 CFLAGS := $(subst -fno-common,,$(CFLAGS))
33 CFLAGS := $(subst -fno-builtin,,$(CFLAGS)) -fgnu89-inline
34 repl = -Wl,--fatal-warnings
35 LDFLAGS := $(subst $(repl),,$(LDFLAGS))
36 LDFLAGS := $(subst -nostdlib,,$(LDFLAGS))
37 LDFLAGS := $(subst -nostartfiles,,$(LDFLAGS))
38 export CFLAGS LDFLAGS
39
40 BUILD_CC = $(HOSTCC)
41 export BUILD_CC
42
43 ifdef CONFIG_GLIBC_2_3_6
44 GLIBC_ALL = glibc-2.3.6-all
45 endif
46 ifdef CONFIG_GLIBC_2_5
47 GLIBC_ALL = glibc-2.5-all
48 endif
49
50 WGET ?= wget
51
52 all: $(GLIBC_ALL)
53
54 %.tar.bz2 %.tar.gz:
55         @echo "Downloading $* ..."
56         @[ -d "$$HOME/.downloads" ] || mkdir ~/.downloads
57         @if [ ! -f "$$HOME/.downloads/$@" ]; then \
58                 (cd ~/.downloads; $(WGET) "$($*-url)"); \
59         fi
60         @if [ -f "$$HOME/.downloads/$@" ]; then \
61                         ln -fs "$$HOME/.downloads/$@" $@; \
62         fi
63         if [ ! -f "$@" ]; then \
64                 echo "Cannot find download for $@" >&2 ; \
65                 exit 1; \
66         fi
67
68 glibc-2.5-all: glibc-2.5-configured
69         rm -rf install
70         mkdir install
71         env LANGUAGE=C LC_ALL=C $(MAKE) -C glibc-2.5 -f Makefile -r srcdir=`pwd` objdir=`pwd`/build install_root=`pwd`/install install
72         : fix groups in linker scripts
73         @find install/. -type f -name *.so* | while read t; do \
74                 if file "$$t" | grep -i ascii > /dev/null; then \
75                         echo "Fixing $$t ..."; \
76                         sed 's?\([      (]\)\(/lib/[^   )]*\)?\1'"`pwd`/install"'\2?g' < "$$t" > "$$t.fixup"; \
77                         cp "$$t.fixup" "$$t"; \
78                         rm -f "$$t.fixup"; \
79                 fi \
80         done
81
82 glibc-2.5-extracted: Makefile glibc-2.5.tar.bz2 glibc-linuxthreads-2.5.tar.bz2 glibc-libidn-2.5.tar.bz2
83         rm -rf glibc-2.5 glibc-libidn-2.5 install build
84         bunzip2 < glibc-2.5.tar.bz2 | tar xf -
85         bunzip2 < glibc-linuxthreads-2.5.tar.bz2 | (cd glibc-2.5; tar xf -)
86         bunzip2 < glibc-libidn-2.5.tar.bz2 | tar xf -
87         mv glibc-libidn-2.5 glibc-2.5/libidn
88         rm -rf glibc-2.5/nptl glibc-2.5/nptl_db
89         @for i in glibc-2.5*.patch; do \
90                 [ -f $$i ] || continue; \
91                 echo "Applying $$i ..."; \
92                 (cd glibc-2.5; patch -p1) < $$i; \
93         done
94         touch $@
95
96 glibc-2.5-configured: Makefile glibc-2.5-extracted
97         rm -rf build
98         mkdir build
99         (cd build; \
100                 CC="$(subst ucfront-gcc,,$(CC))" \
101                 CXX="$(subst ucfront-g++,,$(CXX))" \
102                 libc_cv_ssp=no \
103                 /bin/bash ../glibc-2.5/configure $(CONFIGURE_OPTS) $(CONFOPTS) \
104                         --enable-addons=libidn,linuxthreads; \
105         )
106         mkdir build/dlfcn
107         ln -s libdl.so build/dlfcn/libdl.so.2
108         touch $@
109
110 glibc-2.3.6-all: glibc-2.3.6-configured
111         rm -rf install
112         mkdir install
113         env no_deps=t LANGUAGE=C LC_ALL=C make -C build -f Makefile install_root=`pwd`/install
114         env no_deps=t LANGUAGE=C LC_ALL=C make -C build -f Makefile install_root=`pwd`/install install
115         : fix groups in linker scripts
116         @find install/. -type f -name *.so* | while read t; do \
117                 if file "$$t" | grep -i ascii > /dev/null; then \
118                         echo "Fixing $$t ..."; \
119                         sed 's?\([      (]\)\(/lib/[^   )]*\)?\1'"`pwd`/install"'\2?g' < "$$t" > "$$t.fixup"; \
120                         cp "$$t.fixup" "$$t"; \
121                         rm -f "$$t.fixup"; \
122                 fi \
123         done
124
125 glibc-2.3.6-extracted: Makefile glibc-2.3.6.tar.bz2 glibc-linuxthreads-2.3.6.tar.bz2 glibc-libidn-2.3.6.tar.bz2
126         rm -rf glibc-2.3.6 install build
127         bunzip2 < glibc-2.3.6.tar.bz2 | tar xf -
128         bunzip2 < glibc-linuxthreads-2.3.6.tar.bz2 | (cd glibc-2.3.6; tar xf -)
129         bunzip2 < glibc-libidn-2.3.6.tar.bz2 | (cd glibc-2.3.6; tar xf -)
130         rm -rf glibc-2.3.6/nptl
131         rm -rf glibc-2.3.6/nptl_db
132         @for i in glibc-2.3.6*.patch; do \
133                 [ -f $$i ] || continue; \
134                 echo "Applying $$i ..."; \
135                 (cd glibc-2.3.6; patch -p1) < $$i; \
136         done
137         touch $@
138
139 glibc-2.3.6-configured: Makefile glibc-2.3.6-extracted
140         rm -rf build
141         mkdir build
142         (cd build; \
143                 CC="$(subst ucfront-gcc,,$(CC))" \
144                 CXX="$(subst ucfront-g++,,$(CXX))" \
145                 /bin/bash ../glibc-2.3.6/configure $(CONFIGURE_OPTS) $(CONFOPTS) \
146                         --with-tls --without-__thread \
147                         --enable-add-ons=libidn,linuxthreads; \
148         )
149         #mkdir build/dlfcn
150         #ln -s libdl.so build/dlfcn/libdl.so.2
151         touch $@
152
153 clean:
154         rm -rf build install
155         rm -rf glibc-2.5 glibc-2.5-extracted
156         rm -rf glibc-2.3.6 glibc-2.3.6-extracted
157         rm -f glibc-*.tar.bz2 glibc-*.tar.gz
158
159 romfs:
160         @for i in install; do \
161                 echo "Installing `basename $$i -install` ..."; \
162                 $(ROMFSINST) -f $$i/bin /bin; \
163                 $(ROMFSINST) -f $$i/lib /lib; \
164                 $(ROMFSINST) -f $$i/etc /etc; \
165                 mv $(ROMFSDIR)/etc/config/* $(ROMFSDIR)/etc/default > /dev/null 2>&1; \
166                 $(ROMFSINST) -f $$i/share /share; \
167         done
168         rm -f $(ROMFSDIR)/lib/*.a
169         rm -f $(ROMFSDIR)/lib/*.la