diff --git a/.github/workflows/build_qt6.yml b/.github/workflows/build_qt6.yml new file mode 100644 index 0000000000..5efb2dccf3 --- /dev/null +++ b/.github/workflows/build_qt6.yml @@ -0,0 +1,151 @@ +name: Qt6 Build Matrix +# Many thanks to Cristian Adam for examples +# e.g. https://github.com/cristianadam/HelloWorld/blob/master/.github/workflows/build_cmake.yml +# https://cristianadam.eu/20191222/using-github-actions-with-c-plus-plus-and-cmake/ + + +on: [push, pull_request, workflow_dispatch] + +env: + QT_VERSION: 6.5.3 + # this is different from MACOSX_DEPLOYMENT_TARGET to prevent build problems + # we set MACOSX_DEPLOYMENT_TARGET later + MACOS_TARGET: 10.15 + FEATURES: -DBUILD_GPL_PLUGINS=ON -DWITH_COORDGEN=OFF -DUSE_VTK=ON -DQT_VERSION=6 + +jobs: + build: + name: ${{ matrix.config.name }} + runs-on: ${{ matrix.config.os }} + strategy: + fail-fast: false + matrix: + config: + - { + name: "Ubuntu Qt6", artifact: "", + os: ubuntu-latest, + cc: "gcc", cxx: "g++", + build_type: "Release", + cmake_flags: "-G Ninja", + cpack: "", + } + - { + name: "Ubuntu Qt6 AppImage", artifact: "", + os: ubuntu-20.04, + cc: "gcc", cxx: "g++", + build_type: "Release", + cmake_flags: "-G Ninja -DINSTALL_BUNDLE_FILES=ON", + cpack: "", + } + - { + name: "macOS Qt6", artifact: "", + os: macos-latest, + cc: "clang", cxx: "clang++", + build_type: "Release", + cmake_flags: "-G Ninja", + cpack_flags: "-G DragNDrop", + } + - { + name: "Windows Qt6", artifact: "", + os: windows-latest, + cc: "cl", cxx: "cl", + build_type: "Release", + cmake_flags: "", + build_flags: "-j 2", + cpack_flags: "-G NSIS", + } + + steps: + + - name: Install Dependencies (Linux) + if: runner.os == 'Linux' + run: | + sudo apt-get -qq update + sudo apt-get -qq install ninja-build libeigen3-dev libboost-all-dev libglew-dev libxml2-dev + - name: Install Dependencies (macOS) + if: runner.os == 'macOS' + run: | + if uname -p | grep -q "arm" ; then + export PATH=/opt/homebrew/bin:$PATH + else # not self-hosted runner + brew install ninja eigen glew + fi + - name: Install Dependencies (Windows) + if: runner.os == 'Windows' + run: choco install ninja + + - name: Checkout openchemistry + uses: actions/checkout@v3 + with: + repository: openchemistry/openchemistry + submodules: recursive + + - name: Checkout avogadroapp + uses: actions/checkout@v3 + with: + repository: openchemistry/avogadroapp + path: avogadroapp + + - name: Checkout avogadrolibs + uses: actions/checkout@v3 + with: + path: avogadrolibs + + - name: Install Qt + uses: jurplel/install-qt-action@v3 + with: + cache: true + version: ${{ env.QT_VERSION }} + aqtversion: '==3.1.*' + modules: 'qt5compat' + + - name: Configure MSVC Command Prompt + if: runner.os == 'Windows' + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: x64 + + - name: Grab cache files + uses: actions/cache@v3 + if: runner.os != 'Windows' + with: + path: | + ${{ runner.workspace }}/build/thirdparty + ${{ runner.workspace }}/build/Downloads + key: ${{ matrix.config.name }}-thirdparty + + - name: Configure + run: | + if [ ! -d "${{ runner.workspace }}/build" ]; then mkdir "${{ runner.workspace }}/build"; fi + cd "${{ runner.workspace }}/build" + # won't have any effect except on Mac + echo "MACOSX_DEPLOYMENT_TARGET=${{ env.MACOS_TARGET }}" >> $GITHUB_ENV + CC=${{matrix.config.cc}} CXX=${{matrix.config.cxx}} cmake $GITHUB_WORKSPACE ${{env.FEATURES}} -DCMAKE_BUILD_TYPE=${{matrix.config.build_type}} ${{matrix.config.cmake_flags}} + shell: bash + + - name: Build + run: | + CC=${{matrix.config.cc}} CXX=${{matrix.config.cxx}} cmake --build . --config ${{matrix.config.build_type}} ${{matrix.config.build_flags}} + shell: bash + working-directory: ${{ runner.workspace }}/build + + - name: Run tests + if: matrix.config.os == 'ubuntu-latest' + shell: cmake -P {0} + run: | + include(ProcessorCount) + ProcessorCount(N) + set(ENV{CTEST_OUTPUT_ON_FAILURE} "ON") + set(ENV{ASAN_OPTIONS} "new_delete_type_mismatch=0") + execute_process( + COMMAND ctest -j ${N} + WORKING_DIRECTORY ${{ runner.workspace }}/build/avogadrolibs + RESULT_VARIABLE result + ) + if (NOT result EQUAL 0) + message(FATAL_ERROR "Running tests failed!") + endif() + + - name: Setup tmate session + if: ${{ failure() }} + uses: mxschmitt/action-tmate@v3 diff --git a/avogadro/qtplugins/CMakeLists.txt b/avogadro/qtplugins/CMakeLists.txt index 4666ea6716..8768ea91e9 100644 --- a/avogadro/qtplugins/CMakeLists.txt +++ b/avogadro/qtplugins/CMakeLists.txt @@ -191,7 +191,7 @@ if (USE_OPENGL) endif() # other optional plugins -if(BUILD_GPL_PLUGINS) +if(BUILD_GPL_PLUGINS AND QT_VERSION EQUAL 5) # qtaimcurvature.h/cpp contains GPL licensed code: add_subdirectory(qtaim) endif()