
FIND_PACKAGE(Java) #Find the java executables

IF(JAVA_FOUND)

FIND_PACKAGE(JNI)

IF(JNI_FOUND)
MESSAGE("Building JNI wrapper")

SET(JKAZMATH_CLASS kazmath/jkazmath.class)
SET(JKAZMATH_HEADER jni/kazmath_jkazmath.h)
SET(JKAZMATH_JAR kazmath.jar)

FILE(GLOB_RECURSE KAZMATH_C_FILES ${CMAKE_SOURCE_DIR}/kazmath/*.c ${CMAKE_CURRENT_SOURCE_DIR}/jni/*.c)

ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${JKAZMATH_CLASS} COMMAND ${Java_JAVAC_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/kazmath/jkazmath.java -d ${CMAKE_CURRENT_BINARY_DIR})
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${JKAZMATH_HEADER} COMMAND ${Java_JAVAH_EXECUTABLE} -classpath ${CMAKE_CURRENT_BINARY_DIR} -d jni kazmath.jkazmath DEPENDS ${JKAZMATH_CLASS})

INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/jni ${JNI_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/kazmath)

SET(CMAKE_SHARED_LINKER_FLAGS "-lm -lc")
SET(CMAKE_POSITION_INDEPENDENT_CODE ON) 

ADD_LIBRARY(Jkazmath SHARED ${KAZMATH_C_FILES} ${JKAZMATH_HEADER})
ADD_CUSTOM_COMMAND(TARGET Jkazmath POST_BUILD COMMAND ${Java_JAR_EXECUTABLE} cvf kazmath.jar kazmath)

INSTALL(TARGETS Jkazmath LIBRARY DESTINATION ${INSTALL_LIB_DIR})
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/kazmath.jar DESTINATION ${CMAKE_INSTALL_PREFIX}/share/java)
ELSE(JNI_FOUND)
MESSAGE("Not building JNI wrapper. Couldn't find JNI")
ENDIF(JNI_FOUND)

ENDIF(JAVA_FOUND)
