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)