mirror of
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-08-12 14:10:43 +02:00
181 lines
4.7 KiB
Bash
181 lines
4.7 KiB
Bash
#!/bin/bash
|
|
# generate .lst file for aspectjtools.jar
|
|
# by compile all non-testing src dirs
|
|
# todo: copy ajbrowser manifest
|
|
[ -n "$DEBUG" ] && set -vx
|
|
|
|
usage() {
|
|
name=`basename "$0"`
|
|
cat<<EOF
|
|
Usage: $name { build | manifest }
|
|
For compiling aspectjtools-aj.jar using ajc, generate build/aspectjtools.lst
|
|
and files it refers to, aspectjtools-sources.lst and aspectj-resources.jar.
|
|
|
|
To add to aspectjtools.jar a meta-inf/manifest.mf with a main-class,
|
|
specify a single argument: "manifest"
|
|
|
|
To create the .lst file, use ajc to build, and add the manifest,
|
|
define ASPECTJ_HOME and specify a single argument: "build"
|
|
|
|
EOF
|
|
}
|
|
|
|
canonicalPath() {
|
|
cygpath -ma "$@"
|
|
}
|
|
|
|
filterOutNonsourceDirs() {
|
|
sed '/\/build\//d;/\/testing/d'
|
|
}
|
|
|
|
listSourceDirs() {
|
|
for i in ../*/testsrc; do
|
|
p=`echo $i \
|
|
| filterOutNonsourceDirs \
|
|
| sed 's|../\(.*\)/testsrc|\1|'`;
|
|
p=`canonicalPath "../$p"`
|
|
[ -d "$p/src" ] && echo "$p/src"
|
|
done
|
|
}
|
|
|
|
generateSourcesLstFiles() {
|
|
[ -n "$DEBUG" ] && set -vx
|
|
rm -f aspectjtools-sources.lst;
|
|
for i in `listSourceDirs` ; do
|
|
find "$i" -type f -name \*.java \
|
|
| sed 's|/[^/]*.java|/*.java|' \
|
|
| sort -u ;
|
|
done > aspectjtools-sources.lst;
|
|
# head aspectjtools-sources.lst
|
|
}
|
|
|
|
genResourceJar() { # slow, but hey
|
|
[ -n "$DEBUG" ] && set -vx
|
|
jarFile=`canonicalPath "$1"`
|
|
[ -n "$jarFile" ] || exit 43
|
|
|
|
"${JAVA_HOME:-c:/home/apps/jdk14}/bin/"jar \
|
|
cfM "$jarFile" build.xml
|
|
|
|
curDir=`pwd`;
|
|
for i in `listSourceDirs` ; do
|
|
cd "$i"
|
|
"${JAVA_HOME:-c:/home/apps/jdk14}/bin/"jar \
|
|
ufM "$jarFile" `find . -type f | sed '/CVS/d;/\.java/d'`
|
|
cd "$curDir"
|
|
done
|
|
cd "$curDir"
|
|
|
|
# mf=`canonicalPath "grj_manifest.txt"`
|
|
# sed 's|@build.version.short@|1.1.1|;s|@company.name@|na|' \
|
|
# ../ajbrowser/ajbrowser.mf.txt > "$mf"
|
|
# "${JAVA_HOME:-c:/home/apps/jdk14}/bin/"jar \
|
|
# ufm "$jarFile" "$mf" build.xml
|
|
# rm "$mf"
|
|
}
|
|
|
|
addManifest() {
|
|
outjar="$1"
|
|
mf=`canonicalPath "grj_manifest.txt"`
|
|
sed 's|@build.version.short@|1.1.1|;s|@company.name@|na|' \
|
|
../ajbrowser/ajbrowser.mf.txt > "$mf"
|
|
echo "nothing" > am_nothing
|
|
"${JAVA_HOME:-c:/home/apps/jdk14}/bin/"jar \
|
|
ufm "$outjar" "$mf" am_nothing
|
|
rm "$mf" am_nothing
|
|
}
|
|
|
|
getClasspath() {
|
|
[ -n "$DEBUG" ] && set -vx
|
|
ajrt=`canonicalPath "${ASPECTJ_HOME:-c:/home/apps/aspectj-1.1.1}/lib/aspectjrt.jar"`
|
|
echo "${ajrt};`cygpath -ma ../lib/ant/lib/ant.jar`"
|
|
}
|
|
|
|
getInjars() {
|
|
[ -n "$DEBUG" ] && set -vx
|
|
cp=""
|
|
sep=""
|
|
for i in "$1" ../lib/bcel/bcel.jar \
|
|
../org.eclipse.jdt.core/jdtcore-for-aspectj.jar \
|
|
; do
|
|
cp="${cp}${sep}`canonicalPath "$i"`"
|
|
[ -z "${sep}" ] && sep=";"
|
|
done
|
|
echo "$cp"
|
|
}
|
|
|
|
setupManifest() {
|
|
[ -n "$DEBUG" ] && set -vx
|
|
midir="../ajbrowser/src/META-INF"
|
|
[ -d "$midir" ] || mkdir ../ajbrowser/src/META-INF
|
|
sed 's|@build.version.short@|1.1.1|;s|@company.name@|na|' \
|
|
../ajbrowser/ajbrowser.mf.txt > "$1"
|
|
}
|
|
|
|
generateFile() {
|
|
resourceJar="$1"
|
|
outputJar="$2"
|
|
[ -n "$DEBUG" ] && set -vx
|
|
[ -f "$resourceJar" ] || exit 98
|
|
[ -n "$outputJar" ] || exit 98
|
|
rm -f "$outputJar"
|
|
PS=";"
|
|
#sourceroots=`getSourceroots`
|
|
classpath=`getClasspath`
|
|
injars=`getInjars "$resourceJar"`
|
|
cat<<EOF
|
|
# generated `date` by $0
|
|
# remove this line if modifying this file
|
|
-outjar
|
|
$outputJar
|
|
-classpath
|
|
$classpath
|
|
-injars
|
|
$injars
|
|
-argfile
|
|
`canonicalPath aspectjtools-sources.lst`
|
|
EOF
|
|
}
|
|
|
|
errExit() {
|
|
[ -n "$1" ] && echo "## error: $1"
|
|
[ -n "$2" ] && exit "$2"
|
|
}
|
|
|
|
#########################################################################
|
|
#########################################################################
|
|
scriptDir=`dirname "$0"`
|
|
scriptDir=`cd "$scriptDir"; pwd`
|
|
script=`canonicalPath "$0"`
|
|
export PS=";" ### XXX platform
|
|
ASPECTJ_HOME="${ASPECTJ_HOME:-~/dev/tools/aspectj-1.1.1}"
|
|
export ASPECTJ_HOME=`cygpath -m "${ASPECTJ_HOME}"`
|
|
|
|
cd "$scriptDir/.."
|
|
outjar=`canonicalPath aspectjtools-aj.jar`
|
|
|
|
if [ -f aspectjtools.lst ] ; then
|
|
grep -q "remove this line" aspectjtools.lst \
|
|
&& rm -f aspectjtools.lst \
|
|
|| exit 23
|
|
fi
|
|
set -e
|
|
if [ "$1" = "manifest" ] ; then
|
|
addManifest "$outjar"
|
|
elif [ "build" = "$1" ] ; then
|
|
[ "$script" -ot aspectjtools.lst ] || "$script"
|
|
[ -d "$ASPECTJ_HOME" ] || errExit "define ASPECTJ_HOME" 49
|
|
"$ASPECTJ_HOME"/bin/ajc -argfile aspectjtools.lst
|
|
"$script" manifest
|
|
elif [ -n "$1" ] ; then
|
|
usage
|
|
else
|
|
generateSourcesLstFiles
|
|
resourceJar=`canonicalPath aspectjtools-resources.jar`
|
|
[ -f "$resourceJar" ] || genResourceJar "$resourceJar"
|
|
outjar=`canonicalPath aspectjtools-aj.jar`
|
|
rm -f aspectjtools.lst
|
|
generateFile "$resourceJar" "$outjar" > aspectjtools.lst
|
|
ls -ald "$resourceJar" aspectjtools.lst
|
|
fi
|