#
# Template makefile for building wxWindows companion libraries.
#
# Author:   Ron Lee <ron@debian.org>
# Created:  19/3/2000
# $Id: makelib.env.in,v 1.12.2.1 2002/11/03 23:58:38 VS Exp $
#
# To use, set the following vars before including it:
#
# top_srcdir
# top_builddir
# libsrc_dir
#
# TARGET_LIBNAME
# LIBVERSION_CURRENT
# LIBVERSION_REVISION
# LIBVERSION_AGE
# HEADER_PATH
# HEADER_SUBDIR
#
# HEADERS
# OBJECTS
#
# either a shared or static lib will be built according to the
# option given to configure.
#

prefix = @prefix@
exec_prefix = @exec_prefix@
includedir = @includedir@
libdir = @libdir@

INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@

TARGETLIB_STATIC = $(TARGET_LIBNAME).a
TARGETLIB_SHARED = $(TARGET_LIBNAME).so.$(LIBVERSION_CURRENT).$(LIBVERSION_REVISION).$(LIBVERSION_AGE)
TARGETLIB_LINK1 = $(TARGET_LIBNAME).so.$(LIBVERSION_CURRENT)
TARGETLIB_LINK2 = $(TARGET_LIBNAME).so

TARGETLIB_SONAME = @WX_TARGET_LIBRARY_SONAME@

LDFLAGS_VERSIONING = @LDFLAGS_VERSIONING@

# NB: see remark in Makefile.in as to why we don't use %.foo: %.bar rules
.SUFFIXES: .o .c .cpp .cxx

.c.o:
	$(CC) -c $(CFLAGS) $(PICFLAGS) -o $@ $<

.cpp.o:
	$(CXX) -c $(CXXFLAGS) $(PICFLAGS) -o $@ $<

.cxx.o:
	$(CXX) -c $(CXXFLAGS) $(PICFLAGS) -o $@ $<

# the comment at the end of the next line is needed because otherwise autoconf
# would remove this line completely - it contains a built-in hack to remove
# any VPATH assignment not containing ':'
VPATH = @PATH_IFS@$(top_srcdir)/$(libsrc_dir) # ':' for autoconf

include $(top_builddir)/src/make.env

all: libtype_@WX_TARGET_LIBRARY_TYPE@

libtype_so: $(top_builddir)/lib/$(TARGETLIB_SHARED)

libtype_a: $(top_builddir)/lib/$(TARGETLIB_STATIC)

$(top_builddir)/lib/$(TARGETLIB_SHARED): $(OBJECTS)
	@$(INSTALL) -d $(top_builddir)/lib
	$(SHARED_LD) $@ $(TARGETLIB_SONAME) $(OBJECTS) $(LDFLAGS_VERSIONING)
	cd $(top_builddir)/lib \
		&& $(RM) $(TARGETLIB_LINK1) $(TARGETLIB_LINK2) \
		&& $(LN_S) $(TARGETLIB_SHARED) $(TARGETLIB_LINK1) \
		&& $(LN_S) $(TARGETLIB_SHARED) $(TARGETLIB_LINK2)

$(top_builddir)/lib/$(TARGETLIB_STATIC): $(OBJECTS)
	@$(INSTALL) -d $(top_builddir)/lib
	@$(RM) $@
	$(AR) $(AROPTIONS) $@ $(OBJECTS)
	$(RANLIB) $@

install: install_@WX_TARGET_LIBRARY_TYPE@ install_headers

install_so:
	$(INSTALL_PROGRAM) $(top_builddir)/lib/$(TARGETLIB_SHARED) $(libdir)/$(TARGETLIB_SHARED)
	@$(RM) $(libdir)/$(TARGETLIB_LINK1) $(libdir)/$(TARGETLIB_LINK2)
	cd $(libdir) \
		&& $(LN_S) $(TARGETLIB_SHARED) $(TARGETLIB_LINK1) \
		&& $(LN_S) $(TARGETLIB_SHARED) $(TARGETLIB_LINK2)

install_a:
	$(INSTALL_PROGRAM) $(top_builddir)/lib/$(TARGETLIB_STATIC) $(libdir)/$(TARGETLIB_STATIC)

install_headers:
	$(INSTALL) -d $(includedir)/wx/$(HEADER_SUBDIR)
	@for h in $(HEADERS); do \
	  $(INSTALL_DATA) $(HEADER_PATH)/$(HEADER_SUBDIR)/$$h $(includedir)/wx/$(HEADER_SUBDIR)/$$h; \
	  echo "installing $(includedir)/wx/$(HEADER_SUBDIR)/$$h"; \
	done

uninstall:
	$(RM) $(libdir)/$(TARGETLIB_STATIC)
	$(RM) $(libdir)/$(TARGETLIB_SHARED)
	$(RM) $(libdir)/$(TARGETLIB_LINK1)
	$(RM) $(libdir)/$(TARGETLIB_LINK2)
	@echo "removing headers"
	@for h in $(HEADERS); do \
	  $(RM) $(includedir)/wx/$(HEADER_SUBDIR)/$$h; \
	done
	@if test -d $(includedir)/wx/$(HEADER_SUBDIR); then \
	  rmdir $(includedir)/wx/$(HEADER_SUBDIR); \
	fi
	@-rmdir $(includedir)/wx

clean:
	$(RM) $(OBJECTS) $(top_builddir)/lib/$(TARGETLIB_SHARED) \
	      $(top_builddir)/lib/$(TARGETLIB_LINK1) \
	      $(top_builddir)/lib/$(TARGETLIB_LINK2) \
	      $(top_builddir)/lib/$(TARGETLIB_STATIC) core

.PHONY: all libtype_so libtype_a install install_so install_a install_headers uninstall clean

