source: src/router/lib.mipsel/Makefile @ 12672

Last change on this file since 12672 was 12672, checked in by BrainSlayer, 4 years ago

librt addition

File size: 3.5 KB
Line 
1#
2# C library Makefile
3#
4# Copyright 2001-2003, Broadcom Corporation
5# All Rights Reserved.
6#
7# THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
8# KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
9# SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
10# FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
11#
12# $Id: Makefile,v 1.5 2003/10/29 03:43:55 honor Exp $
13#
14include $(TOP)/.config
15ifneq ($(wildcard ../../cy_conf.mak),)
16  include ../../cy_conf.mak
17endif
18
19# Extra libraries
20lib-$(CONFIG_LIBCRYPT) += libcrypt
21lib-$(CONFIG_LIBDL) += libdl
22lib-$(CONFIG_LIBM) += libm
23lib-$(CONFIG_LIBRT) += librt
24lib-$(CONFIG_LIBCPP) += libstdc++
25lib-$(CONFIG_LIBNSL) += libnsl
26#ifeq ($(PARENTAL_CONTROL_SUPPORT),1)
27lib-$(CONFIG_LIBPTHREAD) += libpthread
28#endif
29lib-$(CONFIG_LIBRESOLV) += libresolv
30lib-$(CONFIG_LIBUTIL) += libutil
31
32ifeq ($(CONFIG_UCLIBC),y)
33
34# uClibc names
35LINKER := ld-uClibc.so.0
36LIBC := libc.so.0
37MAP := uClibc.map
38
39else
40
41# GNU libc names
42LINKER := $(foreach lib,ld.so.* ld-linux.so.*,$(notdir $(wildcard $(LIBDIR)/$(lib))))
43LIBC := libc.so.6
44MAP := libc.map
45
46endif
47
48# Nothing to do until installation
49all:
50
51ifeq ($(CONFIG_LIBOPT),y)
52
53# Find all ELF binaries (including extra libraries)
54BINARIES := $(shell find $(TARGETDIR) -path $(TARGETDIR)/lib -prune -o -type f -print | file -f - | grep ELF | cut -d':' -f1)
55BINARIES += $(wildcard $(foreach lib,$(LINKER) $(lib-y),$(LIBDIR)/$(lib) $(LIBDIR)/$(lib).so.?))
56
57ifneq ($(wildcard $(LIBDIR)/optinfo),)
58# Try the toolchain directory first for precursors
59OPTINFO := $(LIBDIR)/optinfo
60else
61# Fall back on platform directory
62OPTINFO := $(PLATFORM)
63endif
64
65ifeq ($(CONFIG_UCLIBC),y)
66
67# uClibc precursors
68OBJS := $(wildcard $(foreach file,libgcc-need.a libc.a interp.o,$(OPTINFO)/$(file)))
69
70# uClibc link parameters
71ENTRY := __uClibc_init
72LDFLAGS := -s -shared --warn-common --warn-once -z combreloc  -soname=$(LIBC) -init $(ENTRY)
73LIBGCC := $(shell $(CC) -print-libgcc-file-name)
74
75$(MAP): $(OPTINFO)/libc.a
76        $(NM) -o --defined-only --no-sort $< | cut -d' ' -f3 > $@
77
78# Find all unresolved symbols that uClibc could resolve
79.symbols: $(MAP) $(BINARIES)
80        rm -f $@
81        for symbol in `$(NM) --dynamic -u --no-sort $(BINARIES) | sort -u` ; do \
82            grep -q "^$${symbol}$$" $(MAP) && echo "-u $${symbol}" >> $@ ; \
83            true ; \
84        done
85
86# Re-link uClibc
87$(LIBC): .symbols $(OBJS)
88        xargs -t $(LD) $(LDFLAGS) -o $@ $(OBJS) < .symbols
89
90else
91
92# GNU libc precursors
93OBJS := $(wildcard $(foreach file,soinit.os libc_pic.a sofini.os,$(OPTINFO)/$(file)))
94
95# GNU libc link parameters
96ENTRY := __libc_main
97CFLAGS := -shared -Wl,-Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -Wl,-dynamic-linker=$(LINKER) -Wl,--version-script=$(MAP) -Wl,-soname=$(LIBC) -nostdlib -nostartfiles -e $(ENTRY)
98
99$(MAP): $(OPTINFO)/libc.map
100        cp $< $@
101
102# Find all unresolved symbols that GNU libc could resolve
103.symbols: $(MAP) $(BINARIES)
104        rm -f $@
105        for symbol in `$(NM) --dynamic -u --no-sort $(BINARIES) | sort -u` ; do \
106            grep -q "$${symbol};" $(MAP) && echo "-u $${symbol}" >> $@ ; \
107        done
108
109# Re-link GNU libc
110$(LIBC): .symbols $(OBJS) $(LIBDIR)/$(LINKER)
111        xargs $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBDIR)/$(LINKER) -lgcc < .symbols
112
113endif
114
115# Install optimized C library
116install: $(LIBC)
117
118else
119
120# Install default C library
121install: $(LIBDIR)/$(LIBC)
122
123endif
124
125# Also install extra libraries
126install: $(wildcard $(foreach lib,$(LINKER) $(lib-y),$(LIBDIR)/$(lib) $(LIBDIR)/$(lib).so.?))
127        install -d $(TARGETDIR)/lib
128        install $^ $(TARGETDIR)/lib/
129        #$(STRIP) $(TARGETDIR)/lib/*.so.*
130
131clean:
132        rm -f $(LIBC) $(MAP) .symbols
Note: See TracBrowser for help on using the repository browser.