1
0
Files
irix-657m-src/irix/lib/libc/Makefile
2022-09-29 17:59:04 +03:00

586 lines
19 KiB
Makefile

#!smake
#ident "$Revision: 1.128 $"
#
# According to the Generic ABI, the libc shared object is libc.so.1.
# However in this Makefile, the target libc shared object is libc.so and
# it is installed as libc.so.1. The target of libc.so permits make(1) to
# use the .a.so inference rule to generate the shared object.
#
BASELIB=libc.a
ALTLIBS=libc_32_M2_ns.a libc_nomp_32_M2_ns.a \
libc_32_abi.a \
libc_G0_noso_32.a \
libc_64_M3.a libc_64_M3_ns.a \
libc_64_M4.a libc_64_M4_ns.a \
libc_64_abi.a \
libc_n32_M3.a libc_n32_M3_ns.a libc_nomp_n32_M3_ns.a \
libc_n32_M4.a libc_n32_M4_ns.a \
DSOEXPORTS=common.exports.new
DSOEXPORTS_N32=$(DSOEXPORTS)
DSOEXPORTS_32_ABI=abi.exports
DSOEXPORTS_64=$(DSOEXPORTS)
DSOEXPORTS_64_ABI=abi.exports
ABISO=yes-please
PRIVATEFILES=-x '^.*\.x$$'
#
# This is the list of objects containing frequently written variables. It
# was generated using "solocal -m -Alibc.a libc.so.1" with the following
# adjustments:
# Added hot hidden files to the list:
# atexit.o dial.o, _loc_data.o, getopt.o, xdr.o drand48.o
# Some of the above files have their data re-written with the same
# value they are initted with, thus confusing solocal.
# Bump up getpty.o and putenv.o since used by 'xwsh'
# Always put data.o, sibuf.o, and sobuf.o at the end because
# iob[], smbuf, sibuf, and sobuf are so big!!!
#
HIGHUSAGEOBJS=\
getopt.o xdr.o _loc_data.o \
issubdir.o sleep.o regex.o rand.o crypt.o res_init.o \
inet_ntoa.o _locale.o ns_services.o sesmgr_t6net.o popen.o \
tmpnam.o oserror.o random.o import_def.o mp_def.o semlibc.o usinit.o \
cuexit.o atexit.o tempnam.o ctime.o gtxt.o getpty.o auth_none.o \
getutx.o bindresvport.o yp_bind.o opt_data.o ns_shadow.o mntent.o \
syslog.o ns_hosts.o ns_group.o strtok.o ns_passwd.o time_comm.o \
time_gdata.o putenv.o setlocale.o cap_acquire.o cerror.o ns_proto.o \
sigsetops.o blk_init.o flush.o malloc.o execv.o sbrk.o \
data.o sibuf.o sobuf.o
include $(ROOT)/usr/include/make/librootdefs
# Add lint and old static shared libs
TARGETS+=llib-lc.ln
# Add compatibility libmpc libs
#if !empty(STYLES_TO_BUILD:M32*)
TARGETS+=libmpc.a
#endif
#if !empty(STYLES_TO_BUILD:M64*)
TARGETS+=libmpc_64_M3.a libmpc_64_M4.a
#endif
#if !empty(STYLES_TO_BUILD:MN32*)
TARGETS+=libmpc_n32_M3.a libmpc_n32_M4.a
#endif
LLDDSOOPTS=-rdata_shared -exclude _rld_new_interface.o -e __exec_rld -LD_LAYOUT:segalign=0x4000
DSONAMEOPT=-soname libc.so.1
DSOTARGOPT=libc.so # only for the test rule
LDIRT=so_locations common.exports.new \
libc.so.precord libc_n32_M3.so.precord libc_n32_M4.so.precord \
libc_64_M3.so.precord libc_64_M4.so.precord \
libcdso.a
# don't turn on -no_unresolved for these libraries
LD_NO_UNRESOLVED=
INSOPT=-m 444 -idb "nostrip"
INSOPT4=-idb "mach(CPUARCH=R4000)"
INSOPT8=-idb "mach(CPUARCH=R8000 CPUARCH=R10000 CPUARCH=R5000)"
INSOPT8_64=-idb "mach(CPUARCH=R8000 CPUARCH=R10000 MODE=64bit)"
#
# Set CSTYLE to NULL so that any .c's compiled in this directory require
# full style info
#
CSTYLE=
SHOWREFS=${TOOLROOT}/usr/sbin/showrefs
default!$(TARGETS)
chmod 0755 libc.so
llib-lc.ln: llib-lc.c
$(LINT) -Y$(ROOT)/usr/include -vxd -Xa -oc -n llib-lc.c
#
# We seem to be having problems with data and text placement ...
# This will quickly check for problems
# Also do name space sanity checking
# There should be only 2 undefined variables _end and _rld_new_interface
#
sane :
@echo "\tPerforming data/text check" ;\
for i in lib*.so ; do \
./data_ck $$i ;\
done
@echo "\tPerforming name space check" ;\
for i in lib*.so ; do \
if test `${SHOWREFS} $$i | wc -l` != 0 ; then \
echo "$$i has name space pollution" ;\
exit 2 ;\
fi ;\
done
# Ignore special SHOWREFS symbols which appear unresolved
@echo "\tPerforming undefined variable check" ;\
for i in lib*.so ; do \
if test "$$i" = "libc_32_abi.so" -o "$$i" = "libc_64_abi.so"; then \
continue ;\
fi ;\
sr_ret=`${SHOWREFS} -u $$i\
| egrep -v\
'__elf_header|__program_header_table|__dso_displacement'\
| wc -l`;\
if test $$sr_ret != 2 -a $$sr_ret != 1 ; then \
echo "$$i has undefined variables" ;\
exit 2 ;\
fi ;\
done
# echo "The value of sr_ret is "$$sr_ret;\
#
# N.B. Please update the dso! rule below with any changes you make here
# All 3 rules are the same except for LDOPTS; not worth the
# restructuring to make it one rule only.
#
# Since most folks just build a few libc's add check here for
# name space pollution so lots of folks see it.
#
$(DSOEXPORTS): common.exports src/iconv/iconv.exports
cat common.exports src/iconv/iconv.exports > $(DSOEXPORTS)
src/iconv/iconv.exports: src/computed_include/matrix.c src/iconv/stdlib_top_src.m4
( cd src/iconv; make iconv.exports )
libc.so: $(.TARGET:.so=.a) libc.so.1.fb
$(AR) xl $(@:.so=.a) $(HIGHUSAGEOBJS)
$(AR) d $(@:.so=.a) $(HIGHUSAGEOBJS)
$(AR) ccrl $(@:.so=.a) $(HIGHUSAGEOBJS)
rm -f $(HIGHUSAGEOBJS)
$(LD) $(LDOPTS_32) $(LDDSOOPTS_32) $(@:.so=.a) -o $@.precord
# use 'cord' to reorder the DSO to optimize text page usage
$(CORD) -o $@ $@.precord libc.so.1.fb
@echo "\tPerforming name space check" ;\
if test `${SHOWREFS} $@ | wc -l` != 0 ; then \
echo "$@ has name space pollution" ;\
exit 2 ;\
fi
libc_n32_M3.so: $(.TARGET:.so=.a) libc.so.1.fb
$(AR) xl $(@:.so=.a) $(HIGHUSAGEOBJS)
$(AR) d $(@:.so=.a) $(HIGHUSAGEOBJS)
$(AR) ccrl $(@:.so=.a) $(HIGHUSAGEOBJS)
rm -f $(HIGHUSAGEOBJS)
$(LD) $(LDOPTS_N32_M3) $(LDDSOOPTS_N32) $(@:.so=.a) -o $@.precord
# use 'cord' to reorder the DSO to optimize text page usage
$(CORD) -o $@ $@.precord libc.so.1.fb
@echo "\tPerforming name space check" ;\
if test `${SHOWREFS} $@ | wc -l` != 0 ; then \
echo "$@ has name space pollution" ;\
exit 2 ;\
fi
libc_n32_M4.so: $(.TARGET:.so=.a) libc.so.1.fb
$(AR) xl $(@:.so=.a) $(HIGHUSAGEOBJS)
$(AR) d $(@:.so=.a) $(HIGHUSAGEOBJS)
$(AR) ccrl $(@:.so=.a) $(HIGHUSAGEOBJS)
rm -f $(HIGHUSAGEOBJS)
$(LD) $(LDOPTS_N32_M4) $(LDDSOOPTS_N32) $(@:.so=.a) -o $@.precord
# use 'cord' to reorder the DSO to optimize text page usage
$(CORD) -o $@ $@.precord libc.so.1.fb
if test `${SHOWREFS} $@ | wc -l` != 0 ; then \
echo "$@ has name space pollution" ;\
exit 2 ;\
fi
libc_64_M3.so: $(.TARGET:.so=.a) libc.so.1.fb
$(AR) xl $(@:.so=.a) $(HIGHUSAGEOBJS)
$(AR) d $(@:.so=.a) $(HIGHUSAGEOBJS)
$(AR) ccrl $(@:.so=.a) $(HIGHUSAGEOBJS)
rm -f $(HIGHUSAGEOBJS)
$(LD) $(LDOPTS_64_M3) $(LDDSOOPTS_64) $(@:.so=.a) -o $@.precord
# use 'cord' to reorder the DSO to optimize text page usage
$(CORD) -o $@ $@.precord libc.so.1.fb
@echo "\tPerforming name space check" ;\
if test `${SHOWREFS} $@ | wc -l` != 0 ; then \
echo "$@ has name space pollution" ;\
exit 2 ;\
fi
libc_64_M4.so: $(.TARGET:.so=.a) libc.so.1.fb
$(AR) xl $(@:.so=.a) $(HIGHUSAGEOBJS)
$(AR) d $(@:.so=.a) $(HIGHUSAGEOBJS)
$(AR) ccrl $(@:.so=.a) $(HIGHUSAGEOBJS)
rm -f $(HIGHUSAGEOBJS)
$(LD) $(LDOPTS_64_M4) $(LDDSOOPTS_64) $(@:.so=.a) -o $@.precord
# use 'cord' to reorder the DSO to optimize text page usage
$(CORD) -o $@ $@.precord libc.so.1.fb
if test `${SHOWREFS} $@ | wc -l` != 0 ; then \
echo "$@ has name space pollution" ;\
exit 2 ;\
fi
include ${LIBROOTRULES}
install!headers exports
$(INST_32_M2_NS) -m 444 -src README.nonshared README
#
# Split up the install rules so that its possible for developers to install
# stuff w/o having to build everything
#
# We install the shared libc.a's for SpeedShop so they can do a -Bsymbolic.
# These are NOT shipped.
#
exports!default
# lint library & message catalogues
#
$(INSTALL) -F /usr/lib/lint -src llib-lc.c llib-lc
$(INSTALL) -F /usr/lib/lint llib-lc.ln
$(INSTALL) -F /usr/lib/locale/C/MSGFILES -m 444 \
-src src/gen/uxsgierr_msg.src uxsgierr_msg.src
$(INSTALL) -F /usr/lib/locale/C/MSGFILES -m 444 \
-src src/gen/uxsyserr_msg.src uxsyserr_msg.src
$(MAKE) doinstalls
$(MAKE) sane
#
# None of the ins*_M4_* are installed since
# we use the dependices to force ins*_M4_* to
# be done first since the build env should have
# ins*_M3_* as the default libs in :
# /usr/lib32 and /usr/lib32/nonshared
# /usr/lib64 and /usr/lib64/nonshared
#
doinstalls!ins32_s ins32_ns ins32_abi \
ins64 ins64_M3_s ins64_M3_ns ins64_abi \
insn32 insn32_M3_s insn32_ns insn32_M3_ns
#
# 32 BIT MIPS2 SHARED
#
ins32_s!
#
# 32 BIT MIPS2 SHARED
#
$(INST_32_M2) -m 444 libmpc.a
$(INST_32_M2) -lns crt1.o acrt1.o
$(INST_32_M2) -m 444 -src src/csu/crt1.o crt1.o
$(INST_32_M2) -m 444 -src src/csu/crtn.o crtn.o
$(INST_32_M2) -m 444 -src src/csu/mcrt1.o mcrt1.o
$(INSTALL) $(INSOPT) -F /usr/SpeedShop$(INSTDIR_32_M2) -src libc.a libc.a
$(I_32_M2) $(INSTALL) -F /lib -m 1555 -src libc.so libc.so.1
$(INST_32_M2) -lns ../../lib/libc.so.1 libc.so.1
$(INST_32_M2) -lns ../../lib/libc.so.1 libc.so
#
# 32 BIT MIPS2 NONSHARED
#
ins32_ns!
#
# 32 BIT MIPS2 NONSHARED
#
$(INST_32_M2_NS) -lns crt1.o acrt1.o
$(INST_32_M2_NS) $(INSOPT) -src libc_32_M2_ns/csu/crt1.o crt1.o
$(INST_32_M2_NS) $(INSOPT) -src libc_32_M2_ns/csu/crtn.o crtn.o
$(INST_32_M2_NS) $(INSOPT) -src libc_32_M2_ns/csu/mcrt1.o mcrt1.o
$(INST_32_M2_NS) -m 444 -src libc_32_M2_ns.a libc.a
# special versions
$(INST_32_M2_NS) -m 444 -src libc_G0_noso_32.a libc_G0.a
$(INST_32_M2_NS) -m 444 -src libc_nomp_32_M2_ns.a libc_nomp.a
# 32 bit ABI objects
ins32_abi!
#
# 32 bit ABI objects
#
$(INST_32_ABI) -lns crt1.o acrt1.o
$(INST_32_ABI) $(INSOPT) -src libc_32_abi/csu/crt1.o crt1.o
$(INST_32_ABI) $(INSOPT) -src libc_32_abi/csu/crtn.o crtn.o
$(INST_32_ABI) $(INSOPT) -src libc_32_abi/csu/mcrt1.o mcrt1.o
$(INST_32_ABI) -src libc_32_abi.so libc.so
#
# 64 BIT VERSIONS
#
ins64!
#
# 64 BIT VERSIONS
#
# Generic link between libc.so and libc.so.1
$(INST_64) -lns libc.so.1 libc.so
#
# 64 BIT MIPS3 SHARED
#
ins64_M3_s! ins64_M4_s
#
# 64 BIT MIPS3 SHARED
#
$(INST_64_M3) -m 444 -src libmpc_64_M3.a libmpc.a
$(INST_64_M3) $(INSOPT) -src libc_64_M3/csu/crt1.o crt1.o
$(INST_64_M3) $(INSOPT) -src libc_64_M3/csu/crtn.o crtn.o
$(INST_64_M3) $(INSOPT) -src libc_64_M3/csu/mcrt1.o mcrt1.o
$(INSTALL) $(INSOPT) -F /usr/SpeedShop$(INSTDIR_64_M3) -src libc_64_M3.a libc.a
$(INST_64_M3) -m 1555 -src libc_64_M3.so libc.so.1
$(INST_64_M3) -lns libc.so.1 libc.so
#
# 64 BIT MIPS3 SHARED - symlinks per CPUARCH & MODE
#
$(I_64_M3) (cd libc_64_M3; $(INST_64) $(INSOPT4) -lns mips3/libc.so.1 libc.so.1)
$(I_64_M3) (cd libc_64_M3; $(INST_64) $(INSOPT4) -lns mips3/crt1.o crt1.o)
$(I_64_M3) (cd libc_64_M3; $(INST_64) $(INSOPT4) -lns mips3/crtn.o crtn.o)
$(I_64_M3) (cd libc_64_M3; $(INST_64) $(INSOPT4) -lns mips3/mcrt1.o mcrt1.o)
#
# 64 BIT MIPS3 NONSHARED
#
ins64_M3_ns! ins64_M4_ns
#
# 64 BIT MIPS3 NONSHARED
#
$(INST_64_M3_NS) $(INSOPT) -src libc_64_M3_ns/csu/crt1.o crt1.o
$(INST_64_M3_NS) $(INSOPT) -src libc_64_M3_ns/csu/crtn.o crtn.o
$(INST_64_M3_NS) $(INSOPT) -src libc_64_M3_ns/csu/mcrt1.o mcrt1.o
$(INST_64_M3_NS) -m 444 -src libc_64_M3_ns.a libc.a
#
# 64 BIT MIPS3 NONSHARED - symlinks per CPUARCH & MODE
#
$(I_64_M3) (cd libc_64_M3_ns; $(INST_64_NS) $(INSOPT4) \
-lns ../mips3/nonshared/crt1.o crt1.o)
$(I_64_M3) (cd libc_64_M3_ns; $(INST_64_NS) $(INSOPT4) \
-lns ../mips3/nonshared/crtn.o crtn.o)
$(I_64_M3) (cd libc_64_M3_ns; $(INST_64_NS) $(INSOPT4) \
-lns ../mips3/nonshared/mcrt1.o mcrt1.o)
$(I_64_M3) (cd libc_64_M3_ns; $(INST_64_NS) $(INSOPT4) \
-lns ../mips3/nonshared/libc.a libc.a)
#
# 64 BIT MIPS4 SHARED
#
ins64_M4_s!
#
# 64 BIT MIPS4 SHARED
#
$(INST_64_M4) -m 444 -src libmpc_64_M4.a libmpc.a
$(INST_64_M4) $(INSOPT) -src libc_64_M4/csu/crt1.o crt1.o
$(INST_64_M4) $(INSOPT) -src libc_64_M4/csu/crtn.o crtn.o
$(INST_64_M4) $(INSOPT) -src libc_64_M4/csu/mcrt1.o mcrt1.o
$(INST_64_M4) -m 1555 -src libc_64_M4.so libc.so.1
$(INST_64_M4) -lns libc.so.1 libc.so
#
# 64 BIT MIPS4 SHARED - symlinks per CPUARCH & MODE
#
$(I_64_M4) (cd libc_64_M4; $(INST_64) $(INSOPT8_64) -lns mips4/libc.so.1 libc.so.1)
$(I_64_M4) (cd libc_64_M4; $(INST_64) $(INSOPT8_64) -lns mips4/crt1.o crt1.o)
$(I_64_M4) (cd libc_64_M4; $(INST_64) $(INSOPT8_64) -lns mips4/crtn.o crtn.o)
$(I_64_M4) (cd libc_64_M4; $(INST_64) $(INSOPT8_64) -lns mips4/mcrt1.o mcrt1.o)
#
# 64 BIT MIPS4 NONSHARED
#
ins64_M4_ns!
#
# 64 BIT MIPS4 NONSHARED
#
$(INST_64_M4_NS) $(INSOPT) -src libc_64_M4_ns/csu/crt1.o crt1.o
$(INST_64_M4_NS) $(INSOPT) -src libc_64_M4_ns/csu/crtn.o crtn.o
$(INST_64_M4_NS) $(INSOPT) -src libc_64_M4_ns/csu/mcrt1.o mcrt1.o
$(INST_64_M4_NS) -m 444 -src libc_64_M4_ns.a libc.a
#
# 64 BIT MIPS4 NONSHARED - symlinks per CPUARCH & MODE
#
$(I_64_M4) (cd libc_64_M4_ns; $(INST_64_NS) $(INSOPT8_64) \
-lns ../mips4/nonshared/crt1.o crt1.o)
$(I_64_M4) (cd libc_64_M4_ns; $(INST_64_NS) $(INSOPT8_64) \
-lns ../mips4/nonshared/crtn.o crtn.o)
$(I_64_M4) (cd libc_64_M4_ns; $(INST_64_NS) $(INSOPT8_64) \
-lns ../mips4/nonshared/mcrt1.o mcrt1.o)
$(I_64_M4) (cd libc_64_M4_ns; $(INST_64_NS) $(INSOPT8_64) \
-lns ../mips4/nonshared/libc.a libc.a)
# 64 bit ABI objects
ins64_abi!
#
# 64 bit ABI objects
#
$(INST_64_ABI) -lns crt1.o acrt1.o
$(INST_64_ABI) $(INSOPT) -src libc_64_abi/csu/crt1.o crt1.o
$(INST_64_ABI) $(INSOPT) -src libc_64_abi/csu/crtn.o crtn.o
$(INST_64_ABI) $(INSOPT) -src libc_64_abi/csu/mcrt1.o mcrt1.o
$(INST_64_ABI) -src libc_64_abi.so libc.so
#
# n32 BIT VERSIONS
#
insn32!
#
# n32 BIT VERSIONS
#
# Generic link between libc.so -> libc.so.1 and
# libc.so.1 -> /lib32/libc.so.1 in /usr/lib32
$(INST_N32) -lns libc.so.1 libc.so
$(INST_N32) -lns ../../lib32/libc.so.1 libc.so.1
#
# n32 BIT VERSIONS NONSHARED
#
insn32_ns!
#
# n32 BIT VERSIONS NONSHARED
#
$(INST_N32_NS) -m 444 -src libc_nomp_n32_M3_ns.a libc_nomp.a
#
# n32 BIT MIPS3 SHARED
#
insn32_M3_s! insn32_M4_s
#
# n32 BIT MIPS3 SHARED
#
$(INST_N32_M3) -m 444 -src libmpc_n32_M3.a libmpc.a
$(INST_N32_M3) $(INSOPT) -src libc_n32_M3/csu/crt1.o crt1.o
$(INST_N32_M3) $(INSOPT) -src libc_n32_M3/csu/crtn.o crtn.o
$(INST_N32_M3) $(INSOPT) -src libc_n32_M3/csu/mcrt1.o mcrt1.o
$(INSTALL) $(INSOPT) -F /usr/SpeedShop$(INSTDIR_N32_M3) -src libc_n32_M3.a libc.a
$(INST_N32_M3) -lns libc.so.1 libc.so
# install a "real" mips3 n32 dso in mips3 dir on r8k systems, in /lib32
# on r4k, a symlink from usr/lib32/mips3/libc.so.1 -> ../libc.so.1
# on r4k. The inverse is done on r8k
$(INST_N32_M3) $(INSOPT8) -m 1555 -src libc_n32_M3.so libc.so.1
$(INSTALL) -F /lib32 $(INSOPT4) -m 1555 -src libc_n32_M3.so libc.so.1
$(INST_N32_M3) $(INSOPT4) -lns ../libc.so.1 libc.so.1
#
# n32 BIT MIPS3 SHARED - symlinks per CPUARCH only
#
$(I_N32_M3) (cd libc_n32_M3; $(INST_N32) $(INSOPT4) -lns mips3/crt1.o crt1.o)
$(I_N32_M3) (cd libc_n32_M3; $(INST_N32) $(INSOPT4) -lns mips3/crtn.o crtn.o)
$(I_N32_M3) (cd libc_n32_M3; $(INST_N32) $(INSOPT4) -lns mips3/mcrt1.o mcrt1.o)
#
# n32 BIT MIPS3 NONSHARED
#
insn32_M3_ns! insn32_M4_ns
#
# n32 BIT MIPS3 NONSHARED
#
$(INST_N32_M3_NS) $(INSOPT) -src libc_n32_M3_ns/csu/crt1.o crt1.o
$(INST_N32_M3_NS) $(INSOPT) -src libc_n32_M3_ns/csu/crtn.o crtn.o
$(INST_N32_M3_NS) $(INSOPT) -src libc_n32_M3_ns/csu/mcrt1.o mcrt1.o
$(INST_N32_M3_NS) -m 444 -src libc_n32_M3_ns.a libc.a
#
# n32 BIT MIPS3 NONSHARED - symlinks per CPUARCH only
#
$(I_N32_M3) (cd libc_n32_M3_ns; $(INST_N32_NS) $(INSOPT4) \
-lns ../mips3/nonshared/crt1.o crt1.o)
$(I_N32_M3) (cd libc_n32_M3_ns; $(INST_N32_NS) $(INSOPT4) \
-lns ../mips3/nonshared/crtn.o crtn.o)
$(I_N32_M3) (cd libc_n32_M3_ns; $(INST_N32_NS) $(INSOPT4) \
-lns ../mips3/nonshared/mcrt1.o mcrt1.o)
$(I_N32_M3) (cd libc_n32_M3_ns; $(INST_N32_NS) $(INSOPT4) \
-lns ../mips3/nonshared/libc.a libc.a)
#
# n32 BIT MIPS4 SHARED
#
insn32_M4_s!
#
# n32 BIT MIPS4 SHARED
#
$(INST_N32_M4) -m 444 -src libmpc_n32_M4.a libmpc.a
$(INST_N32_M4) $(INSOPT) -src libc_n32_M4/csu/crt1.o crt1.o
$(INST_N32_M4) $(INSOPT) -src libc_n32_M4/csu/crtn.o crtn.o
$(INST_N32_M4) $(INSOPT) -src libc_n32_M4/csu/mcrt1.o mcrt1.o
$(INST_N32_M4) -lns libc.so.1 libc.so
# install a "real" mips4 n32 dso in mips4 dir on r4k systems, in /lib32
# on r8k, a symlink from usr/lib32/mips4/libc.so.1 -> ../libc.so.1
# on r8k systems. The inverse is done on r4k
$(INST_N32_M4) $(INSOPT4) -m 1555 -src libc_n32_M4.so libc.so.1
$(INSTALL) -F /lib32 $(INSOPT8) -m 1555 -src libc_n32_M4.so libc.so.1
$(INST_N32_M4) $(INSOPT8) -lns ../libc.so.1 libc.so.1
#
# n32 BIT MIPS4 SHARED - symlinks per CPUARCH only
#
$(I_N32_M4) (cd libc_n32_M4; $(INST_N32) $(INSOPT8) -lns mips4/crt1.o crt1.o)
$(I_N32_M4) (cd libc_n32_M4; $(INST_N32) $(INSOPT8) -lns mips4/crtn.o crtn.o)
$(I_N32_M4) (cd libc_n32_M4; $(INST_N32) $(INSOPT8) -lns mips4/mcrt1.o mcrt1.o)
#
# n32 BIT MIPS4 NONSHARED
#
insn32_M4_ns!
#
# n32 BIT MIPS4 NONSHARED
#
$(INST_N32_M4_NS) $(INSOPT) -src libc_n32_M4_ns/csu/crt1.o crt1.o
$(INST_N32_M4_NS) $(INSOPT) -src libc_n32_M4_ns/csu/crtn.o crtn.o
$(INST_N32_M4_NS) $(INSOPT) -src libc_n32_M4_ns/csu/mcrt1.o mcrt1.o
$(INST_N32_M4_NS) -m 444 -src libc_n32_M4_ns.a libc.a
#
# n32 BIT MIPS4 NONSHARED - symlinks per CPUARCH only
#
$(I_N32_M4) (cd libc_n32_M4_ns; $(INST_N32_NS) $(INSOPT8) \
-lns ../mips4/nonshared/crt1.o crt1.o)
$(I_N32_M4) (cd libc_n32_M4_ns; $(INST_N32_NS) $(INSOPT8) \
-lns ../mips4/nonshared/crtn.o crtn.o)
$(I_N32_M4) (cd libc_n32_M4_ns; $(INST_N32_NS) $(INSOPT8) \
-lns ../mips4/nonshared/mcrt1.o mcrt1.o)
$(I_N32_M4) (cd libc_n32_M4_ns; $(INST_N32_NS) $(INSOPT8) \
-lns ../mips4/nonshared/libc.a libc.a)
#
# The symlink from /lib/libc.so --> /lib/libc.so.1 is for compatibility.
# libc.so.1 is set with the sticky bit to enable 'ghost' regions
#
headers!
$(INSTALL) -F $(INSTINC) -m 444 -idb "noship" -src inc/synonyms.h libc_synonyms.h
$(INSTALL) -F $(INSTINC) -m 444 -idb "noship" -src inc/sync_internal.h sync_internal.h
$(INSTALL) -F $(INSTINC) -m 444 -idb "noship" -src inc/semaphore_internal.h semaphore_internal.h
$(INSTALL) -F $(INSTINC) -m 444 -idb "noship" -src inc/mplib.h mplib.h
$(INSTALL) -F $(INSTINC) -m 444 -idb "noship" -src inc/libc_interpose.h libc_interpose.h
$(INSTALL) -F $(INSTINC) -m 444 -idb "noship" -src inc/_wchar.h _wchar.h
$(INSTALL) -F $(INSTINC) -m 444 -src inc/wctype.h wctype.h
$(INSTALL) -F $(INSTINC) -m 444 -src inc/widec.h widec.h
libmpc.a: mpcdummy.o
$(AR) rc libmpc.a mpcdummy.o
libmpc_64_M3.a:
$(CCF) -64 -mips3 -o mpcdummy_64_M3.o -c mpcdummy.c
$(AR) rc libmpc_64_M3.a mpcdummy_64_M3.o
rm mpcdummy_64_M3.o
libmpc_64_M4.a:
$(CCF) -64 -mips4 -o mpcdummy_64_M4.o -c mpcdummy.c
$(AR) rc libmpc_64_M4.a mpcdummy_64_M4.o
rm mpcdummy_64_M4.o
libmpc_n32_M3.a:
$(CCF) -n32 -mips3 -o mpcdummy_n32_M3.o -c mpcdummy.c
$(AR) rc libmpc_n32_M3.a mpcdummy_n32_M3.o
rm mpcdummy_n32_M3.o
libmpc_n32_M4.a:
$(CCF) -n32 -mips4 -o mpcdummy_n32_M4.o -c mpcdummy.c
$(AR) rc libmpc_n32_M4.a mpcdummy_n32_M4.o
rm mpcdummy_n32_M4.o
#
# A convenience rule for test building .so's
#
dso!
cp libc.a libcdso.a
$(AR) xl libcdso.a $(HIGHUSAGEOBJS)
$(AR) d libcdso.a $(HIGHUSAGEOBJS)
$(AR) ccrl libcdso.a $(HIGHUSAGEOBJS)
rm -f $(HIGHUSAGEOBJS)
$(LD) $(LDOPTS_32) $(LDDSOOPTS) libcdso.a -o $(DSOTARGOPT).precord
# use 'cord' to reorder the DSO to optimize text page usage
$(CORD) -o $(DSOTARGOPT) $(DSOTARGOPT).precord libc.so.1.fb
chmod 0755 $(DSOTARGOPT)
showtargets!
@echo $(TARGETS)