# $Id: PTMakefile,v 1.11 2000/07/27 11:17:58 carlo Exp $
#
# ProtoType Library Makefile
#
# Copyright (C) 1999-2000, by
#
#   Carlo Wood, Run on IRC <carlo@alinoe.com>
#   RSA-1024 0x624ACAD5 1997-01-26                    Sign & Encrypt
#   Fingerprint16 = 32 EC A7 B6 AC DB 65 A6  F6 F6 55 DD 1C DC FF 61
#
# All rights reserved.
#
# See the file LICENSE for copyright information.
#
# This file may be distributed under the terms of the Q Public License 1.0
# as defined by Troll Tech AS of Norway and appearing in the file LICENSE.QPL
# included in the packaging of this file.
#
#-----------------------------------------------------------------------------
#
# Edit $PROTODIR/Makedefs.h to get it working for your system
#

ifeq (.$(LIB).version,$(wildcard .$(LIB).version))
include .$(LIB).version
VERSION=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)
endif

GETSUBOBJS="yes"
include $(PROTODIR)/common/PTMakefile

.PHONY: .subdirs static shared

%.o: %.c $(PROTODIR)/Makedefs.h
	$(CC) $(CFLAGS) -fpic $(IFLAGS) -I- $(SYSTEMINCLUDEFLAGS) -c $< -o $@

%.o: %$(CPPEXT) $(PROTODIR)/Makedefs.h
	$(CXX) $(CXXFLAGS) -fpic $(IFLAGS) -I- $(SYSTEMINCLUDEFLAGS) -c $< -o $@

.subdirs:
	@list='$(SUBDIRS)'; for i in $$list; \
	  do $(MAKE) -C $$i "CFLAGS=$(CFLAGS) -fpic" "CXXFLAGS=$(CXXFLAGS) -fpic" build || exit; \
	done

build:: shared

ifeq (.$(LIB).version,$(wildcard .$(LIB).version))
shared: .depend-timestamp $(OBJS) .subdirs $(BASEDIR)/lib/lib$(LIB).so
static: .depend-timestamp $(OBJS) .subdirs $(BASEDIR)/lib/lib$(LIB).a
else
shared: .depend-timestamp $(OBJS) .subdirs
static: .depend-timestamp $(OBJS) .subdirs
endif

$(SUBOBJS):
	$(MAKE) .subdirs

$(BASEDIR)/lib/lib$(LIB).a: $(OBJS) $(EXTRA_OBJS) $(SUBOBJS)
	$(AR) -cru lib$(LIB).a $(OBJS) $(EXTRA_OBJS) $(SUBOBJS)
	$(RANLIB) lib$(LIB).a
	$(INSTALL) -d $(BASEDIR)/lib
	$(MV) lib$(LIB).a $(BASEDIR)/lib

$(BASEDIR)/lib/lib$(LIB).so: $(OBJS) .$(LIB).version $(EXTRA_OBJS) $(SUBOBJS)
ifneq ($(CXXSRC),)
	$(CXX) $(LDFLAGS) -shared -Wl,-soname,lib$(LIB).so.$(VERSION_MAJOR) -o lib$(LIB).so.$(VERSION) -fpic $(OBJS) $(EXTRA_OBJS) $(SUBOBJS) $(STATICLIBS) $(LIBFLAGS) $(SHAREDLIBS)
else
	$(CC) $(LDFLAGS) -shared -Wl,-soname,lib$(LIB).so.$(VERSION_MAJOR) -o lib$(LIB).so.$(VERSION) -fpic $(OBJS) $(EXTRA_OBJS) $(SUBOBJS) $(STATICLIBS) $(LIBFLAGS) $(SHAREDLIBS)
endif
	$(INSTALL) -d $(BASEDIR)/lib
	$(RM) -f $(BASEDIR)/lib/lib$(LIB).so*
	$(MV) lib$(LIB).so.$(VERSION) $(BASEDIR)/lib
	( cd $(BASEDIR)/lib; \
	  ln -s lib$(LIB).so.$(VERSION) lib$(LIB).so.$(VERSION_MAJOR); \
	  ln -s lib$(LIB).so.$(VERSION_MAJOR) lib$(LIB).so )
