1# If no output is specified, discard output
2if(NOT OUTPUT)
3    if(WIN32)
4        set(OUTPUT NUL)
5    else()
6        set(OUTPUT /dev/null)
7    endif()
8endif()
9
10if(INPUT)
11    # Execute with both stdin and stdout file
12    execute_process(COMMAND ${COMMAND}
13        RESULT_VARIABLE CMD_RESULT
14        INPUT_FILE ${INPUT}
15        OUTPUT_FILE ${OUTPUT})
16else()
17    # Execute with only stdout file
18    execute_process(COMMAND ${COMMAND}
19        RESULT_VARIABLE CMD_RESULT
20        OUTPUT_FILE ${OUTPUT})
21endif()
22
23# Check if exit code is in list of successful exit codes
24if(SUCCESS_EXIT)
25    list(FIND SUCCESS_EXIT ${CMD_RESULT} _INDEX)
26    if (${_INDEX} GREATER -1)
27        set(CMD_RESULT 0)
28    endif()
29endif()
30
31# Check to see if successful
32if(CMD_RESULT)
33    message(FATAL_ERROR "${COMMAND} failed: ${CMD_RESULT}")
34endif()
35