Skip to content

Commit

Permalink
Add support for Visual Studio 2019
Browse files Browse the repository at this point in the history
This makes use of Github Actions for building on Windows with Visual Studio
2019. We already use this for updating the doxygen documentation and it
looks like the next reasonable step. Especially because it allows for 20
parallel builds for open source projects whereas Travis only had 5.
  • Loading branch information
BenjaminW3 committed Mar 7, 2020
1 parent 080278f commit eac21dc
Show file tree
Hide file tree
Showing 11 changed files with 137 additions and 59 deletions.
38 changes: 38 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Continuous Integration

on: [push, pull_request]

env:
ALPAKA_CI: GITHUB
TBB_ROOT: tbb
BOOST_ROOT: boost
ALPAKA_CI_BOOST_LIB_DIR: boost_libs
ALPAKA_CI_CLANG_DIR: llvm
ALPAKA_CI_CMAKE_DIR: CMake
ALPAKA_CI_CUDA_DIR: CUDA
ALPAKA_CI_HIP_ROOT_DIR: hip
ALPAKA_CI_SANITIZERS:
ALPAKA_CI_ANALYSIS: OFF
ALPAKA_ACC_GPU_CUDA_ENABLE: OFF
ALPAKA_ACC_GPU_HIP_ENABLE: OFF

jobs:
windows_cl-2019_release:
name: Windows cl-2019 Release
runs-on: windows-2019
steps:
- uses: actions/checkout@v1
- name: build + test
shell: bash
run: cd ${GITHUB_WORKSPACE} && ./script/travis/script.sh
env: {TRAVIS_OS_NAME: windows, CXX: cl.exe, CC: cl.exe, ALPAKA_CI_CL_VER: 2019, CMAKE_BUILD_TYPE: Release, ALPAKA_CI_BOOST_BRANCH: boost-1.72.0, ALPAKA_CI_CMAKE_VER: 3.15.7, OMP_NUM_THREADS: 4, ALPAKA_ACC_CPU_B_OMP2_T_SEQ_ENABLE: OFF, ALPAKA_ACC_CPU_B_SEQ_T_OMP2_ENABLE: OFF, ALPAKA_ACC_CPU_B_TBB_T_SEQ_ENABLE: OFF}

