]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - src/uClibc/make/uclibc.mk
d9981a4a0b806b14e3e1ec895e4c1c9d12d6bede
[people/pmueller/ipfire-2.x.git] / src / uClibc / make / uclibc.mk
1 #############################################################
2 #
3 # uClibc (the C library)
4 #
5 #############################################################
6 ifeq ($(USE_UCLIBC_SNAPSHOT),true)
7 # Be aware that this changes daily....
8 UCLIBC_DIR=$(TOOL_BUILD_DIR)/uClibc
9 UCLIBC_SOURCE=uClibc-snapshot.tar.gz
10 UCLIBC_SITE:=http://www.uclibc.org/downloads/snapshots
11 else
12 UCLIBC_DIR:=$(TOOL_BUILD_DIR)/uClibc-0.9.26
13 UCLIBC_SOURCE:=uClibc-0.9.26.tar.gz
14 UCLIBC_SITE:=http://www.uclibc.org/downloads
15 endif
16 LINUX_DIR:=/usr/src/linux
17
18 UCLIBC_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)
37 gzip -dc $(DL_DIR)/$(UCLIBC_SOURCE) | tar -C $(TOOL_BUILD_DIR) -xvf -
38 touch $(UCLIBC_DIR)/.unpacked
39
40 $(UCLIBC_DIR)/.configured: $(UCLIBC_DIR)/.unpacked
41 $(MAKE) -C $(UCLIBC_DIR) defconfig;
42 cp $(SOURCE_DIR)/uClibc.config $(UCLIBC_DIR)/.config
43 cp $(SOURCE_DIR)/locales.txt $(UCLIBC_DIR)/extra/locale
44 cp $(SOURCE_DIR)/codesets.txt $(UCLIBC_DIR)/extra/locale
45 $(MAKE) -C $(UCLIBC_DIR) PREFIX=$(STAGING_DIR) headers;
46 (cd $(UCLIBC_DIR)/extra/locale; \
47 $(MAKE); \
48 )
49 $(MAKE) -C $(UCLIBC_DIR) PREFIX=$(STAGING_DIR) install_dev;
50 rm -rf $(STAGING_DIR)/include
51 ln -s $(STAGING_DIR)/usr/include $(STAGING_DIR)/include
52 touch $(UCLIBC_DIR)/.configured
53
54 $(UCLIBC_DIR)/lib/libc.a: $(UCLIBC_DIR)/.configured $(LIBFLOAT_TARGET)
55 $(SED) 's,^CROSS=.*,CROSS=$(TARGET_CROSS),g' $(UCLIBC_DIR)/Rules.mak
56 $(MAKE) -C $(UCLIBC_DIR) oldconfig
57 $(MAKE) -C $(UCLIBC_DIR) headers
58 -$(MAKE) -C $(UCLIBC_DIR) pregen
59 (cd $(UCLIBC_DIR)/extra/locale; \
60 $(MAKE); \
61 )
62 $(MAKE) -C $(UCLIBC_DIR)
63
64 $(STAGING_DIR)/lib/libc.a: $(UCLIBC_DIR)/lib/libc.a
65 $(MAKE) -C $(UCLIBC_DIR) PREFIX=$(STAGING_DIR) install_dev install_runtime
66 $(MAKE) -C $(UCLIBC_DIR) PREFIX=$(STAGING_DIR) utils install_utils
67 # Clean up the host compiled utils...
68 $(MAKE) -C $(UCLIBC_DIR)/utils clean
69 (cd $(STAGING_DIR)/lib; \
70 ln -fs libc.so.0 libc.so; \
71 ln -fs libdl.so.0 libdl.so; \
72 ln -fs libcrypt.so.0 libcrypt.so; \
73 ln -fs libresolv.so.0 libresolv.so; \
74 ln -fs libutil.so.0 libutil.so; \
75 ln -fs libm.so.0 libm.so; \
76 ln -fs libpthread.so.0 libpthread.so; \
77 ln -fs libnsl.so.0 libnsl.so; \
78 ln -fs libthread_db.so.1 libthread_db.so; \
79 )
80
81 ifneq ($(TARGET_DIR),)
82 $(TARGET_DIR)/lib/libc.so.0: $(STAGING_DIR)/lib/libc.a
83 $(MAKE) -C $(UCLIBC_DIR) PREFIX=$(TARGET_DIR) install_runtime
84
85 $(TARGET_DIR)/usr/bin/ldd: $(TARGET_DIR)/lib/libc.so.0
86 $(MAKE) -C $(UCLIBC_DIR) $(TARGET_CONFIGURE_OPTS) \
87 PREFIX=$(TARGET_DIR) utils install_utils
88
89 UCLIBC_TARGETS=$(TARGET_DIR)/lib/libc.so.0 $(TARGET_DIR)/usr/bin/ldd
90 endif
91
92 uclibc-configured: $(UCLIBC_DIR)/.configured
93
94 uclibc: $(STAGING_DIR)/bin/$(ARCH)-linux-gcc $(STAGING_DIR)/lib/libc.a \
95 $(UCLIBC_TARGETS)
96
97 uclibc-source: $(DL_DIR)/$(UCLIBC_SOURCE)
98
99 uclibc-configured-source: uclibc-source
100
101 uclibc-clean:
102 -$(MAKE) -C $(UCLIBC_DIR) clean
103 rm -f $(UCLIBC_DIR)/.config
104
105 uclibc-dirclean:
106 rm -rf $(UCLIBC_DIR)
107
108
109
110
111 #############################################################
112 #
113 # uClibc for the target just needs its header files
114 # and whatnot installed.
115 #
116 #############################################################
117
118 $(TARGET_DIR)/usr/lib/libc.a: $(STAGING_DIR)/lib/libc.a
119 $(MAKE) -C $(UCLIBC_DIR) $(TARGET_CONFIGURE_OPTS) \
120 PREFIX=$(TARGET_DIR) install_dev
121 (cd $(TARGET_DIR)/usr/lib; \
122 ln -fs /lib/libc.so.0 libc.so; \
123 ln -fs /lib/libdl.so.0 libdl.so; \
124 ln -fs /lib/libcrypt.so.0 libcrypt.so; \
125 ln -fs /lib/libresolv.so.0 libresolv.so; \
126 ln -fs /lib/libutil.so.0 libutil.so; \
127 ln -fs /lib/libm.so.0 libm.so; \
128 ln -fs /lib/libpthread.so.0 libpthread.so; \
129 ln -fs /lib/libnsl.so.0 libnsl.so; \
130 ln -fs /lib/libthread_db.so.1 libthread_db.so; \
131 )
132
133 ifeq ($(GCC_2_95_TOOLCHAIN),true)
134 uclibc_target: gcc2_95 uclibc $(TARGET_DIR)/usr/lib/libc.a
135 else
136 uclibc_target: gcc3_3 uclibc $(TARGET_DIR)/usr/lib/libc.a
137 endif
138
139 uclibc_target-clean:
140 rm -f $(TARGET_DIR)/include
141
142 uclibc_target-dirclean:
143 rm -f $(TARGET_DIR)/include
144