cmake_minimum_required(VERSION 2.8.4) include(FindUnixCommands) #take all lustre files set(GLOBAL_LUSTRE_FILES "") LUSTREFILES(LFILES ${CMAKE_CURRENT_SOURCE_DIR} ) list(APPEND GLOBAL_LUSTRE_FILES ${LFILES}) FOREACH(lfile ${LFILES}) get_filename_component(L ${lfile} NAME_WE) set(LUSTRE_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/${L}") file(COPY ${lfile} DESTINATION ${LUSTRE_OUTPUT_DIR}) if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${L}.lusi) file(COPY ${L}.lusi DESTINATION ${LUSTRE_OUTPUT_DIR}) else() message("generate ${L}.lusi \n") Lustre_Compile(LUS_FILE ${lfile} NODE "" OPTS "-lusi") set(LUS_OPTS_CUT ${LUSTRE_OPTS_POSTFIX_${L}}) execute_process(RESULT_VARIABLE res COMMAND ${LUSTRE_COMPILER} ${LUSTREC_ARGS_${L}__${LUS_OPTS_CUT}} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) if(${res} STREQUAL "0") file(COPY ${L}.lusi DESTINATION ${LUSTRE_OUTPUT_DIR}) else() message("${L}.lusi Error") endif() endif() if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${L}_input_values) file(COPY ${L}_input_values DESTINATION ${LUSTRE_OUTPUT_DIR}) elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${L}.lusi) message("generate input_values \n") execute_process(RESULT_VARIABLE res COMMAND ${JAVA_RUNTIME} -cp ${CMAKE_BINARY_DIR}/modules/ Generate_inputs_lusi top ${L}.lusi 1 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) if(${res} STREQUAL "0") file(COPY ${L}_input_values DESTINATION ${LUSTRE_OUTPUT_DIR}) else() message("${L}_input_values Error") endif() endif() if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${L}_output_values) file(COPY ${L}_output_values DESTINATION ${LUSTRE_OUTPUT_DIR}) elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${L}_input_values) message("generate output_values for reference \n") set(LUSTRE_NODE_OPT "${L}") Lustre_Compile(LUS_FILE ${lfile} NODE ${LUSTRE_NODE_OPT} OPTS "" DIR ${CMAKE_CURRENT_SOURCE_DIR}) set(LUS_OPTS_CUT ${LUSTRE_OPTS_POSTFIX_${L}}) execute_process( COMMAND ${LUSTRE_COMPILER} ${LUSTREC_ARGS_${L}_${LUSTRE_NODE_OPT}_${LUS_OPTS_CUT}} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) execute_process( COMMAND make -f ${L}.makefile WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) execute_process(RESULT_VARIABLE res COMMAND ${BASH} -c "./${L}_${LUSTRE_NODE_OPT} < ${L}_input_values > ${L}_output_values" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) file(REMOVE ${L}_${LUSTRE_NODE_OPT} io_frontend.o ${L}.c ${L}.h ${L}.lusic ${L}.makefile ${L}.o ${L}_alloc.h ${L}_main.c ${L}_main.o ) if(${res} STREQUAL "0") file(COPY ${L}_output_values DESTINATION ${LUSTRE_OUTPUT_DIR}) else() message("${L} output_values Error") endif() endif() ENDFOREACH() FOREACH(lus_file ${GLOBAL_LUSTRE_FILES}) get_filename_component(L ${lus_file} NAME_WE) set(LUSTRE_NODE_OPT "${L}") #first combination :mpfr set(LUSTRE_OPTIONS_OPT "-mpfr" "100") set(EPSILON "0.0001") # First command generate C files from Lustre file Lustre_Compile(LUS_FILE ${lus_file} NODE ${LUSTRE_NODE_OPT} OPTS ${LUSTRE_OPTIONS_OPT} CALL_ID "2") set(LUS_OPTS_CUT_2 "${LUSTRE_OPTS_POSTFIX_${L}_2}") add_test(NAME mpfr_COMPIL_LUSTRE_${L}_${LUSTRE_NODE_OPT}_${LUS_OPTS_CUT_2} COMMAND ${LUSTRE_COMPILER} ${LUSTREC_ARGS_${L}_${LUSTRE_NODE_OPT}_${LUS_OPTS_CUT_2}} ) #********************* make -f ${L}.makefile *************************** add_test(NAME mpfr_MAKE_${L}_${LUSTRE_NODE_OPT}_${LUS_OPTS_CUT_2} COMMAND make -f ${L}.makefile WORKING_DIRECTORY ${LUSTRE_OUTPUT_DIR_${L}_${LUSTRE_NODE_OPT}_${LUS_OPTS_CUT_2}} ) SET_TESTS_PROPERTIES ( mpfr_MAKE_${L}_${LUSTRE_NODE_OPT}_${LUS_OPTS_CUT_2} PROPERTIES DEPENDS mpfr_COMPIL_LUSTRE_${L}_${LUSTRE_NODE_OPT}_${LUS_OPTS_CUT_2} REQUIRED_FILES ${L}.makefile ) #************** execute C binary ********************************** if (BASH) add_test( NAME mpfr_BIN_${L}_${LUSTRE_NODE_OPT}_${LUS_OPTS_CUT_2} COMMAND ${BASH} -c "./${L}_${LUSTRE_NODE_OPT} < ../${L}_input_values > ${L}_${LUSTRE_NODE_OPT}_${LUS_OPTS_CUT_2}_outputs" WORKING_DIRECTORY ${LUSTRE_OUTPUT_DIR_${L}_${LUSTRE_NODE_OPT}_${LUS_OPTS_CUT_2}} ) SET_TESTS_PROPERTIES ( mpfr_BIN_${L}_${LUSTRE_NODE_OPT}_${LUS_OPTS_CUT_2} PROPERTIES REQUIRED_FILES ${L}_${LUSTRE_NODE_OPT} DEPENDS mpfr_MAKE_${L}_${LUSTRE_NODE_OPT}_${LUS_OPTS_CUT_2}) else() message(FATAL_ERROR "Unknown shell command ${BASH} -c for ${CMAKE_HOST_SYSTEM_NAME}") endif() #************** execute C binary ********************************** add_test(NAME mpfr_DIFF_${L}_${LUSTRE_NODE_OPT}_${LUS_OPTS_CUT_2} COMMAND ${JAVA_RUNTIME} -cp ${CMAKE_BINARY_DIR}/modules/ compare_lustrec_outputs ${L}_${LUSTRE_NODE_OPT}_${LUS_OPTS_CUT_2}_outputs ../${L}_output_values ${EPSILON} WORKING_DIRECTORY ${LUSTRE_OUTPUT_DIR_${L}_${LUSTRE_NODE_OPT}_${LUS_OPTS_CUT_2}} ) SET_TESTS_PROPERTIES ( mpfr_DIFF_${L}_${LUSTRE_NODE_OPT}_${LUS_OPTS_CUT_2} PROPERTIES REQUIRED_FILES ${L}_${LUSTRE_NODE_OPT}_${LUS_OPTS_CUT_2}_outputs DEPENDS mpfr_BIN_${L}_${LUSTRE_NODE_OPT}_${LUS_OPTS_CUT_2} ) ENDFOREACH() add_custom_target(mpfr COMMAND ${CMAKE_CTEST_COMMAND} -R mpfr)