#!/bin/sh
#
#  nspluginwrapper Makefile (C) 2005-2006 Gwenole Beauchesne
#
-include config.mak

CFLAGS += -Wall

PACKAGE = nspluginwrapper
ifeq ($(VERSION),)
VERSION := $(shell sed < $(PACKAGE).spec -n '/^\%define version[	]*/s///p')
endif

ifeq ($(SRC_PATH),)
SRC_PATH = .
endif

ifneq ($(DONT_STRIP), yes)
STRIP_OPT = -s
endif

MOZILLA_CFLAGS = -I$(SRC_PATH)/npapi -I$(SRC_PATH)/npapi/nspr

npwrapper_LIBRARY = npwrapper.so
npwrapper_RAWSRCS = npw-wrapper.c npw-rpc.c rpc.c debug.c utils.c
npwrapper_SOURCES = $(npwrapper_RAWSRCS:%.c=$(SRC_PATH)/src/%.c)
npwrapper_OBJECTS = $(npwrapper_RAWSRCS:%.c=npwrapper-%.os)
npwrapper_LDFLAGS = -L/usr/X11R6/$(lib) -lX11 -lXt -lpthread
npwrapper_LDFLAGS += $(GLIB_LDFLAGS)

npviewer_PROGRAM = npviewer.bin
npviewer_RAWSRCS = npw-viewer.c npw-rpc.c rpc.c debug.c utils.c
npviewer_SOURCES = $(npviewer_RAWSRCS:%.c=$(SRC_PATH)/src/%.c)
npviewer_OBJECTS = $(npviewer_RAWSRCS:%.c=npviewer-%.o)
npviewer_LDFLAGS = -L/usr/X11R6/$(lib) -lX11 -lXext -lXt -ldl -lpthread
npviewer_LDFLAGS += $(GTK_LDFLAGS)
ifeq ($(ARCH),i386)
npviewer_LDFLAGS += -Wl,-shared
endif

npconfig_PROGRAM = npconfig
npconfig_RAWSRCS = npw-config.c
npconfig_SOURCES = $(npconfig_RAWSRCS:%.c=$(SRC_PATH)/src/%.c)
npconfig_OBJECTS = $(npconfig_RAWSRCS:%.c=npconfig-%.o)
npconfig_LDFLAGS = -lpthread -ldl

nploader_PROGRAM = npviewer
nploader_RAWSRCS = npw-viewer.sh
nploader_SOURCES = $(nploader_RAWSRCS:%.sh=$(SRC_PATH)/src/%.sh)

CPPFLAGS	= -I. -I$(SRC_PATH)
TARGETS		= $(npconfig_PROGRAM) $(nploader_PROGRAM)
ifneq (,$(wildcard $(SRC_PATH)/src/npw-wrapper.*))
TARGETS		+= $(npwrapper_LIBRARY) $(npviewer_PROGRAM)
endif

