cmake_minimum_required(VERSION 2.8)

FIND_PACKAGE ( Java 1.6 )

# Since not all dashboard are running cmake 2.8.1, let's set the legacy variable
IF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" VERSION_LESS "2.8.1")
  SET(Java_JAVA_EXECUTABLE ${JAVA_RUNTIME})
  SET(Java_JAVAC_EXECUTABLE ${JAVA_COMPILE})
  SET(Java_JAR_EXECUTABLE ${JAVA_ARCHIVE})
ENDIF()

IF(NOT Java_JAVAC_EXECUTABLE)
  MESSAGE(STATUS "Skipping compilation of jist base files - Set Java_JAVAC_EXECUTABLE variable to fix the problem")
  RETURN()
ENDIF()

project(JISTBase Java)

# If have the java compiler, try to compile the .java files
#IF ( Java_JAVAC_EXECUTABLE )
message (STATUS "Java version string = ${Java_VERSION_STRING}, version = ${Java_VERSION}, major = ${Java_VERSION_MAJOR}, minor = ${Java_VERSION_MINOR}")
message (STATUS "Java run time = ${Java_JAVA_EXECUTABLE}, compiler = ${Java_JAVAC_EXECUTABLE}, jar = ${Java_JAR_EXECUTABLE}")

SET (CLP JISTSource)

  # source files
file(GLOB_RECURSE ${CLP}_SRCS_SEMICOLON RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.java)

set (${CLP}_SRCS "")
#foreach (thisclass ${${CLP}_SRCS_SEMICOLON})
#  set (${CLP}_SRCS "${${CLP}_SRCS}\n${thisclass}")
#endforeach()
set (${CLP}_SRCS "edu/jhu/ece/iacl/jist/cli/run.java")
MESSAGE ( STATUS "Globbed ${CLP} java files = \n\t${${CLP}_SRCS}")

file (WRITE ${CMAKE_CURRENT_SOURCE_DIR}/${CLP}_SRCS.txt ${${CLP}_SRCS})
MESSAGE(STATUS "*********Wrote file list to ${CMAKE_CURRENT_SOURCE_DIR}/${CLP}_SRCS.txt")

# create the bin dir
file(MAKE_DIRECTORY  ${CMAKE_CURRENT_BINARY_DIR}/bin)


# class path


IF ( WIN32 )
  SET  ( ${CLP}_CLASSPATH "\"${MIPAV}\"" )
  SET (${CLP}_EXTDIR "\"${MIPAV}/java3d/ext\;${MIPAV}/jre/lib/ext\;${MIPAV}/lib\;${CMAKE_CURRENT_SOURCE_DIR}/../lib\"")
ELSE(WIN32)
  SET  ( ${CLP}_CLASSPATH "${MIPAV}" )
   # use unix seps
  SET (${CLP}_EXTDIR "${MIPAV}/java3d/ext:${MIPAV}/jre/lib/ext:${MIPAV}/lib:${CMAKE_CURRENT_SOURCE_DIR}/../lib")
  # need to explicitly list all the jar files in the mipav dirs
  #file(GLOB_RECURSE MIPAVJARS_3DEXT ${MIPAV}/java3d/ext *.jar)
  #file(GLOB_RECURSE MIPAVJARS_LIB ${MIPAV}/lib *.jar)
# there's no java3d/ext lib, skip it
# find ones in jre/lib/ext
  set (MIPAVJARS_JRELIBEXT
customizer.jar
dnsns.jar
gluegen-rt.jar
j3dcore.jar
j3dutils.jar
jhdf5.jar
jhdf5obj.jar
jhdfobj.jar
jmf.jar
jogl.jar
localedata.jar
mediaplayer.jar
multiplayer.jar
sunjce_provider.jar
sunpkcs11.jar
vecmath.jar
)
foreach (jarFile ${MIPAVJARS_JRELIBEXT})
   set (${CLP}_CLASSPATH ${${CLP}_CLASSPATH}:${MIPAV}/jre/lib/ext/${jarFile})
endforeach(jarFile)
# find jars in current source dir's assoc lib
set (LOCALJARS
commons-cli-1.2.jar
drmaa.jar
jgraph-5.12.2.1.jar
opencsv-1.8.jar
xom-1.2.1.jar
xpp3-1.1.4c.jar
xstream-1.1.3.jar
)
message(STATUS "Found local jars = '${LOCALJARS}'")
foreach (jarFile ${LOCALJARS})
   set (${CLP}_CLASSPATH ${${CLP}_CLASSPATH}:${CMAKE_CURRENT_SOURCE_DIR}/../lib/${jarFile})
endforeach(jarFile)
ENDIF (WIN32)

message(STATUS "********Javac, using \nclass path of ${${CLP}_CLASSPATH}\n extdirs of  ${${CLP}_EXTDIR}\n Current binary dir = ${CMAKE_CURRENT_BINARY_DIR}")

ADD_CUSTOM_TARGET ( ${CLP}.jar.classes ALL
 ${Java_JAVAC_EXECUTABLE} -d ${CMAKE_CURRENT_BINARY_DIR}/bin -sourcepath ${PROJECT_SOURCE_DIR}  -extdirs ${${CLP}_EXTDIR} -classpath ${${CLP}_CLASSPATH} @${CMAKE_CURRENT_SOURCE_DIR}/${CLP}_SRCS.txt
      WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} )


