| if(NOT DEFINED dir) | |
| message(FATAL_ERROR "dir not defined") | |
| endif() | |
| # Analyze 'cpack --help' output for list of available generators: | |
| # | |
| execute_process(COMMAND ${CMAKE_CPACK_COMMAND} --help | |
| RESULT_VARIABLE result | |
| OUTPUT_VARIABLE stdout | |
| ERROR_VARIABLE stderr | |
| WORKING_DIRECTORY ${dir}) | |
| string(REPLACE ";" "\\;" stdout "${stdout}") | |
| string(REPLACE "\n" "E;" stdout "${stdout}") | |
| set(collecting 0) | |
| set(generators) | |
| foreach(eline ${stdout}) | |
| string(REGEX REPLACE "^(.*)E$" "\\1" line "${eline}") | |
| if(collecting AND NOT line STREQUAL "") | |
| string(REGEX REPLACE "^ ([^ ]+) += (.*)$" "\\1" gen "${line}") | |
| string(REGEX REPLACE "^ ([^ ]+) += (.*)$" "\\2" doc "${line}") | |
| set(generators ${generators} ${gen}) | |
| endif() | |
| if(line STREQUAL "Generators") | |
| set(collecting 1) | |
| endif() | |
| endforeach() | |
| # Call cpack with -G on each available generator. We do not care if this | |
| # succeeds or not. We expect it *not* to succeed if the underlying packaging | |
| # tools are not installed on the system... This test is here simply to add | |
| # coverage for the various cpack generators, even/especially to test ones | |
| # where the tools are not installed. | |
| # | |
| message(STATUS "CTEST_FULL_OUTPUT (Avoid ctest truncation of output)") | |
| message(STATUS "CPack generators='${generators}'") | |
| foreach(g ${generators}) | |
| message(STATUS "Calling cpack -G ${g}...") | |
| execute_process(COMMAND ${CMAKE_CPACK_COMMAND} -G ${g} | |
| RESULT_VARIABLE result | |
| OUTPUT_VARIABLE stdout | |
| ERROR_VARIABLE stderr | |
| WORKING_DIRECTORY ${dir}) | |
| message(STATUS "result='${result}'") | |
| message(STATUS "stdout='${stdout}'") | |
| message(STATUS "stderr='${stderr}'") | |
| message(STATUS "") | |
| endforeach() |