WhisperCom/test/appveyor.cmake

51 lines
1.7 KiB
CMake
Raw Normal View History

#!/usr/bin/env cmake -P
# Group AppVeyor builds to use fewer VM instances and upload useful artifacts from each.
find_program(AppVeyor appveyor)
if(NOT AppVeyor)
message(FATAL_ERROR "script specific to appveyor only")
endif()
function(message type) # overriding CMake built-in message function for AppVeyor
set(msg "${ARGV}")
if(type STREQUAL FATAL_ERROR OR type STREQUAL SEND_ERROR)
set(msg "${ARGN}")
set(options -Category Error)
elseif(type STREQUAL WARNING OR type STREQUAL AUTHOR_WARNING)
set(msg "${ARGN}")
set(options -Category Warning)
elseif(type STREQUAL STATUS)
set(msg "${ARGN}")
set(options -Category Information)
endif()
execute_process(COMMAND ${AppVeyor} AddMessage "${msg}" ${options})
_message(${ARGV}) # the built-in functionality
endfunction()
function(BuildAndRun)
if(DEFINED Generator)
string(REPLACE " " "" gen "${Generator}/") # Remove spaces from generator
endif()
set(BUILD_DIR "${CMAKE_CURRENT_LIST_DIR}/build/${gen}${Configuration}")
message("Building ${gen}${Configuration}")
include(${CMAKE_CURRENT_LIST_DIR}/build_and_run.cmake)
message("Built ${gen}${Configuration}")
execute_process(COMMAND ${CMAKE_COMMAND} -E tar czf "${BUILD_DIR}/Testing.zip" "${BUILD_DIR}/Testing")
execute_process(COMMAND ${AppVeyor} PushArtifact "${BUILD_DIR}/Testing.zip" -FileName "${gen}${Configuration}.zip")
endfunction()
foreach(Configuration "Debug" "Release")
if(WIN32)
foreach(Generator
"Visual Studio 14 2015"
"Visual Studio 14 2015 Win64"
"Visual Studio 15 2017"
"Visual Studio 15 2017 Win64"
)
BuildAndRun()
endforeach()
elseif(UNIX)
BuildAndRun()
endif()
endforeach()