archivedir	= files/
SRCARCHIVE	= $(PACKAGE)-$(VERSION).tar
FILES		= configure Makefile nspluginwrapper.spec
FILES		+= README NEWS TODO COPYING
FILES		+= $(wildcard utils/*.sh)
FILES		+= $(wildcard utils/*.c)
FILES		+= $(wildcard src/*.c)
FILES		+= $(wildcard src/*.h)
FILES		+= $(wildcard src/*.sh)
FILES		+= $(wildcard tests/*.html)
FILES		+= $(wildcard npapi/*)

all: $(TARGETS)

clean:
	rm -f $(TARGETS) *.o *.os

distclean: clean
	rm -f config-host.* config.*

uninstall:
	rm -f $(DESTDIR)$(pkglibdir)/*
	rmdir -f $(DESTDIR)$(pkglibdir)

install: install.wrapper install.viewer install.loader install.config install.mkruntime
install.wrapper: $(npwrapper_LIBRARY)
	install -m 755 -D $(STRIP_OPT) $(npwrapper_LIBRARY) $(DESTDIR)$(pkglibdir)/$(ARCH)/$(npwrapper_LIBRARY)
install.viewer: $(npviewer_PROGRAM)
	install -m 755 -D $(STRIP_OPT) $(npviewer_PROGRAM) $(DESTDIR)$(pkglibdir)/$(ARCH)/$(npviewer_PROGRAM)
install.config: $(npconfig_PROGRAM)
	install -m 755 -D $(STRIP_OPT) $(npconfig_PROGRAM) $(DESTDIR)$(pkglibdir)/$(ARCH)/$(npconfig_PROGRAM)
install.loader: $(nploader_PROGRAM)
	install -m 755 -D $(nploader_PROGRAM) $(DESTDIR)$(pkglibdir)/$(nploader_PROGRAM)
install.mkruntime: $(SRC_PATH)/utils/mkruntime.sh
	install -m 755 -D $< $(DESTDIR)$(pkglibdir)/mkruntime
install.viewerlibs: $(npviewer_PROGRAM) $(SRC_PATH)/utils/getdeps.sh
	@files=`$(SRC_PATH)/utils/getdeps.sh $(npviewer_PROGRAM)`;		\
	for file in $$files; do							\
	  mkdir -p $(DESTDIR)$(pkglibdir)/$(ARCH)/runtime/`dirname $$file`;	\
	  cp -a $$file $(DESTDIR)$(pkglibdir)/$(ARCH)/runtime/$$file;		\
	done
	mkdir -p $(DESTDIR)$(pkglibdir)/$(ARCH)/runtime/etc
	echo "/usr/X11R6/$(lib)" > $(DESTDIR)$(pkglibdir)/$(ARCH)/runtime/etc/ld.so.conf
	/sbin/ldconfig -r $(DESTDIR)$(pkglibdir)/$(ARCH)/runtime

$(archivedir)::
	[ -d $(archivedir) ] || mkdir $(archivedir) > /dev/null 2>&1

tarball:
	$(MAKE) -C $(SRC_PATH) do_tarball
do_tarball: $(archivedir) $(archivedir)$(SRCARCHIVE).bz2

$(archivedir)$(SRCARCHIVE): $(archivedir) $(FILES)
	BUILDDIR=`mktemp -d /tmp/buildXXXXXXXX`											; \
	mkdir -p $$BUILDDIR/$(PACKAGE)-$(VERSION)										; \
	(cd $(SRC_PATH) && tar c $(FILES)) | tar x -C $$BUILDDIR/$(PACKAGE)-$(VERSION)	; \
	(cd $$BUILDDIR && tar cvf $(SRCARCHIVE) $(PACKAGE)-$(VERSION))					; \
	mv -f $$BUILDDIR/$(SRCARCHIVE) $(archivedir)									; \
	rm -rf $$BUILDDIR
$(archivedir)$(SRCARCHIVE).bz2: $(archivedir)$(SRCARCHIVE)
	bzip2 -9vf $(archivedir)$(SRCARCHIVE)

localrpm: $(archivedir)$(SRCARCHIVE).bz2
	rpm -ta $(archivedir)$(SRCARCHIVE).bz2

$(npwrapper_LIBRARY): $(npwrapper_OBJECTS)
	$(CC) -o $@ -shared $(npwrapper_OBJECTS) $(npwrapper_LDFLAGS)

$(npwrapper_OBJECTS): npwrapper-%.os: $(SRC_PATH)/src/%.c
	$(CC) -o $@ -c $< -fPIC $(CPPFLAGS) $(CFLAGS) $(MOZILLA_CFLAGS) $(GLIB_CFLAGS) -DNPW_COMPONENT_NAME="\"Wrapper\""

$(npviewer_PROGRAM): $(npviewer_OBJECTS)
	$(CC) -o $@ $(npviewer_OBJECTS) $(npviewer_LDFLAGS)

$(npviewer_OBJECTS): npviewer-%.o: $(SRC_PATH)/src/%.c
	$(CC) -o $@ -c $< $(CPPFLAGS) $(CFLAGS) $(MOZILLA_CFLAGS) $(GTK_CFLAGS) -DNPW_COMPONENT_NAME="\"Viewer \""

$(npconfig_PROGRAM): $(npconfig_OBJECTS)
	$(CC) -o $@ $(npconfig_OBJECTS) $(npconfig_LDFLAGS)

$(npconfig_OBJECTS): npconfig-%.o: $(SRC_PATH)/src/%.c
	$(CC) -o $@ -c $< $(CPPFLAGS) $(CFLAGS)

$(nploader_PROGRAM): $(nploader_SOURCES)
	sed -e "s,%ARCH%,$(ARCH)," \
	    -e "s,%TARGET_ARCH%,$(TARGET_ARCH)," \
	    -e "s,%NPW_LIBDIR%,$(pkglibdir)," \
	    $< > $@
	chmod 755 $@