windows_cl-2019_debug:
name: Windows cl-2019 Debug
runs-on: windows-2019
steps:
- uses: actions/checkout@v1
- name: build + test
shell: bash
run: cd ${GITHUB_WORKSPACE} && ./script/travis/script.sh
env: {TRAVIS_OS_NAME: windows, CXX: cl.exe, CC: cl.exe, ALPAKA_CI_CL_VER: 2019, CMAKE_BUILD_TYPE: Debug, ALPAKA_CI_BOOST_BRANCH: boost-1.72.0, ALPAKA_CI_CMAKE_VER: 3.15.7, OMP_NUM_THREADS: 4, ALPAKA_ACC_CPU_B_OMP2_T_SEQ_ENABLE: OFF, ALPAKA_ACC_CPU_B_SEQ_T_OMP2_ENABLE: OFF, ALPAKA_ACC_CPU_B_TBB_T_SEQ_ENABLE: OFF}
3 changes: 2 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,8 @@ set_source_files_properties(${_ALPAKA_FILES_CMAKE} PROPERTIES HEADER_FILE_ONLY T
append_recursive_files_add_to_src_group("${_ALPAKA_ROOT_DIR}/doc/markdown" "${_ALPAKA_ROOT_DIR}" "md" _ALPAKA_FILES_DOC)
set_source_files_properties(${_ALPAKA_FILES_DOC} PROPERTIES HEADER_FILE_ONLY TRUE)

set(_ALPAKA_FILES_OTHER "${_ALPAKA_ROOT_DIR}/.gitignore" "${_ALPAKA_ROOT_DIR}/.travis.yml" "${_ALPAKA_ROOT_DIR}/.zenodo.json" "${_ALPAKA_ROOT_DIR}/LICENSE" "${_ALPAKA_ROOT_DIR}/README.md")
append_recursive_files_add_to_src_group("${_ALPAKA_ROOT_DIR}/.github" "${_ALPAKA_ROOT_DIR}" "yml" _ALPAKA_FILES_OTHER)
list(APPEND _ALPAKA_FILES_OTHER "${_ALPAKA_ROOT_DIR}/.gitignore" "${_ALPAKA_ROOT_DIR}/.travis.yml" "${_ALPAKA_ROOT_DIR}/.zenodo.json" "${_ALPAKA_ROOT_DIR}/LICENSE" "${_ALPAKA_ROOT_DIR}/README.md")
set_source_files_properties(${_ALPAKA_FILES_OTHER} PROPERTIES HEADER_FILE_ONLY TRUE)

if(TARGET alpaka)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ Supported Compilers

This library uses C++14 (or newer when available).

|Accelerator Back-end|gcc 5.5 <br/> (Linux)|gcc 6.4/7.3 <br/> (Linux)|gcc 8.1/9.1 <br/> (Linux)|clang 4 <br/> (Linux)|clang 5 <br/> (Linux)|clang 6 <br/> (Linux)|clang 7 <br/> (Linux)|clang 8 <br/> (Linux)|clang 9 <br/> (Linux)|Apple LLVM 10.2-11.2 <br/> (macOS)|MSVC 2017.9 <br/> (Windows)|
|Accelerator Back-end|gcc 5.5 <br/> (Linux)|gcc 6.4/7.3 <br/> (Linux)|gcc 8.1/9.1 <br/> (Linux)|clang 4 <br/> (Linux)|clang 5 <br/> (Linux)|clang 6 <br/> (Linux)|clang 7 <br/> (Linux)|clang 8 <br/> (Linux)|clang 9 <br/> (Linux)|Apple LLVM 10.2-11.2 <br/> (macOS)|MSVC 2017/2019 <br/> (Windows)|
|---|---|---|---|---|---|---|---|---|---|---|---|
|Serial|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|
|OpenMP 2.0+ blocks|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:x:|:white_check_mark:|
Expand Down
9 changes: 6 additions & 3 deletions script/travis/before_install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,13 @@ source ./script/travis/set.sh

#-------------------------------------------------------------------------------
# Those are set to g++/gcc within the git bash even though they are overwritten in the .travis.yml file.
if [ "$TRAVIS_OS_NAME" = "windows" ]
if [ "$ALPAKA_CI" = "TRAVIS" ]
then
CXX=cl.exe
CC=cl.exe
if [ "$TRAVIS_OS_NAME" = "windows" ]
then
CXX=cl.exe
CC=cl.exe
fi
fi

#-------------------------------------------------------------------------------
Expand Down
14 changes: 13 additions & 1 deletion script/travis/install_boost.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ fi
: "${CXX?'CXX must be specified'}"
: "${CC?'CC must be specified'}"
: "${ALPAKA_CI_INSTALL_FIBERS?'ALPAKA_CI_INSTALL_FIBERS must be specified'}"
: "${ALPAKA_CI_BOOST_LIB_DIR?'ALPAKA_CI_BOOST_LIB_DIR must be specified'}"
if [ "$TRAVIS_OS_NAME" = "windows" ]
then
: "${ALPAKA_CI_CL_VER?'ALPAKA_CI_CL_VER must be specified'}"
fi

git clone -b "${ALPAKA_CI_BOOST_BRANCH}" --quiet --recursive --single-branch --depth 1 https://github.com/boostorg/boost.git "${BOOST_ROOT}"

Expand Down Expand Up @@ -67,7 +72,14 @@ then

if [ "$TRAVIS_OS_NAME" = "windows" ]
then
ALPAKA_BOOST_B2+=" --layout=versioned --toolset=msvc-14.1"
ALPAKA_BOOST_B2+=" --layout=versioned"
if [ "$ALPAKA_CI_CL_VER" = "2017" ]
then
ALPAKA_BOOST_B2+=" --toolset=msvc-14.1"
elif [ "$ALPAKA_CI_CL_VER" = "2019" ]
then
ALPAKA_BOOST_B2+=" --toolset=msvc-14.2"
fi
else
ALPAKA_BOOST_B2+=" --layout=tagged --toolset=${CC}"
fi
Expand Down
2 changes: 1 addition & 1 deletion script/travis/install_cmake.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,5 +37,5 @@ then
elif [ "$TRAVIS_OS_NAME" = "windows" ]
then
choco uninstall cmake.install
choco install cmake.install --version ${ALPAKA_CI_CMAKE_VER}
choco install cmake.install --no-progress --version ${ALPAKA_CI_CMAKE_VER}
fi
50 changes: 50 additions & 0 deletions script/travis/print_env.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#!/bin/bash

#
# Copyright 2017-2019 Benjamin Worpitz
#
# This file is part of Alpaka.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#

source ./script/travis/set.sh

#-------------------------------------------------------------------------------
if [ "$ALPAKA_CI" = "TRAVIS" ]
then
# Print the travis environment variables: http://docs.travis-ci.com/user/ci-environment/
echo TRAVIS_BRANCH: "${TRAVIS_BRANCH}"
echo TRAVIS_BUILD_DIR: "${TRAVIS_BUILD_DIR}"
echo TRAVIS_BUILD_ID: "${TRAVIS_BUILD_ID}"
echo TRAVIS_BUILD_NUMBER: "${TRAVIS_BUILD_NUMBER}"
echo TRAVIS_COMMIT: "${TRAVIS_COMMIT}"
echo TRAVIS_COMMIT_RANGE: "${TRAVIS_COMMIT_RANGE}"
echo TRAVIS_JOB_ID: "${TRAVIS_JOB_ID}"
echo TRAVIS_JOB_NUMBER: "${TRAVIS_JOB_NUMBER}"
echo TRAVIS_PULL_REQUEST: "${TRAVIS_PULL_REQUEST}"
echo TRAVIS_SECURE_ENV_VARS: "${TRAVIS_SECURE_ENV_VARS}"
echo TRAVIS_REPO_SLUG: "${TRAVIS_REPO_SLUG}"
echo TRAVIS_OS_NAME: "${TRAVIS_OS_NAME}"
echo TRAVIS_TAG: "${TRAVIS_TAG}"
elif [ "$ALPAKA_CI" = "GITHUB" ]
then
echo GITHUB_WORKSPACE: "${GITHUB_WORKSPACE}"
fi

if [ "$TRAVIS_OS_NAME" = "linux" ]
then
# Show all running services
sudo service --status-all

# Stop some unnecessary services to save memory
sudo /etc/init.d/mysql stop
sudo /etc/init.d/postgresql stop
sudo /etc/init.d/redis-server stop

# Show memory stats
sudo smem
sudo free -m -t
fi
44 changes: 0 additions & 44 deletions script/travis/print_travisEnv.sh

This file was deleted.

30 changes: 24 additions & 6 deletions script/travis/run_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ fi
mkdir -p build/
cd build/

ALPAKA_CI_CMAKE_GENERATOR_PLATFORM=""
if [ "$TRAVIS_OS_NAME" = "linux" ] || [ "$TRAVIS_OS_NAME" = "osx" ]
then
ALPAKA_CI_CMAKE_GENERATOR="Unix Makefiles"
Expand All @@ -78,15 +79,32 @@ then
#"./C/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build/vcvarsall.bat" amd64

# Add msbuild to the path
MSBUILD_PATH="/C/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/MSBuild/15.0/Bin"
export PATH=$MSBUILD_PATH:$PATH
MSBuild.exe -version
if [ "$ALPAKA_CI_CL_VER" = "2017" ]
then
MSBUILD_EXECUTABLE="/C/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/MSBuild/15.0/Bin/MSBuild.exe"
elif [ "$ALPAKA_CI_CL_VER" = "2019" ]
then
if [ "$ALPAKA_CI" = "GITHUB" ]
then
MSBUILD_EXECUTABLE=$(vswhere.exe -latest -requires Microsoft.Component.MSBuild -find "MSBuild\**\Bin\MSBuild.exe")
fi
fi
"$MSBUILD_EXECUTABLE" -version

: ${ALPAKA_CI_CL_VER?"ALPAKA_CI_CL_VER must be specified"}

# Select the generator
ALPAKA_CI_CMAKE_GENERATOR="Visual Studio 15 2017 Win64"
if [ "$ALPAKA_CI_CL_VER" = "2017" ]
then
ALPAKA_CI_CMAKE_GENERATOR="Visual Studio 15 2017"
elif [ "$ALPAKA_CI_CL_VER" = "2019" ]
then
ALPAKA_CI_CMAKE_GENERATOR="Visual Studio 16 2019"
fi
ALPAKA_CI_CMAKE_GENERATOR_PLATFORM="-A x64"
fi

cmake -G "${ALPAKA_CI_CMAKE_GENERATOR}" \
cmake -G "${ALPAKA_CI_CMAKE_GENERATOR}" ${ALPAKA_CI_CMAKE_GENERATOR_PLATFORM} \
"$(env2cmake BOOST_ROOT)" -DBOOST_LIBRARYDIR="${ALPAKA_CI_BOOST_LIB_DIR}/lib" -DBoost_USE_STATIC_LIBS=ON -DBoost_USE_MULTITHREADED=ON -DBoost_USE_STATIC_RUNTIME=OFF \
"$(env2cmake CMAKE_BUILD_TYPE)" "$(env2cmake CMAKE_CXX_FLAGS)" "$(env2cmake CMAKE_EXE_LINKER_FLAGS)" \
"$(env2cmake ALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLE)" "$(env2cmake ALPAKA_ACC_CPU_B_SEQ_T_THREADS_ENABLE)" "$(env2cmake ALPAKA_ACC_CPU_B_SEQ_T_FIBERS_ENABLE)" \
Expand All @@ -103,7 +121,7 @@ then
make VERBOSE=1
elif [ "$TRAVIS_OS_NAME" = "windows" ]
then
MSBuild.exe "alpaka.sln" -p:Configuration=${CMAKE_BUILD_TYPE} -maxcpucount:2 -verbosity:minimal
"$MSBUILD_EXECUTABLE" "alpaka.sln" -p:Configuration=${CMAKE_BUILD_TYPE} -maxcpucount:2 -verbosity:minimal
fi

cd ..
2 changes: 1 addition & 1 deletion script/travis/script.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

source ./script/travis/set.sh

./script/travis/print_travisEnv.sh
./script/travis/print_env.sh
source ./script/travis/before_install.sh

if [ "$TRAVIS_OS_NAME" = "linux" ]
Expand Down
2 changes: 1 addition & 1 deletion test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ if(ALPAKA_ACC_GPU_CUDA_ENABLE AND ALPAKA_CUDA_COMPILER MATCHES "nvcc")
endif()
endif()

list(APPEND _ALPAKA_TEST_OPTIONS "--use-colour yes")
list(APPEND _ALPAKA_TEST_OPTIONS --use-colour yes)

add_subdirectory(analysis)
add_subdirectory(integ)
Expand Down

0 comments on commit eac21dc

Please sign in to comment.