diff --git a/cmake/platforms/nestedvm.cmake b/cmake/platforms/nestedvm.cmake index 3f768a4..f400a75 100644 --- a/cmake/platforms/nestedvm.cmake +++ b/cmake/platforms/nestedvm.cmake @@ -5,7 +5,8 @@ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/applet.manifest "Main-Class: PuzzleApplet\n") include(FindJava) -add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/PuzzleApplet.class +add_custom_target(nvm-puzzle-applet + BYPRODUCTS ${CMAKE_BINARY_DIR}/PuzzleApplet.class COMMAND ${Java_JAVAC_EXECUTABLE} -source 1.7 -target 1.7 -d . -cp ${NESTEDVM}/build ${CMAKE_SOURCE_DIR}/PuzzleApplet.java @@ -18,9 +19,12 @@ endfunction() function(set_platform_gui_target_properties TARGET) set(build_subdir ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}-tmp) - add_custom_command(OUTPUT ${build_subdir} + add_custom_target(${TARGET}-nvm-build-subdir + BYPRODUCTS ${build_subdir} COMMAND ${CMAKE_COMMAND} -E make_directory ${build_subdir}) - add_custom_command(OUTPUT ${build_subdir}/PuzzleApplet.class + + add_custom_target(${TARGET}-nvm-symlinks + BYPRODUCTS ${build_subdir}/PuzzleApplet.class COMMAND ${CMAKE_SOURCE_DIR}/cmake/glob-symlinks.py ${CMAKE_BINARY_DIR} applet.manifest ${CMAKE_BINARY_DIR} PuzzleApplet\\*.class @@ -31,17 +35,18 @@ function(set_platform_gui_target_properties TARGET) ${NESTEDVM}/build org/ibex/nestedvm/util/Seekable\\*.class WORKING_DIRECTORY ${build_subdir} DEPENDS - ${build_subdir} - ${CMAKE_BINARY_DIR}/PuzzleApplet.class + ${TARGET}-nvm-build-subdir + nvm-puzzle-applet ${CMAKE_SOURCE_DIR}/cmake/glob-symlinks.py) - add_custom_command(OUTPUT ${build_subdir}/PuzzleEngine.class + add_custom_target(${TARGET}-nvm-engine + BYPRODUCTS ${build_subdir}/PuzzleEngine.class COMMAND ${Java_JAVA_EXECUTABLE} -cp ${NESTEDVM}/build:${NESTEDVM}/upstream/build/classgen/build org.ibex.nestedvm.Compiler -outformat class -d . PuzzleEngine ${CMAKE_CURRENT_BINARY_DIR}/${TARGET} DEPENDS - ${build_subdir} + ${TARGET}-nvm-build-subdir ${CMAKE_CURRENT_BINARY_DIR}/${TARGET} WORKING_DIRECTORY ${build_subdir}) @@ -51,9 +56,10 @@ function(set_platform_gui_target_properties TARGET) applet.manifest PuzzleEngine.class PuzzleApplet*.class org WORKING_DIRECTORY ${build_subdir} DEPENDS - ${CMAKE_BINARY_DIR}/PuzzleApplet.class - ${build_subdir}/PuzzleApplet.class - ${build_subdir}/PuzzleEngine.class) + nvm-puzzle-applet + ${TARGET}-nvm-build-subdir + ${TARGET}-nvm-symlinks + ${TARGET}-nvm-engine) endfunction() function(set_platform_puzzle_target_properties NAME TARGET)