#!/bin/sh
#
# Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License v. 2.0, which is available at
# http://www.eclipse.org/legal/epl-2.0.
#
# This Source Code may also be made available under the following Secondary
# Licenses when the conditions for such availability set forth in the
# Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
# version 2 with the GNU Classpath Exception, which is available at
# https://www.gnu.org/software/classpath/license.html.
#
# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
#

#
# Compare API against a signature file.
#
# Usage: sigtest javax.mail.jar mail.sig
#
SIGTEST=${SIGTEST:-/java/re/sigtest/4.0/promoted/fcs/latest/binaries/sigtest-4.0}
# The apicheck program isn't working correctly, use sigtest instead.
#APICHECK_JAR=$SIGTEST/lib/apicheck.jar
SIGTEST_JAR=$SIGTEST/lib/sigtestdev.jar
JAVA_HOME=${JAVA_HOME:-/opt/jdk1.8}
USAGE="sigtest [-b] [-p package] javax.mail.jar mail.sig"
PKG=javax.mail
BACKWARD=
PLATSIG=/tmp/$$.platform.sig

while getopts bp: opt
do
	case $opt in
	p)	PKG="$OPTARG";;
	b)	BACKWARD=-backward;;
	\?)	echo $USAGE; exit 1;;
	esac
done
shift `expr $OPTIND - 1`

JAR="$1"
SIG="$2"
shift 2

ver=$($JAVA_HOME/bin/java -version 2>&1 | sed -e 's/.*"\(.*\)".*/\1/;q')
case "$ver" in
1.[0-9]*)	xjimage=;
		cp="${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/jre/lib/jce.jar";;
*)		xjimage="-xjimage ${JAVA_HOME}/bin/jimage";
		cp="${JAVA_HOME}/lib/modules";;
esac

echo '*** Generate JDK signatures ***'
${JAVA_HOME}/bin/java -jar $SIGTEST_JAR setup \
	-classpath "$cp" $xjimage \
	-filename "$PLATSIG" -package java -package javax -keepfile \
	-verbose nowarn
echo
echo '*** Check JavaMail signatures ***'
${JAVA_HOME}/bin/java -jar $SIGTEST_JAR test -static \
	-classpath "$PLATSIG:$JAR" \
	-filename "$SIG" -package "$PKG" -out /dev/stdout \
	-nomerge -checkvalue -mode src $BACKWARD "$@"

rm "$PLATSIG"
