2000-06-21 11:28:57 +00:00
|
|
|
#
|
|
|
|
# java.make
|
|
|
|
#
|
2001-04-25 13:06:20 +00:00
|
|
|
# Makefile rules to build java-based (not necessarily GNUstep) packages.
|
2000-06-21 11:28:57 +00:00
|
|
|
#
|
|
|
|
# Copyright (C) 2000 Free Software Foundation, Inc.
|
|
|
|
#
|
|
|
|
# Author: Nicola Pero <nicola@brainstorm.co.uk>
|
|
|
|
#
|
|
|
|
# This file is part of the GNUstep Makefile Package.
|
|
|
|
#
|
|
|
|
# This library is free software; you can redistribute it and/or
|
|
|
|
# modify it under the terms of the GNU General Public License
|
|
|
|
# as published by the Free Software Foundation; either version 2
|
|
|
|
# of the License, or (at your option) any later version.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the GNU General Public
|
|
|
|
# License along with this library; see the file COPYING.LIB.
|
|
|
|
# If not, write to the Free Software Foundation,
|
|
|
|
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
|
|
|
|
# prevent multiple inclusions
|
|
|
|
ifeq ($(JAVA_PACKAGE_MAKE_LOADED),)
|
|
|
|
JAVA_PACKAGE_MAKE_LOADED=yes
|
|
|
|
|
|
|
|
#
|
|
|
|
# You can compile any set of java classes, it does not need to be strictly
|
|
|
|
# a single package in the java sense. Please put a single class in each
|
|
|
|
# source file. Multiple classes in a single source file are not supported.
|
|
|
|
#
|
|
|
|
# The name of the Java package is in the JAVA_PACKAGE_NAME variable.
|
|
|
|
# The java files to be compiled are in the xxx_JAVA_FILES variable;
|
|
|
|
# they should be specified in full relative path, such as:
|
|
|
|
# test_JAVA_FILES = gnu/gnustep/base/NSArray.java
|
|
|
|
#
|
|
|
|
# The relative path is important because things will be installed
|
2001-04-25 13:06:20 +00:00
|
|
|
# in $(JAVA_INSTALLATION_DIR)/{relative_path}; for example,
|
|
|
|
# the file above would be installed in
|
|
|
|
# ${JAVA_INSTALLATION_DIR)/gnu/gnustep/base/NSArray.class
|
2000-06-21 11:28:57 +00:00
|
|
|
#
|
2001-04-25 13:06:20 +00:00
|
|
|
# JAVA_INSTALLATION_DIR contains the directory where you want to
|
|
|
|
# install your classes - it defaults to $(GNUSTEP_JAVA), which is
|
|
|
|
# $(GNUSTEP_LOCAL_ROOT)/Libraries/Java/.
|
2000-08-07 22:06:04 +00:00
|
|
|
#
|
2001-04-25 13:06:20 +00:00
|
|
|
# If you have all your files in a directory but want them to be
|
|
|
|
# installed with a different relative path, you can simply redefine
|
|
|
|
# JAVA_INSTALLATION_DIR, as in the following example -
|
|
|
|
# JAVA_INSTALLATION_DIR = $(GNUSTEP_JAVA)/gnu/gnustep/base/
|
|
|
|
#
|
|
|
|
# ((deprecated and will be removed)) The old way of managing this is
|
|
|
|
# by using another variable, called JAVA_PACKAGE_PREFIX: if non null,
|
|
|
|
# files will be installed in:
|
|
|
|
# ${JAVA_INSTALLATION_DIR)/${JAVA_PACKAGE_PREFIX}/{relative path}.
|
|
|
|
#
|
|
|
|
# If you have java sources to be processed throught JAVAH to create
|
|
|
|
# JNI headers, specify the files in xxx_JAVA_JNI_FILES. The headers
|
|
|
|
# will be placed together with the source file (example: the header of
|
|
|
|
# gnu/gnustep/base/NSObject.java will be created as
|
|
|
|
# gnu/gnustep/base/NSObject.h) These headers are not installed.
|
2000-08-07 22:06:04 +00:00
|
|
|
#
|
2000-06-21 11:28:57 +00:00
|
|
|
|
|
|
|
JAVA_PACKAGE_NAME:=$(strip $(JAVA_PACKAGE_NAME))
|
|
|
|
|
|
|
|
#
|
|
|
|
# Include in the common makefile rules
|
|
|
|
#
|
|
|
|
include $(GNUSTEP_MAKEFILES)/rules.make
|
|
|
|
|
|
|
|
ifeq ($(INTERNAL_java_package_NAME),)
|
|
|
|
|
|
|
|
# This part gets included by the first invoked make process.
|
|
|
|
internal-all:: $(JAVA_PACKAGE_NAME:=.all.java-package.variables)
|
|
|
|
|
|
|
|
internal-install:: $(JAVA_PACKAGE_NAME:=.install.java-package.variables)
|
|
|
|
|
|
|
|
internal-uninstall:: $(JAVA_PACKAGE_NAME:=.uninstall.java-package.variables)
|
|
|
|
|
|
|
|
internal-clean:: $(JAVA_PACKAGE_NAME:=.clean.java-package.variables)
|
|
|
|
|
|
|
|
internal-distclean:: $(JAVA_PACKAGE_NAME:=.distclean.java-package.variables)
|
|
|
|
|
|
|
|
$(JAVA_PACKAGE_NAME):
|
|
|
|
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
|
|
|
|
$@.all.java-package.variables
|
|
|
|
|
|
|
|
else
|
|
|
|
|
2001-04-25 13:06:20 +00:00
|
|
|
# This is the directory where the java classses get
|
|
|
|
# installed. Normally this is /usr/GNUstep/Local/Libraries/Java/
|
|
|
|
ifeq ($(JAVA_INSTALLATION_DIR),)
|
|
|
|
JAVA_INSTALLATION_DIR = $(GNUSTEP_JAVA)
|
|
|
|
endif
|
|
|
|
|
2000-06-21 11:28:57 +00:00
|
|
|
#
|
|
|
|
# Targets
|
|
|
|
#
|
|
|
|
internal-java_package-all:: before-$(TARGET)-all \
|
2000-08-07 22:06:04 +00:00
|
|
|
$(JAVA_OBJ_FILES) $(JAVA_JNI_OBJ_FILES) $(SUBPROJECT_OBJ_FILES) \
|
2000-06-21 11:28:57 +00:00
|
|
|
after-$(TARGET)-all
|
|
|
|
|
|
|
|
before-$(TARGET)-all::
|
|
|
|
|
|
|
|
after-$(TARGET)-all::
|
|
|
|
|
|
|
|
internal-java_package-install:: internal-java_package-all install-java_package
|
|
|
|
|
2001-04-25 13:06:20 +00:00
|
|
|
# Support old unflexible way (JAVA_PACKAGE_PREFIX) to customize
|
|
|
|
# installation dir - deprecated and will be removed to keep the code clean.
|
|
|
|
|
|
|
|
# Deprecated on 25 Apr 2001. Will be removed any time after 25 Jun 2001.
|
|
|
|
|
|
|
|
ifneq ($(JAVA_PACKAGE_PREFIX),)
|
|
|
|
$(warning "WARNING - JAVA_PACKAGE_PREFIX is deprecated and will be removed - use JAVA_INSTALLATION_DIR instead")
|
|
|
|
_WE_INSTALL_INTO=$(JAVA_INSTALLATION_DIR)/$(JAVA_PACKAGE_PREFIX)
|
|
|
|
else
|
|
|
|
# When JAVA_PACKAGE_PREFIX is removed, simply replace all occurrences
|
|
|
|
# of _WE_INSTALL_INTO with JAVA_INSTALLATION_DIR
|
|
|
|
_WE_INSTALL_INTO=$(JAVA_INSTALLATION_DIR)
|
|
|
|
endif
|
|
|
|
|
|
|
|
internal-install-java-dirs:: $(_WE_INSTALL_INTO)
|
2000-06-21 11:28:57 +00:00
|
|
|
if [ "$(JAVA_OBJ_FILES)" != "" ]; then \
|
2001-04-25 13:06:20 +00:00
|
|
|
$(MKDIRS) $(addprefix $(_WE_INSTALL_INTO)/,$(dir $(JAVA_OBJ_FILES))); \
|
2000-06-21 11:28:57 +00:00
|
|
|
fi
|
|
|
|
|
2001-04-25 13:06:20 +00:00
|
|
|
$(_WE_INSTALL_INTO):
|
|
|
|
$(MKDIRS) $(_WE_INSTALL_INTO)
|
2001-03-14 12:23:20 +00:00
|
|
|
|
2001-06-19 08:55:32 +00:00
|
|
|
# Say that you have a Pisa.java source file. Here we install both
|
|
|
|
# Pisa.class (the main class) and also, if they exist, all class files
|
|
|
|
# with names beginning wih Pisa$ (such as Pisa$1$Nicola.class); these
|
|
|
|
# files are generated for nested/inner classes, and must be installed
|
|
|
|
# as well. The fact we need to install these files is the reason why
|
|
|
|
# the following is more complicated than you would think at first
|
|
|
|
# glance.
|
2000-06-21 11:28:57 +00:00
|
|
|
install-java_package:: internal-install-java-dirs
|
|
|
|
if [ "$(JAVA_OBJ_FILES)" != "" ]; then \
|
|
|
|
for file in $(JAVA_OBJ_FILES) __done; do \
|
|
|
|
if [ $$file != __done ]; then \
|
2001-04-25 13:06:20 +00:00
|
|
|
$(INSTALL_DATA) $$file $(_WE_INSTALL_INTO)/$$file ; \
|
2001-06-18 18:45:10 +00:00
|
|
|
base=`dirname $$file`/`basename $$file .class` ; \
|
|
|
|
for sub in $${base}[$$]*.class __done; do \
|
|
|
|
if [ $$sub != __done ]; then \
|
|
|
|
$(INSTALL_DATA) $$sub $(_WE_INSTALL_INTO)/$$sub ; \
|
|
|
|
fi; \
|
|
|
|
done; \
|
2000-06-21 11:28:57 +00:00
|
|
|
fi; \
|
|
|
|
done; \
|
|
|
|
fi
|
|
|
|
|
|
|
|
#
|
|
|
|
# Cleaning targets
|
|
|
|
#
|
|
|
|
internal-java_package-clean::
|
|
|
|
rm -f $(JAVA_OBJ_FILES)
|
2001-06-18 18:45:10 +00:00
|
|
|
for file in $(JAVA_OBJ_FILES) __done; do \
|
|
|
|
if [ $$file != __done ]; then \
|
|
|
|
base=`dirname $$file`/`basename $$file .class` ; \
|
|
|
|
for sub in $${base}[$$]*.class __done; do \
|
|
|
|
if [ $$sub != __done ]; then \
|
|
|
|
rm -f $$sub; \
|
|
|
|
fi; \
|
|
|
|
done; \
|
|
|
|
fi; \
|
|
|
|
done;
|
2000-08-07 22:06:04 +00:00
|
|
|
rm -f $(JAVA_JNI_OBJ_FILES)
|
2000-06-21 11:28:57 +00:00
|
|
|
|
|
|
|
internal-java_package-distclean::
|
|
|
|
|
|
|
|
endif # INTERNAL_java_package_NAME
|
|
|
|
|
|
|
|
endif # java.make loaded
|
|
|
|
|
|
|
|
## Local variables:
|
|
|
|
## mode: makefile
|
|
|
|
## End:
|