1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
# Library Configuration rules for uClibc
#
# This file contains rules which are shared between multiple Makefiles. Feel
# free to adjust to taste...
# -Erik Andersen <andersen@lineo.com> <andersee@debian.org>
#
# Copyright (C) 2000 by Lineo, inc.
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU Library General Public License as published by the Free
# Software Foundation; either version 2 of the License, or (at your option) any
# later version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more
# details.
#
# You should have received a copy of the GNU Library General Public License
# along with this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Derived in part from the Linux-8086 C library, the GNU C Library, and several
# other sundry sources. Files within this library are copyright by their
# respective copyright holders.
# What arch do you want to compile for...
#TARGET_ARCH=arm
TARGET_ARCH=i386
#TARGET_ARCH=m68k
#TARGET_ARCH=powerpc
#TARGET_ARCH=sh
#TARGET_ARCH=sparc
# If you are running a cross compiler, you may want to set this
# to something more interesting...
NATIVE_CC = gcc
CROSS = #i386-linux-
CC = $(CROSS)gcc
AR = $(CROSS)ar
LD = $(CROSS)ld
NM = $(CROSS)nm
STRIPTOOL = $(CROSS)strip
#STRIPTOOL = /bin/true
# Set the following to `true' to make a debuggable build, and `false' for
# production builds.
DODEBUG = false
# Compiler warnings you want to see
WARNINGS=-Wall
# Enable support for shared libraries?
HAVE_SHARED = true
# Note that the kernel source you use to compile with should be the same as the
# Linux kernel you run your apps on. uClibc doesn't even try to achieve binary
# compatibility across kernel versions. So don't expect, for example, uClibc
# compiled with Linux kernel 2.0.x to implement lchown properly, since 2.0.x
# can't do that. Similarly, if you compile uClibc vs Linux 2.4.x kernel headers,
# but then run on Linux 2.0.x, lchown will be compiled into uClibc, but won't
# work at all. You have been warned.
KERNEL_SOURCE=/usr/src/linux
# Set this to `false' if your CPU doesn't have a memory management unit (MMU).
# Set it to `true' otherwise.
HAS_MMU = true
# Set this to `false' if you don't have/need basic floating point support
# support in libc (strtod, printf, scanf). Set it to `true' otherwise.
# Note: If not true, Rules.mak disables libm as well.
HAS_FLOATING_POINT = true
# Set this to `false' if you don't have/need float functions in libm.
# Set it to `true' otherwise, and make sure HAS_FLOATING_POINT is true as well.
HAS_LIBM_FLOAT = true
# Set this to `false' if you don't have/need double functions in libm.
# Set it to `true' otherwise, and make sure HAS_FLOATING_POINT is true as well.
HAS_LIBM_DOUBLE = true
# Set this to `false' if you don't have/need long double functions in libm.
# Set it to `true' otherwise, and make sure HAS_FLOATING_POINT is true as well.
HAS_LIBM_LONG_DOUBLE = false
# Set this to `false' if you don't have/need "(unsigned) long long int" support.
# Set it to `true' otherwise.
# Affects *printf and *scanf functions.
# Also omits strto(u)ll, and (u)lltostr from the library if `false'.
HAS_LONG_LONG = true
# Set this to `false' if you don't have/need locale support; `true' otherwise.
# Note: Currently only affects the ctype functions. You must also generate
# a locale file for anything but the C locale. See directory extra/locale for
# a utility to do so. Also see the following option.
HAS_LOCALE = false
# Set this to the path of your uClibc locale file directory.
# Warning! This must be different than the glibc locale directory to avoid
# name conflicts, as the locale files are entirely different in format!
LOCALE_DIR = "/usr/share/uClibc-locale/"
# This specifies which malloc implementation is used.
# "malloc-simple" is very, very small, but is also very, very dumb
# and does not try to make good use of memory or clean up after itself.
#
# "malloc" on the other hand is a bit bigger, but is pretty smart thereby
# minimizing memory wastage and reusing already allocated memory. This
# can be lots faster and safer IMHO.
#
# "malloc-930716" is from libc-5.3.12 and was/is the standard gnu malloc.
# It is actually smaller than "malloc", at least on i386. Right now, it
# only works on i386 (and maybe m68k) because it needs sbrk.
#MALLOC = malloc-simple
#MALLOC = malloc
MALLOC = malloc-930716
# If you want to collect common syscall code into one function, set to this to
# `true'. Set it to false otherwise.
# On i386 this saves about than 2.8k over all syscalls.
# The idea came from the implementation in dietlibc.
# At present, only affects i386.
UNIFIED_SYSCALL = false
# If you want large file summit support (greater then 2 Gib),
# turn this on. This has no effect unless your kernel supports
# lfs. This currently does nothing, but may someday...
DOLFS = false
# If you want to include RPC support, enable this. RPC is almost never used
# for anything except NFS support, so unless you plan to use NFS, leave this
# disabled. This is off by default.
INCLUDE_RPC = false
# If you want to compile the library as PIC code, turn this on.
DOPIC = false
# ROOT_DIR is the base directory which will be compiled into the uClibc
# runtime environment. When compiled as a shared library, the shared
# library loader will look in <ROOT_DIR>/lib and <ROOT_DIR>/usr/lib
# for shared libraries.
#
# DEVEL_PREFIX is the base directory which will be compiled into the uClibc
# development environment. The uClibc development environment will
# look for the uClibc header files under <DEVEL_PREFIX><ROOT_DIR>/usr/include,
# and for static libs and crt0.o in <DEVEL_PREFIX><ROOT_DIR>/usr/lib.
# Also, 'make install' will install the compiler tools to
# <DEVEL_PREFIX><ROOT_DIR>/bin and <DEVEL_PREFIX><ROOT_DIR>/usr/bin.
#
# TARGET_PREFIX is the directory under which 'make install' will install the
# uClibc runtime environment. This path does not get compiled into anything,
# and is provided simply to make it easier to build standalone target systems.
# Note: This doesn't do anything if there are no shared libs.
DEVEL_PREFIX =
ROOT_DIR = /usr/$(TARGET_ARCH)-linux-uclibc
TARGET_PREFIX =
|