2021-10-11 18:37:13 -03:00

186 lines
6.4 KiB
Makefile

#
# @(#)Makefile 1.1 94/10/31 SMI
#
# Copyright (c) 1987 by Sun Microsystems, Inc.
#
# Sources are organized in a hierarchy according to function, OS-type,
# and machine. At the highest level things with similar function are
# grouped together. At the next level, if need be, they will be
# organized according to OS-type. Machine dependent routines are
# located at the lowest level in the directory hierarchy.
#
# Routines common across all OS versions will be located in a commmon
# directory. Routines compatible with particular OS versions will have
# their own directory, for instance: 4.1, 4.2, and sys5. Machine
# level routines will be in subdirectories called mc68010, mc68020,
# sparc, i386, and vax. Directories named m68k hold code common between
# mc68010 and mc68020 machines.
#
# The C startup code is now located in a directory parallel to libc
# since it does not go into libc. The C run-time code, which is included
# in libc, is always machine dependent is located in crt with the
# appropriate machine level subdirectories.
#
all: xall
include Makefile.arch
include Makefile.master
MAKE_INCLUDE = Makefile.arch Makefile.master $(VERS$(TARGET_MACH)) install_libc.sh
INSTALL = install
DEBUGDIRS = gen/common
4.2DIRS = compat/4.1 gen/4.2 stdio/4.2 sys/4.2
SYS5DIRS = compat/sys5 gen/sys5 stdio/sys5 sys/sys5
COMMDIRS = compat/common crt des gen/common inet net rpc yp stdio/common sys/common
FASTDIRS = gen/common
ALLDIRS = $(4.2DIRS) $(SYS5DIRS) $(COMMDIRS)
GLOBAL_DATA = ctype_.o errlst.o iob.o ieee_globals.o optind.o \
rpc_commondata. siglist.o
GLOBAL_DATA-mc68020 = errno.o fp_commons.o
GLOBAL_DATA-mc68010 = $(GLOBAL_DATA-mc68020)
GLOBAL_DATA-sparc = errno.o
# NOTE - Major version numbers are machine dependent. Furthermore the major
# numbers of the System 5 and Berkeley 4.2 based libraries will differ by
# one
VERS-mc68010 = vers-m68k
VERS-mc68020 = vers-m68k
VERS-sparc = vers-sparc
libc_comm.so := SUBDIRS = $(COMMDIRS)
libc.so := SUBDIRS = $(4.2DIRS) gen/common stdio/common
libc.a libc_p.a := SUBDIRS = $(4.2DIRS) $(COMMDIRS)
libcs5.so := SUBDIRS = $(SYS5DIRS) gen/common stdio/common
libcs5.a libcs5_p.a := SUBDIRS = $(SYS5DIRS) $(COMMDIRS)
libbsdmalloc.a := SUBDIRS = $(FASTDIRS)
libc_comm.so := DIRS = $(SUBDIRS:%=%/shared/*.o)
libc.so := DIRS = $(SUBDIRS:%=%/shared_4.2/*.o)
libc.a := DIRS = $(4.2DIRS:%=%/obj/*.o) $(COMMDIRS:%=%/obj/*.o)
libc_p.a := DIRS = $(4.2DIRS:%=%/obj_p/*.o) $(COMMDIRS:%=%/obj_p/*.o)
libcs5.a := DIRS = $(SYS5DIRS:%=%/s5/*.o) $(COMMDIRS:%=%/s5/*.o)
libcs5_p.a := DIRS = $(SYS5DIRS:%=%/s5_p/*.o) $(COMMDIRS:%=%/s5_p/*.o)
libcs5.so := DIRS = $(SUBDIRS:%=%/shared_s5/*.o)
libbsdmalloc.a := DIRS = $(FASTDIRS:%=%/obj_f/*.o)
BUILD = ar rv $(LIB) $?; ranlib $(LIB)
# expect "ln -s ../shared/*.o ../shared_4.2/." to have error with
# filenames collision but the command line is set up to handle it.
libc.so := BUILD = rm -rf shared_4.2; mkdir shared_4.2; \
ln $(DIRS) shared_4.2; \
cd shared;\
(ln -s ../shared/*.o ../shared_4.2/. || true); \
cd ..;\
xstr -l libc_xstr;\
$(CC) $(CFLAGS$(TARGET_MACH)) $(CFLAGS) -R -c -pic xs.c;\
mv xs.o shared_4.2;\
$(LD) -Bsymbolic=object_globals -assert pure-text `objsort lorder-sparc shared_4.2` -ldl;\
mv a.out $(LIB); \
ar rv libc_pic.a shared_4.2/*.o; ranlib libc_pic.a
libcs5.so := BUILD = rm -rf shared_s5; mkdir shared_s5; \
ln $(DIRS) shared_s5; \
cd shared;\
(ln -s ../shared/*.o ../shared_s5/. || true); \
cd ..;\
xstr -l libc_xstr;\
$(CC) $(CFLAGS$(TARGET_MACH)) $(CFLAGS) -R -c -pic xs.c;\
mv xs.o shared_s5;\
$(LD) -Bsymbolic=object_globals -assert pure-text `objsort lorder-sparc shared_s5` -ldl;\
mv a.out $(LIB);\
ar rv libcs5_pic.a shared_s5/*.o; ranlib libcs5_pic.a
libc_comm.so := BUILD = rm -rf shared; mkdir shared; ln $(DIRS) shared;
XSTR = strings
MEMBERS = $(LIB)($(DIRS))
libc.so := MEMBERS = libc_comm.so $(DIRS)
libcs5.so := MEMBERS = libc_comm.so $(DIRS)
libc_comm.so := MEMBERS = $(DIRS)
SHLIBS = shlib.etc/Makefile shlib.etc/README shlib.etc/awkfile
.INIT: $(MAKE_INCLUDE) lorder-sparc objsort object_globals
.PRECIOUS: $(LIBS)
xall: $(MAKE_INCLUDE) $(LIBS) $(LIBS_SA)
$(LIBS) : $(XSTR) $$(SUBDIRS) $$@_BUILT
LIB_BUILT = $(LIBS:%=%_BUILT)
$(LIB_BUILT) : $$(MEMBERS)
$(BUILD)
touch $@
$$(LIB)(%.o) : %.o
@true
$$(DIRS):
@true
$(XSTR) : FRC
@if [ ! -f strings ]; then \
make clean;\
fi
$(4.2DIRS) $(SYS5DIRS) $(COMMDIRS) : FRC
cd $@; $(MAKE) $(MFLAGS) $(LIB)
libc.sa: libc.a
ar x libc.a $(GLOBAL_DATA) $(GLOBAL_DATA$(TARGET_MACH))
ar rv $@ $(GLOBAL_DATA) $(GLOBAL_DATA$(TARGET_MACH))
ranlib $@
libc_pic.a : libc.so
ar rv $@ $(4.2DIRS:%=%/shared_4.2/*.o) $(COMMDIRS:%=%/shared/*.o)
ranlib $@
libcs5.sa: libcs5.a
ar x libcs5.a $(GLOBAL_DATA) $(GLOBAL_DATA$(TARGET_MACH))
ar rv $@ $(GLOBAL_DATA) $(GLOBAL_DATA$(TARGET_MACH))
ranlib $@
libcs5_pic.a: libcs5.so
ar rv $@ $(SYS5DIRS:%=%/shared_s5/*.o) $(COMMDIRS:%=%/shared/*.o);
ranlib $@
clean:
-for i in ${ALLDIRS}; do (cd $$i; $(MAKE) clean); done
-for i in ${DEBUGDIRS}; do (cd $$i/debug; $(MAKE) clean); done
rm -rf tmp version *.o strings libc_pic.a libcs5_pic.a
rm -rf libc.a libc_p.a libc.so libc.sa libbsdmalloc.a
rm -rf libcs5.a libcs5_p.a libcs5.so libcs5.sa libc_comm.so
international:
$(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) IFLAGS="$(IFLAGS)" \
LDFLAGS="$(LDFLAGS)" -f Makefile.inter
install: $(VERS$(TARGET_MACH)) $(SHLIBS)
${INSTALL} -d -m 755 ${DESTDIR}/usr/lib/shlib.etc
${INSTALL} -m 644 lorder-sparc ${DESTDIR}/usr/lib/shlib.etc
${INSTALL} objsort ${DESTDIR}/usr/lib/shlib.etc
${INSTALL} -m 644 shlib.etc/Makefile ${DESTDIR}/usr/lib/shlib.etc
${INSTALL} -m 644 shlib.etc/README ${DESTDIR}/usr/lib/shlib.etc
${INSTALL} -m 644 shlib.etc/awkfile ${DESTDIR}/usr/lib/shlib.etc
${INSTALL} -m 644 libc_pic.a ${DESTDIR}/usr/lib/shlib.etc
${INSTALL} -m 644 libcs5_pic.a ${DESTDIR}/usr/lib/shlib.etc
${INSTALL} -m 644 libcs5.a ${DESTDIR}/usr/5lib/libc.a
ranlib ${DESTDIR}/usr/5lib/libc.a
${INSTALL} -m 644 libcs5_p.a ${DESTDIR}/usr/5lib/libc_p.a
ranlib ${DESTDIR}/usr/5lib/libc_p.a
${INSTALL} -m 644 libc.a ${DESTDIR}/usr/lib/libc.a
ranlib ${DESTDIR}/usr/lib/libc.a
${INSTALL} -m 644 libc_p.a ${DESTDIR}/usr/lib/libc_p.a
ranlib ${DESTDIR}/usr/lib/libc_p.a
${INSTALL} -m 644 libbsdmalloc.a ${DESTDIR}/usr/lib/libbsdmalloc.a
ranlib ${DESTDIR}/usr/lib/libbsdmalloc.a
if [ -s $(VERS$(TARGET_MACH)) ]; then \
sh -x install_libc.sh $(INSTALL) $(VERS$(TARGET_MACH)) $(DESTDIR); \
fi;
-for i in ${DEBUGDIRS}; do \
(cd $$i/debug; $(MAKE) install DESTDIR=$(DESTDIR)); \
done
FRC: