# FindMathematica J/Link examples
include(UseJava)
# add J/Link jar to Java compiler include path
set (CMAKE_JAVA_INCLUDE_PATH "${Mathematica_JLink_JAR_FILE}")
# force Java 6 compilation of example sources, J/Link is not compatible with Java 7
# sample source files use Windows character encoding
set (CMAKE_JAVA_COMPILE_FLAGS "-source" "1.7" "-target" "1.7" "-encoding" "Cp1252")
if (NOT CYGWIN)
# UseJava module cannot handle Cygwin path syntax
add_jar(AddTwo AddTwo.java)
add_jar(FormatArray FormatArray.java)
add_jar(GraphicsApp "${CMAKE_CURRENT_BINARY_DIR}/GraphicsApp.java")
add_jar(GraphicsDlg "${CMAKE_CURRENT_BINARY_DIR}/GraphicsDlg.java")
add_jar(SampleProgram "${CMAKE_CURRENT_BINARY_DIR}/SampleProgram.java")
add_jar(SimpleFrontEnd "${CMAKE_CURRENT_BINARY_DIR}/SimpleFrontEnd.java")
set_target_properties(AddTwo FormatArray GraphicsApp GraphicsDlg SampleProgram SimpleFrontEnd PROPERTIES FOLDER "JLink")
endif()
# define a helper function to simplify adding J/Link executable tests
function (do_jlink_test _target _expectedOutputRegEx)
if (NOT TARGET ${_target})
return()
endif()
foreach (_systemID ${Mathematica_SYSTEM_IDS})
set (_testName "JLink_${_systemID}_${_target}")
list (FIND Mathematica_HOST_SYSTEM_IDS "${_systemID}" _index)
if (${_index} GREATER -1)
Mathematica_JLink_ADD_TEST (
NAME ${_testName} TARGET ${_target}
SYSTEM_ID "${_systemID}" ${ARGN})
Mathematica_set_tests_properties (${_testName}
PROPERTIES TIMEOUT 30
PASS_REGULAR_EXPRESSION "${_expectedOutputRegEx}")
if (COMMAND log_test_properties)
log_test_properties("${_testName}")
endif()
else()
message (STATUS "Skipping test ${_testName}, cross-compiling from ${Mathematica_HOST_SYSTEM_ID}.")
endif()
endforeach()
endfunction ()
do_jlink_test(SampleProgram
# Expected output regular expression
"2 \\+ 2 = 4\n3 \\+ 3 = 6\n4 \\+ 4 = 8"
KERNEL_OPTIONS "-noinit"
)
do_jlink_test(AddTwo
# Expected output regular expression
"5\n7"
CODE
"LoadJavaClass[\"AddTwo\",AllowShortContext->True,StaticsVisible->True]"
"Print[AddTwo`addtwo[2,3]]"
# Sequence forces start of a new CompoundExpression
"Sequence[]"
"Print[addtwo[3,4]]"
)
do_jlink_test(FormatArray
# Expected output regular expression
"{\"1.0000\", \"2.0000\", \"3.0000\", \"4.0000\", \"5.0000\", \"6.0000\", \"7.0000\", \"8.0000\", \"9.0000\", \"10.0000\"}"
SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/FormatArrayTest.m"
)