blob: a4e05a4904cb3340612c8a20e4475e77602a0663 [file] [log] [blame]
#-------------------------------------------------------------------------
# Copyright (c) 2004, 2005, 2006 TADA AB - Taby Sweden
# Distributed under the terms shown in the file COPYRIGHT
# found in the root folder of this project or at
# http://eng.tada.se/osprojects/COPYRIGHT.html
#
# @author Thomas Hallgren
#
# Top level Makefile for PLJava
#
# To compile a PLJava for PostgreSQL 8.x the makefile system will utilize
# the PostgreSQL pgxs system. The only prerequisite for such a compile is
# that a PostgreSQL 8.x is installed on the system and that the PATH is set
# so that the binaries of this installed can be executed.
#
# The following options are recognized (aside from normal options like
# CFLAGS etc.)
#
# PGSQLDIR=<pgsql root> For old style (not pgxs based) compilation
# USE_GCJ=1 Builds a shared object file containing both
# C and Java code. Requires GCJ 3.4 or later.
#
#-------------------------------------------------------------------------
# Can't use $(shell pwd) directly since /bin/pwd doesn't handle mounted
# volumes very well on some systems. The /mnt/hgfs that enables host shares
# in a vmware client is one example of this.
#
subdir = src/pl/pljava
top_builddir = ../../..
include $(top_builddir)/src/Makefile.global
# $(realpath $(top_builddir)/$(subdir)) does what I want, but not all version of gmake support it
abs_builddir=$(shell (cd $(top_builddir)/$(subdir) && pwd))
export PROJDIR := $(abs_builddir)
export TARGETDIR := $(PROJDIR)/build
export SQLDIR := $(top_srcdir)/$(subdir)/src/sql
export OBJDIR := $(TARGETDIR)/objs
export JNIDIR := $(TARGETDIR)/jni
export CLASSDIR := $(TARGETDIR)/classes
export PLJAVA_MAJOR_VER := 1
export PLJAVA_MINOR_VER := 4
export PLJAVA_PATCH_VER := 1
export PLJAVA_VERSION := $(PLJAVA_MAJOR_VER).$(PLJAVA_MINOR_VER).$(PLJAVA_PATCH_VER)
export TAR := /bin/tar
OS := $(shell uname -s)
MACHINE := $(shell uname -m)
.PHONY: all clean docs javadoc install uninstall depend release \
c_all c_install c_uninstall c_depend \
pljava_all pljava_javadoc \
deploy_all deploy_javadoc \
examples_all examples_javadoc \
test_all test_javadoc
all: pljava_all deploy_all c_all examples_all
install: all c_install
$(mkinstalldirs) '$(DESTDIR)$(datadir)/pljava'
$(mkinstalldirs) '$(DESTDIR)$(pkglibdir)/java'
$(INSTALL_DATA) '$(TARGETDIR)/pljava.jar' '$(DESTDIR)$(pkglibdir)/.'
$(INSTALL_DATA) '$(SQLDIR)/install.sql' '$(DESTDIR)$(datadir)/pljava/.'
$(INSTALL_DATA) '$(SQLDIR)/uninstall.sql' '$(DESTDIR)$(datadir)/pljava/.'
$(INSTALL_DATA) '$(SQLDIR)/examples.sql' '$(DESTDIR)$(datadir)/pljava/.'
$(INSTALL_SCRIPT) '$(SQLDIR)/pljava_install.sh' '$(DESTDIR)$(datadir)/pljava/.'
$(INSTALL_DATA) '$(TARGETDIR)/examples.jar' '$(DESTDIR)$(datadir)/pljava/.'
$(INSTALL_DATA) '$(TARGETDIR)/examples.jar' '$(DESTDIR)$(pkglibdir)/java/.'
$(INSTALL_DATA) '$(top_srcdir)/$(subdir)/COPYRIGHT' '$(DESTDIR)$(datadir)/pljava/.'
uninstall: c_uninstall
rm -f $(pkglibdir)/pljava.jar
rm -f -r $(datadir)/pljava
depend: c_depend
docs:
@-mkdir -p $(TARGETDIR)
@find docs \( \
-name CVS \
-o -name .cvsignore \
\) -prune -o \( -type f -exec cp --parents {} $(TARGETDIR) \; \)
@cp COPYRIGHT $(TARGETDIR)/docs/COPYRIGHT.txt
javadoc: pljava_javadoc deploy_javadoc examples_javadoc
clean:
@-rm -rf $(TARGETDIR)
pljava_all pljava_javadoc: pljava_%:
@echo JAVA_HOME='$(JAVA_HOME)'
@echo JAVAC_FLAGS='$(JAVAC_FLAGS)'
@echo JAVAC=$(JAVAC)
@echo JAVAH=$(JAVAH)
@echo JAR=$(JAR)
@echo JAVADOC=$(JAVADOC)
@-mkdir -p $(CLASSDIR)/pljava
$(MAKE) -r -C $(CLASSDIR)/pljava -f $(PROJDIR)/src/java/pljava/Makefile \
MODULEROOT=$(PROJDIR)/src/java $*
deploy_all deploy_javadoc: deploy_%:
@-mkdir -p $(CLASSDIR)/deploy
@$(MAKE) -r -C $(CLASSDIR)/deploy -f $(PROJDIR)/src/java/deploy/Makefile \
MODULEROOT=$(PROJDIR)/src/java $*
examples_all: examples_%: pljava_all
@-mkdir -p $(CLASSDIR)/examples
@$(MAKE) -r -C $(CLASSDIR)/examples -f $(PROJDIR)/src/java/examples/Makefile \
MODULEROOT=$(PROJDIR)/src/java $*
test_all: test_%:
@-mkdir -p $(CLASSDIR)/test
@$(MAKE) -r -C $(CLASSDIR)/test -f $(PROJDIR)/src/java/test/Makefile \
MODULEROOT=$(PROJDIR)/src/java $*
c_all c_install c_uninstall c_depend: c_%: pljava_all
@-mkdir -p $(OBJDIR)
@$(MAKE) -r -C $(OBJDIR) -f $(PROJDIR)/src/C/pljava/Makefile \
MODULEROOT=$(PROJDIR)/src/C build_$*
release: all docs javadoc
@-mkdir -p $(TARGETDIR)/distrib
@$(MAKE) -r -C $(TARGETDIR) -f $(PROJDIR)/packaging/Makefile $@