]>
Commit | Line | Data |
---|---|---|
2c8e931c | 1 | # Rules.make for uClibc |
af1112c8 | 2 | # |
4d45bcff EA |
3 | # This file contains rules which are shared between multiple Makefiles. All |
4 | # normal configuration options live in the file named "Config". You probably | |
dfca1817 | 5 | # should not mess with this file unless you know what you are doing... |
af1112c8 | 6 | # |
5a653498 EA |
7 | # Copyright (C) 2000 by Lineo, inc. |
8 | # Copyright (C) 2000,2001 Erik Andersen <[email protected]> | |
af1112c8 EA |
9 | # |
10 | # This program is free software; you can redistribute it and/or modify it under | |
11 | # the terms of the GNU Library General Public License as published by the Free | |
12 | # Software Foundation; either version 2 of the License, or (at your option) any | |
13 | # later version. | |
14 | # | |
15 | # This program is distributed in the hope that it will be useful, but WITHOUT | |
16 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | |
91102e0d | 17 | # FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more |
af1112c8 EA |
18 | # details. |
19 | # | |
4d45bcff EA |
20 | # You should have received a copy of the GNU Library General Public License |
21 | # along with this program; if not, write to the Free Software Foundation, Inc., | |
22 | # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
af1112c8 | 23 | # |
af1112c8 | 24 | |
48b5bb26 | 25 | include $(TOPDIR)Config |
af1112c8 | 26 | |
c75d8083 | 27 | MAJOR_VERSION=0 |
6b172cd7 | 28 | MINOR_VERSION=9.9 |
3c735763 | 29 | VERSION=$(MAJOR_VERSION).$(MINOR_VERSION) |
c75d8083 | 30 | |
0c156a80 | 31 | LIBNAME=libc.a |
249cb00d | 32 | SHARED_FULLNAME=libuClibc-$(MAJOR_VERSION).$(MINOR_VERSION).so |
c75d8083 | 33 | SHARED_MAJORNAME=libc.so.$(MAJOR_VERSION) |
ffc7bb39 | 34 | UCLIBC_LDSO=ld-uClibc.so.$(MAJOR_VERSION) |
f0da4aa1 | 35 | LIBC=$(TOPDIR)libc/libc.a |
c75d8083 | 36 | |
53cfafba EA |
37 | BUILDTIME = ${shell TZ=UTC date --utc "+%Y.%m.%d-%H:%M%z"} |
38 | GCCINCDIR = ${shell $(CC) -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp"} | |
47e0a806 DM |
39 | NATIVE_ARCH = ${shell uname -m | sed \ |
40 | -e 's/i.86/i386/' \ | |
41 | -e 's/sparc.*/sparc/' \ | |
42 | -e 's/arm.*/arm/g' \ | |
43 | -e 's/m68k.*/m68k/' \ | |
44 | -e 's/ppc/powerpc/g' \ | |
45 | -e 's/v850.*/v850/g' \ | |
59c9d20a EA |
46 | -e 's/sh[234].*/sh/' \ |
47 | -e 's/mips.*/mips/' \ | |
47e0a806 | 48 | } |
cbc40534 | 49 | ifeq ($(strip $(TARGET_ARCH)),) |
47e0a806 DM |
50 | TARGET_ARCH=${shell $(CC) -dumpmachine | sed -e s'/-.*//' \ |
51 | -e 's/i.86/i386/' \ | |
52 | -e 's/sparc.*/sparc/' \ | |
53 | -e 's/arm.*/arm/g' \ | |
54 | -e 's/m68k.*/m68k/' \ | |
55 | -e 's/ppc/powerpc/g' \ | |
56 | -e 's/v850.*/v850/g' \ | |
57 | -e 's/sh[234]/sh/' \ | |
59c9d20a | 58 | -e 's/mips.*/mips/' \ |
47e0a806 | 59 | } |
cbc40534 | 60 | endif |
af1112c8 | 61 | |
06d634ea | 62 | # Some nice architecture specific optimizations |
5a2610fb | 63 | ifndef OPTIMIZATION |
5811a4e8 EA |
64 | |
65 | ||
06d634ea | 66 | # use '-Os' optimization if available, else use -O2, allow Config to override |
f605da2f | 67 | OPTIMIZATION += ${shell if $(CC) -Os -S -o /dev/null -xc /dev/null >/dev/null 2>&1; \ |
53cfafba | 68 | then echo "-Os"; else echo "-O2" ; fi} |
f605da2f EA |
69 | OPTIMIZATION += ${shell if $(CC) -falign-functions=1 -S -o /dev/null -xc \ |
70 | /dev/null >/dev/null 2>&1; then echo "-falign-functions=1"; fi} | |
06d634ea EA |
71 | ifeq ($(strip $(TARGET_ARCH)),arm) |
72 | OPTIMIZATION+=-fstrict-aliasing | |
73 | endif | |
74 | ifeq ($(strip $(TARGET_ARCH)),i386) | |
75 | OPTIMIZATION+=-march=i386 | |
76 | OPTIMIZATION += ${shell if $(CC) -mpreferred-stack-boundary=2 -S -o /dev/null -xc \ | |
77 | /dev/null >/dev/null 2>&1; then echo "-mpreferred-stack-boundary=2"; fi} | |
78 | OPTIMIZATION += ${shell if $(CC) -malign-functions=0 -malign-jumps=0 -malign-loops=0 \ | |
79 | -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo \ | |
80 | "-malign-functions=0 -malign-jumps=0 -malign-loops=0"; fi} | |
81 | CPUFLAGS+=-pipe | |
82 | else | |
83 | CPUFLAGS+=-pipe | |
84 | endif | |
5a2610fb | 85 | endif |
163df9f2 | 86 | |
af1112c8 EA |
87 | ARFLAGS=r |
88 | ||
dd43462e EA |
89 | CFLAGS=$(WARNINGS) $(OPTIMIZATION) -fno-builtin -nostdinc $(CPUFLAGS) \ |
90 | -nostdinc -I$(TOPDIR)include -I$(GCCINCDIR) -I. -D_LIBC $(ARCH_CFLAGS) | |
cbc40534 | 91 | NATIVE_CFLAGS=-O2 -Wall |
af1112c8 | 92 | |
7d5029c0 | 93 | ifeq ($(strip $(DODEBUG)),true) |
ff044eda | 94 | CFLAGS += -g |
75d013b1 | 95 | LDFLAGS = -shared --warn-common --warn-once -z combreloc |
350c0215 | 96 | STRIPTOOL = /bin/true -Since_we_are_debugging |
af1112c8 | 97 | else |
cc800836 | 98 | CFLAGS += -DNDEBUG #-fomit-frame-pointer |
75d013b1 | 99 | LDFLAGS = -s -shared --warn-common --warn-once -z combreloc |
c5207a55 EA |
100 | endif |
101 | ||
08e0c24b | 102 | ifeq ($(strip $(HAVE_SHARED)),true) |
5811a4e8 | 103 | DOPIC=true |
96277cfc | 104 | LIBRARY_CACHE=#-DUSE_CACHE |
5811a4e8 EA |
105 | ifeq ($(strip $(BUILD_UCLIBC_LDSO)),true) |
106 | LDSO=$(TOPDIR)lib/$(UCLIBC_LDSO) | |
107 | DYNAMIC_LINKER=$(SHARED_LIB_LOADER_PATH)/$(UCLIBC_LDSO) | |
e356ea32 | 108 | BUILD_DYNAMIC_LINKER=${shell cd $(TOPDIR)lib && pwd}/$(UCLIBC_LDSO) |
5811a4e8 EA |
109 | else |
110 | LDSO=$(SYSTEM_LDSO) | |
59c9d20a | 111 | BUILD_UCLIBC_LDSO=false |
5811a4e8 EA |
112 | DYNAMIC_LINKER=/lib/$(notdir $(SYSTEM_LDSO)) |
113 | BUILD_DYNAMIC_LINKER=/lib/$(notdir $(SYSTEM_LDSO)) | |
91307a36 | 114 | endif |
eba708a6 | 115 | endif |
dd43462e | 116 | ifeq ($(strip $(DOPIC)),true) |
5811a4e8 | 117 | CFLAGS += -fPIC |
dd43462e | 118 | endif |
e356ea32 EA |
119 | ifeq ($(strip $(INCLUDE_THREADS)),true) |
120 | CFLAGS += -D_LIBC_REENTRANT | |
121 | endif | |
dfca1817 | 122 | |
ae8937b0 EA |
123 | # TARGET_PREFIX is the directory under which which the uClibc runtime |
124 | # environment will be installed and used on the target system. The | |
125 | # result will look something like the following: | |
126 | # TARGET_PREFIX/ | |
127 | # lib/ <contains all runtime and static libs> | |
128 | # usr/lib/ <this directory is searched for runtime libs> | |
129 | # etc/ <weher the shared library cache and configuration | |
130 | # information go if you enabled LIBRARY_CACHE above> | |
131 | # Very few people will need to change this value from the default... | |
132 | TARGET_PREFIX = / | |
af1112c8 | 133 |