Permalink
Browse files

Added gradle to support cross platform building the Sage.jar (eventually

I'll add direct support for the other pieces as well)
  • Loading branch information...
1 parent d9ed4ec commit 663f20013805f7146324a2da5d334cba64faf995 @stuckless stuckless committed Aug 13, 2015
Showing with 432 additions and 0 deletions.
  1. +5 −0 .gitignore
  2. +37 −0 BUILDING.md
  3. +126 −0 build.gradle
  4. +4 −0 build/.gitignore
  5. BIN gradle/wrapper/gradle-wrapper.jar
  6. +6 −0 gradle/wrapper/gradle-wrapper.properties
  7. +164 −0 gradlew
  8. +90 −0 gradlew.bat
View
@@ -0,0 +1,5 @@
+/bin/
+/.classpath
+/.project
+/.gradle/
+/.settings/
View
@@ -0,0 +1,37 @@
+# Gradle Builds #
+
+The gradle.build build file can be used to recreate the Sage.jar on Windows, Linux or Mac.
+
+After cloning the repository, you can re-create the Sage.jar by running the **sageJar** task
+
+Linux Users
+
+```
+./gradlew sageJar
+```
+
+Windows Users
+
+```
+gradlew.bat sageJar
+```
+
+Keep in mind the first time you run **gradlew** it will take some time has it has to download some dependencies.
+
+
+## Settings up Eclipse ##
+After cloning the repository, you can create the Eclipse Project Files by running the commands **cleanEclipse eclipse**
+
+```
+./gradlew cleanEclipse eclipse
+```
+
+You can open the project in eclipse and it will be fully configured as a Java Project.
+
+You cannot recreate the Sage.jar from within eclipse, but it will compile files, etc. When you need to rebuild the Sage.jar simple use the **sageJar** task.
+
+### Gradle Plugin for Eclipse ###
+You can find information on how to install the Gradle Plugin here
+http://www.vogella.com/tutorials/EclipseGradle/article.html
+
+YMMV since I find the Gradle Plugin to be of little value so far.
View
@@ -0,0 +1,126 @@
+apply plugin: "java"
+apply plugin: "eclipse"
+apply plugin: "idea"
+
+// Sage Version -- Not used for now
+version = '9.0'
+
+// Globals
+ext {
+ appName = 'SageTV'
+ sageJarName = 'Sage.jar'
+ sageJarDestinationDir = 'build/release/'
+}
+
+repositories {
+ mavenCentral()
+ jcenter()
+}
+
+// Maybe someday we'll target >1.5 (hopefully)
+targetCompatibility = 1.5
+sourceCompatibility = 1.5
+
+compileJava {
+ options.warnings = false
+ //options.incremental = true
+ //options.debugOptions.debugLevel = "source,lines,vars"
+}
+
+sourceSets {
+ main {
+ java {
+ srcDirs = [
+ 'java',
+ 'third_party/Javolution/java',
+ 'third_party/jcraft/java',
+ 'third_party/jtux/java',
+ 'third_party/MetadataExtractor/java',
+ 'third_party/Ogle/java',
+ 'third_party/RSSLIB4J/java',
+ 'third_party/SingularSys/java'
+ ]
+ // these don't compile?? (need to be on a mac, i think)
+ excludes = [
+ 'sage/QuartzSageRenderer.java',
+ 'sage/miniclient/OpenGLGFXCMD.java',
+ 'sage/miniclient/OpenGLVideoRenderer.java',
+ 'sage/miniclient/QuartzGFXCMD.java',
+ 'sage/JOGLSageRenderer.java'
+ ]
+ }
+ }
+}
+
+dependencies {
+ compile files(
+ 'third_party/UPnPLib/sbbi-upnplib-1.0.3.jar',
+
+ 'third_party/JOGL/Windows/gluegen-rt.jar',
+ 'third_party/JOGL/Windows/jogl.jar',
+ 'third_party/JOGL/Linux/gluegen-rt.jar',
+ 'third_party/JOGL/Linux/nativewindow.all.jar',
+ 'third_party/JOGL/Linux/jogl.all.jar',
+
+ 'third_party/Oracle/vecmath.jar',
+ 'third_party/Lucene/lucene-core-3.6.0.jar',
+ 'third_party/JCIFS/jcifs-1.1.6.jar',
+ )
+
+ // compile 'org.jogamp.jogl:jogl-all:2.3.1'
+ compile 'com.apple:AppleJavaExtensions:1.4'
+}
+
+// remove the Sage.jar before updating it
+task cleanSageJar(type: Delete) {
+ delete sageJarDestinationDir+'/'+sageJarName
+}
+
+// build the Sage.jar
+task sageJar(type: Jar) {
+ archiveName = sageJarName
+ destinationDir = file(sageJarDestinationDir)
+ from files(sourceSets.main.output.classesDir) {
+ // exclude the Mac stuff for now
+ excludes = [
+ 'sage/miniclient/**',
+ 'sage/MacAboutBox*',
+ 'sage/MacApplicationListener.class',
+ 'sage/QuartzRendererView.class'
+ ]
+ }
+
+ from files(sourceSets.main.output.resourcesDir)
+
+ // Add in images and localization files
+ from 'images/SageTV/'
+ from ('i18n') {
+ include '*.properties'
+ }
+
+ doLast {
+ println 'Sage jar created in ' + sageJarDestinationDir +'/'+sageJarName
+ }
+}
+
+sageJar.dependsOn classes, cleanSageJar
+
+eclipse {
+ project {
+ name = appName
+ }
+}
+
+// This get run when you call ./gradlew without any targets
+defaultTasks 'sageJar'
+
+// not currently used, but I'm keeping it here because shows how to detect Linux/Windows/Mac
+import org.gradle.internal.os.OperatingSystem;
+
+task detect {
+ doLast {
+ println(OperatingSystem.current().isMacOsX())
+ println(OperatingSystem.current().isLinux())
+ }
+}
+
View
@@ -0,0 +1,4 @@
+/classes/
+/libs/
+/release/
+/tmp/
Binary file not shown.
@@ -0,0 +1,6 @@
+#Wed Aug 12 18:14:57 EDT 2015
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.6-bin.zip
View
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+ [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
Oops, something went wrong.

0 comments on commit 663f200

Please sign in to comment.