# === GNUmakefile =============================================================
# Copyright (c) 1991, 1992, 1993 Chris Provenzano, proven@athena.mit.edu
#
#	Description: This file is for creating libpthread.a
#
#	1.00 93/11/17 proven
#		-Put all the .o files into one file libpthread.a
#		-Initial cut for pthreads.
#

INSTALL_PATH = $(exec_prefix)

      BINDIR = $(INSTALL_PATH)/bin
      LIBDIR = $(INSTALL_PATH)/lib
      MANDIR = $(INSTALL_PATH)/man
      INCDIR = $(INSTALL_PATH)/include
   SUBINCDIR = $(INCDIR)/pthread

          AR = ar
          AS = gas
      CFLAGS = -I. -Iinclude -I$(srcdir)/include -DPTHREAD_KERNEL \
		@CFLAGS@
          LD = gld

        CSRC =

 PTHREAD_DIR = pthreads stdlib stdio gen
        DIRS = $(PTHREAD_DIR)

     HEADERS =

   LIBRARIES = libpthread.a

     .CURDIR = .

# force correct default target
all:

###############################################################################
#
# Read in any special flags that config knows about
include config.flags

# What the heck.  Convert srcdir to absolute form so it looks prettier.
srcdir := $(shell cd $(srcfoo) && pwd)

################################################################################
#
# Here starts the nitty grity part of the Makefile.

all-lib : libpthread.a

include ${srcdir}/pthreads/GNUmakefile.inc
include ${srcdir}/stdlib/GNUmakefile.inc
include ${srcdir}/stdio/GNUmakefile.inc
include ${srcdir}/string/GNUmakefile.inc
include ${srcdir}/gen/GNUmakefile.inc
include ${srcdir}/net/GNUmakefile.inc
include ${srcdir}/scripts/GNUmakefile.inc

REGULAR_OBJS= $(subst .cc,.o,$(SRCS))
REGULAR_OBJS:= $(subst .c,.o,$(REGULAR_OBJS))
REGULAR_OBJS:= $(subst .S,.o,$(REGULAR_OBJS))
OBJS= $(REGULAR_OBJS) $(EXTRA_OBJS)
REALOBJS = $(addprefix obj/, $(OBJS))

$(REALOBJS) : $(types) $(paths)

clean: 
	rm -f a.out core maketmp makeout $(LIBRARIES) $(BINARIES) libpthread.*
	rm -rf obj
	cd tests && $(MAKE) clean && cd ..

install-lib: $(LIBRARIES) install-dirs
	for x in $(LIBRARIES); \
	do install $$x $(DESTDIR)$(LIBDIR); \
	done

install: install-lib install-include install-bin

libpthread.a: obj/libpthread.a
	rm -f libpthread.a
	ln -s obj/libpthread.a .

obj/libpthread.a: ${REALOBJS}
	rm -f libpthread.a obj/new.a obj/libpthread.a
	cd obj && \
		ar r new.a ${OBJS} && \
		$(RANLIB) new.a && \
		mv -f new.a libpthread.a && \
		cd ..

# For examining a combined symbol table, sizes, &c.
libpthread.o: ${REALOBJS}
	cd obj && ld -r -o ../libpthread.o ${OBJS} && cd ..

obj/x:
	if [ -d obj ]; then true; else mkdir obj; fi
	cp /dev/null obj/x

GNUmakefile: config.status ${srcdir}/config/GNUmakefile.in
	$(SHELL) config.status

obj/%.o: %.c obj/x
	$(CC) $(CFLAGS) -c $< -o $@

obj/%.o: %.cc obj/x
	$(CXX) $(CXXFLAGS) -c $< -o $@

obj/%.o: %.S obj/x
	$(CC) $(CFLAGS) -c $< -o $@
