]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blame - src/uClibc/make/uclibc.mk
uClibc-0.29.8 funktioniert mit GCC 4.0.3
[people/pmueller/ipfire-2.x.git] / src / uClibc / make / uclibc.mk
CommitLineData
cd1a2927
MT
1#############################################################
2#
3# uClibc (the C library)
4#
5#############################################################
6ifeq ($(USE_UCLIBC_SNAPSHOT),true)
7# Be aware that this changes daily....
8UCLIBC_DIR=$(TOOL_BUILD_DIR)/uClibc
9UCLIBC_SOURCE=uClibc-snapshot.tar.gz
10UCLIBC_SITE:=http://www.uclibc.org/downloads/snapshots
11else
1d4ec104
MT
12UCLIBC_DIR:=$(TOOL_BUILD_DIR)/uClibc-0.9.28
13UCLIBC_SOURCE:=uClibc-0.9.28.tar.bz2
cd1a2927
MT
14UCLIBC_SITE:=http://www.uclibc.org/downloads
15endif
16LINUX_DIR:=/usr/src/linux
17
18UCLIBC_TARGET_ARCH:=$(shell echo $(ARCH) | sed -e s'/-.*//' \
19 -e 's/i.86/i386/' \
20 -e 's/sparc.*/sparc/' \
21 -e 's/arm.*/arm/g' \
22 -e 's/m68k.*/m68k/' \
23 -e 's/ppc/powerpc/g' \
24 -e 's/v850.*/v850/g' \
25 -e 's/sh64/sh/' \
26 -e 's/sh[234]/sh/' \
27 -e 's/mips.*/mips/' \
28 -e 's/mipsel.*/mips/' \
29 -e 's/cris.*/cris/' \
30)
31
32
33$(DL_DIR)/$(UCLIBC_SOURCE):
34# $(WGET) -P $(DL_DIR) $(UCLIBC_SITE)/$(UCLIBC_SOURCE)
35
36$(UCLIBC_DIR)/.unpacked: $(DL_DIR)/$(UCLIBC_SOURCE)
1d4ec104
MT
37 bzip2 -dc $(DL_DIR)/$(UCLIBC_SOURCE) | tar -C $(TOOL_BUILD_DIR) -xf -
38 sed -i -e 's/include <sys\/types.h>/include <sys\/types.h>\n#include <pthread.h>/' $(UCLIBC_DIR)/librt/kernel-posix-timers.h
cd1a2927
MT
39 touch $(UCLIBC_DIR)/.unpacked
40
41$(UCLIBC_DIR)/.configured: $(UCLIBC_DIR)/.unpacked
42 $(MAKE) -C $(UCLIBC_DIR) defconfig;
1d4ec104 43 cp $(SOURCE_DIR)/uClibc.config-$(MACHINE) $(UCLIBC_DIR)/.config
cd1a2927
MT
44 cp $(SOURCE_DIR)/locales.txt $(UCLIBC_DIR)/extra/locale
45 cp $(SOURCE_DIR)/codesets.txt $(UCLIBC_DIR)/extra/locale
46 $(MAKE) -C $(UCLIBC_DIR) PREFIX=$(STAGING_DIR) headers;
47 (cd $(UCLIBC_DIR)/extra/locale; \
41921bd9 48 patch -Np0 < /usr/src/src/patches/uClibc-gen_wctype-segfault.patch; \
cd1a2927
MT
49 $(MAKE); \
50 )
51 $(MAKE) -C $(UCLIBC_DIR) PREFIX=$(STAGING_DIR) install_dev;
52 rm -rf $(STAGING_DIR)/include
53 ln -s $(STAGING_DIR)/usr/include $(STAGING_DIR)/include
54 touch $(UCLIBC_DIR)/.configured
55
56$(UCLIBC_DIR)/lib/libc.a: $(UCLIBC_DIR)/.configured $(LIBFLOAT_TARGET)
57 $(SED) 's,^CROSS=.*,CROSS=$(TARGET_CROSS),g' $(UCLIBC_DIR)/Rules.mak
58 $(MAKE) -C $(UCLIBC_DIR) oldconfig
59 $(MAKE) -C $(UCLIBC_DIR) headers
60 -$(MAKE) -C $(UCLIBC_DIR) pregen
61 (cd $(UCLIBC_DIR)/extra/locale; \
41921bd9 62 patch -Np0 < /usr/src/src/patches/uClibc-gen_wctype-segfault.patch; \
cd1a2927
MT
63 $(MAKE); \
64 )
65 $(MAKE) -C $(UCLIBC_DIR)
66
67$(STAGING_DIR)/lib/libc.a: $(UCLIBC_DIR)/lib/libc.a
68 $(MAKE) -C $(UCLIBC_DIR) PREFIX=$(STAGING_DIR) install_dev install_runtime
69 $(MAKE) -C $(UCLIBC_DIR) PREFIX=$(STAGING_DIR) utils install_utils
70 # Clean up the host compiled utils...
71 $(MAKE) -C $(UCLIBC_DIR)/utils clean
72 (cd $(STAGING_DIR)/lib; \
73 ln -fs libc.so.0 libc.so; \
74 ln -fs libdl.so.0 libdl.so; \
75 ln -fs libcrypt.so.0 libcrypt.so; \
76 ln -fs libresolv.so.0 libresolv.so; \
77 ln -fs libutil.so.0 libutil.so; \
78 ln -fs libm.so.0 libm.so; \
79 ln -fs libpthread.so.0 libpthread.so; \
80 ln -fs libnsl.so.0 libnsl.so; \
81 ln -fs libthread_db.so.1 libthread_db.so; \
82 )
83
84ifneq ($(TARGET_DIR),)
85$(TARGET_DIR)/lib/libc.so.0: $(STAGING_DIR)/lib/libc.a
86 $(MAKE) -C $(UCLIBC_DIR) PREFIX=$(TARGET_DIR) install_runtime
87
88$(TARGET_DIR)/usr/bin/ldd: $(TARGET_DIR)/lib/libc.so.0
89 $(MAKE) -C $(UCLIBC_DIR) $(TARGET_CONFIGURE_OPTS) \
90 PREFIX=$(TARGET_DIR) utils install_utils
91
92UCLIBC_TARGETS=$(TARGET_DIR)/lib/libc.so.0 $(TARGET_DIR)/usr/bin/ldd
93endif
94
95uclibc-configured: $(UCLIBC_DIR)/.configured
96
41921bd9
MT
97uclibc: $(STAGING_DIR)/bin/$(ARCH)-linux-uclibc-gcc $(STAGING_DIR)/lib/libc.a \
98 $(UCLIBC_TARGETS)
cd1a2927
MT
99
100uclibc-source: $(DL_DIR)/$(UCLIBC_SOURCE)
101
102uclibc-configured-source: uclibc-source
103
104uclibc-clean:
105 -$(MAKE) -C $(UCLIBC_DIR) clean
106 rm -f $(UCLIBC_DIR)/.config
107
108uclibc-dirclean:
109 rm -rf $(UCLIBC_DIR)
110
41921bd9
MT
111
112
113
cd1a2927
MT
114#############################################################
115#
116# uClibc for the target just needs its header files
117# and whatnot installed.
118#
119#############################################################
120
121$(TARGET_DIR)/usr/lib/libc.a: $(STAGING_DIR)/lib/libc.a
122 $(MAKE) -C $(UCLIBC_DIR) $(TARGET_CONFIGURE_OPTS) \
123 PREFIX=$(TARGET_DIR) install_dev
124 (cd $(TARGET_DIR)/usr/lib; \
125 ln -fs /lib/libc.so.0 libc.so; \
126 ln -fs /lib/libdl.so.0 libdl.so; \
127 ln -fs /lib/libcrypt.so.0 libcrypt.so; \
128 ln -fs /lib/libresolv.so.0 libresolv.so; \
129 ln -fs /lib/libutil.so.0 libutil.so; \
130 ln -fs /lib/libm.so.0 libm.so; \
131 ln -fs /lib/libpthread.so.0 libpthread.so; \
132 ln -fs /lib/libnsl.so.0 libnsl.so; \
133 ln -fs /lib/libthread_db.so.1 libthread_db.so; \
134 )
135
136ifeq ($(GCC_2_95_TOOLCHAIN),true)
137uclibc_target: gcc2_95 uclibc $(TARGET_DIR)/usr/lib/libc.a
138else
41921bd9 139uclibc_target: gcc3_3 uclibc $(TARGET_DIR)/usr/lib/libc.a
cd1a2927
MT
140endif
141
142uclibc_target-clean:
143 rm -f $(TARGET_DIR)/include
144
145uclibc_target-dirclean:
146 rm -f $(TARGET_DIR)/include
147