From a8dff9c811439a494c81d0cffad74bd02fbcc8f8 Mon Sep 17 00:00:00 2001 From: serge-sans-paille Date: Wed, 13 Nov 2019 23:19:56 +0100 Subject: [PATCH 1/2] Setup default build action for llvm --- .github/workflows/llvm.yml | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/llvm.yml diff --git a/.github/workflows/llvm.yml b/.github/workflows/llvm.yml new file mode 100644 index 0000000000000..c18b3c27d547c --- /dev/null +++ b/.github/workflows/llvm.yml @@ -0,0 +1,34 @@ +name: CI + +on: [push] + +jobs: + build_llvm: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-latest + - windows-latest + - macOS-latest + cmake_args: + - "" + steps: + - name: Setup Windows + if: startsWith(matrix.os, 'windows') + uses: tstellar/actions/setup-windows@master + with: + arch: amd64 + - uses: actions/checkout@v1 + with: + fetch-depth: 1 + - name: Install Ninja + uses: tstellar/actions/install-ninja@master + with: + os: ${{ runner.os }} + - name: Test LLVM + uses: tstellar/actions/build-test-llvm-project@master + with: + cmake_args: -G Ninja -DCMAKE_BUILD_TYPE=Release ${{ matrix.cmake_args }} + os: ${{ runner.os }} From 06f6a9cf294682698b0b24280f2ab281d2cd2f5b Mon Sep 17 00:00:00 2001 From: serge-sans-paille Date: Thu, 13 Feb 2020 12:03:33 +0100 Subject: [PATCH 2/2] Rework go bindings so that validation works fine --- llvm/bindings/go/build.sh | 28 ------------------- .../bindings/go/{ => src}/llvm/IRBindings.cpp | 0 llvm/bindings/go/{ => src}/llvm/IRBindings.h | 0 .../llvm/InstrumentationBindings.cpp | 0 .../{ => src}/llvm/InstrumentationBindings.h | 0 .../go/{ => src}/llvm/SupportBindings.cpp | 0 .../go/{ => src}/llvm/SupportBindings.h | 0 llvm/bindings/go/{ => src}/llvm/analysis.go | 0 llvm/bindings/go/{ => src}/llvm/bitreader.go | 0 llvm/bindings/go/{ => src}/llvm/bitwriter.go | 0 llvm/bindings/go/{ => src}/llvm/dibuilder.go | 0 .../go/{ => src}/llvm/executionengine.go | 0 .../go/{ => src}/llvm/executionengine_test.go | 0 llvm/bindings/go/{ => src}/llvm/ir.go | 0 llvm/bindings/go/{ => src}/llvm/ir_test.go | 0 llvm/bindings/go/{ => src}/llvm/linker.go | 0 .../go/{ => src}/llvm/llvm_config.go.in | 0 llvm/bindings/go/{ => src}/llvm/llvm_dep.go | 2 -- llvm/bindings/go/{ => src}/llvm/string.go | 0 .../bindings/go/{ => src}/llvm/string_test.go | 0 llvm/bindings/go/{ => src}/llvm/support.go | 0 llvm/bindings/go/{ => src}/llvm/target.go | 0 .../{ => src}/llvm/transforms_coroutines.go | 0 .../llvm/transforms_instrumentation.go | 0 .../go/{ => src}/llvm/transforms_ipo.go | 0 .../go/{ => src}/llvm/transforms_pmbuilder.go | 0 .../go/{ => src}/llvm/transforms_scalar.go | 0 llvm/bindings/go/{ => src}/llvm/version.go | 0 llvm/test/Bindings/Go/go.test | 2 +- llvm/test/Bindings/Go/lit.local.cfg | 3 +- llvm/test/lit.cfg.py | 2 +- llvm/utils/lit/lit/llvm/subst.py | 2 +- 32 files changed, 5 insertions(+), 34 deletions(-) delete mode 100755 llvm/bindings/go/build.sh rename llvm/bindings/go/{ => src}/llvm/IRBindings.cpp (100%) rename llvm/bindings/go/{ => src}/llvm/IRBindings.h (100%) rename llvm/bindings/go/{ => src}/llvm/InstrumentationBindings.cpp (100%) rename llvm/bindings/go/{ => src}/llvm/InstrumentationBindings.h (100%) rename llvm/bindings/go/{ => src}/llvm/SupportBindings.cpp (100%) rename llvm/bindings/go/{ => src}/llvm/SupportBindings.h (100%) rename llvm/bindings/go/{ => src}/llvm/analysis.go (100%) rename llvm/bindings/go/{ => src}/llvm/bitreader.go (100%) rename llvm/bindings/go/{ => src}/llvm/bitwriter.go (100%) rename llvm/bindings/go/{ => src}/llvm/dibuilder.go (100%) rename llvm/bindings/go/{ => src}/llvm/executionengine.go (100%) rename llvm/bindings/go/{ => src}/llvm/executionengine_test.go (100%) rename llvm/bindings/go/{ => src}/llvm/ir.go (100%) rename llvm/bindings/go/{ => src}/llvm/ir_test.go (100%) rename llvm/bindings/go/{ => src}/llvm/linker.go (100%) rename llvm/bindings/go/{ => src}/llvm/llvm_config.go.in (100%) rename llvm/bindings/go/{ => src}/llvm/llvm_dep.go (96%) rename llvm/bindings/go/{ => src}/llvm/string.go (100%) rename llvm/bindings/go/{ => src}/llvm/string_test.go (100%) rename llvm/bindings/go/{ => src}/llvm/support.go (100%) rename llvm/bindings/go/{ => src}/llvm/target.go (100%) rename llvm/bindings/go/{ => src}/llvm/transforms_coroutines.go (100%) rename llvm/bindings/go/{ => src}/llvm/transforms_instrumentation.go (100%) rename llvm/bindings/go/{ => src}/llvm/transforms_ipo.go (100%) rename llvm/bindings/go/{ => src}/llvm/transforms_pmbuilder.go (100%) rename llvm/bindings/go/{ => src}/llvm/transforms_scalar.go (100%) rename llvm/bindings/go/{ => src}/llvm/version.go (100%) diff --git a/llvm/bindings/go/build.sh b/llvm/bindings/go/build.sh deleted file mode 100755 index 3177852aebad6..0000000000000 --- a/llvm/bindings/go/build.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -xe - -gollvmdir=$(dirname "$0")/llvm - -workdir=$gollvmdir/workdir -llvmdir=$gollvmdir/../../.. -llvm_builddir=$workdir/llvm_build - -mkdir -p $llvm_builddir - -cmake_flags="../../../../.. $@" -llvm_config="$llvm_builddir/bin/llvm-config" -llvm_go="$llvm_builddir/bin/llvm-go" - -if test -n "`which ninja`" ; then - # If Ninja is available, we can speed up the build by building only the - # required subset of LLVM. - (cd $llvm_builddir && cmake -G Ninja $cmake_flags) - ninja -C $llvm_builddir llvm-config llvm-go - llvm_components="$($llvm_go print-components)" - llvm_buildtargets="$($llvm_config --libs $llvm_components | sed -e 's/-l//g')" - ninja -C $llvm_builddir $llvm_buildtargets FileCheck -else - (cd $llvm_builddir && cmake $cmake_flags) - make -C $llvm_builddir -j4 -fi - -$llvm_go print-config > $gollvmdir/llvm_config.go diff --git a/llvm/bindings/go/llvm/IRBindings.cpp b/llvm/bindings/go/src/llvm/IRBindings.cpp similarity index 100% rename from llvm/bindings/go/llvm/IRBindings.cpp rename to llvm/bindings/go/src/llvm/IRBindings.cpp diff --git a/llvm/bindings/go/llvm/IRBindings.h b/llvm/bindings/go/src/llvm/IRBindings.h similarity index 100% rename from llvm/bindings/go/llvm/IRBindings.h rename to llvm/bindings/go/src/llvm/IRBindings.h diff --git a/llvm/bindings/go/llvm/InstrumentationBindings.cpp b/llvm/bindings/go/src/llvm/InstrumentationBindings.cpp similarity index 100% rename from llvm/bindings/go/llvm/InstrumentationBindings.cpp rename to llvm/bindings/go/src/llvm/InstrumentationBindings.cpp diff --git a/llvm/bindings/go/llvm/InstrumentationBindings.h b/llvm/bindings/go/src/llvm/InstrumentationBindings.h similarity index 100% rename from llvm/bindings/go/llvm/InstrumentationBindings.h rename to llvm/bindings/go/src/llvm/InstrumentationBindings.h diff --git a/llvm/bindings/go/llvm/SupportBindings.cpp b/llvm/bindings/go/src/llvm/SupportBindings.cpp similarity index 100% rename from llvm/bindings/go/llvm/SupportBindings.cpp rename to llvm/bindings/go/src/llvm/SupportBindings.cpp diff --git a/llvm/bindings/go/llvm/SupportBindings.h b/llvm/bindings/go/src/llvm/SupportBindings.h similarity index 100% rename from llvm/bindings/go/llvm/SupportBindings.h rename to llvm/bindings/go/src/llvm/SupportBindings.h diff --git a/llvm/bindings/go/llvm/analysis.go b/llvm/bindings/go/src/llvm/analysis.go similarity index 100% rename from llvm/bindings/go/llvm/analysis.go rename to llvm/bindings/go/src/llvm/analysis.go diff --git a/llvm/bindings/go/llvm/bitreader.go b/llvm/bindings/go/src/llvm/bitreader.go similarity index 100% rename from llvm/bindings/go/llvm/bitreader.go rename to llvm/bindings/go/src/llvm/bitreader.go diff --git a/llvm/bindings/go/llvm/bitwriter.go b/llvm/bindings/go/src/llvm/bitwriter.go similarity index 100% rename from llvm/bindings/go/llvm/bitwriter.go rename to llvm/bindings/go/src/llvm/bitwriter.go diff --git a/llvm/bindings/go/llvm/dibuilder.go b/llvm/bindings/go/src/llvm/dibuilder.go similarity index 100% rename from llvm/bindings/go/llvm/dibuilder.go rename to llvm/bindings/go/src/llvm/dibuilder.go diff --git a/llvm/bindings/go/llvm/executionengine.go b/llvm/bindings/go/src/llvm/executionengine.go similarity index 100% rename from llvm/bindings/go/llvm/executionengine.go rename to llvm/bindings/go/src/llvm/executionengine.go diff --git a/llvm/bindings/go/llvm/executionengine_test.go b/llvm/bindings/go/src/llvm/executionengine_test.go similarity index 100% rename from llvm/bindings/go/llvm/executionengine_test.go rename to llvm/bindings/go/src/llvm/executionengine_test.go diff --git a/llvm/bindings/go/llvm/ir.go b/llvm/bindings/go/src/llvm/ir.go similarity index 100% rename from llvm/bindings/go/llvm/ir.go rename to llvm/bindings/go/src/llvm/ir.go diff --git a/llvm/bindings/go/llvm/ir_test.go b/llvm/bindings/go/src/llvm/ir_test.go similarity index 100% rename from llvm/bindings/go/llvm/ir_test.go rename to llvm/bindings/go/src/llvm/ir_test.go diff --git a/llvm/bindings/go/llvm/linker.go b/llvm/bindings/go/src/llvm/linker.go similarity index 100% rename from llvm/bindings/go/llvm/linker.go rename to llvm/bindings/go/src/llvm/linker.go diff --git a/llvm/bindings/go/llvm/llvm_config.go.in b/llvm/bindings/go/src/llvm/llvm_config.go.in similarity index 100% rename from llvm/bindings/go/llvm/llvm_config.go.in rename to llvm/bindings/go/src/llvm/llvm_config.go.in diff --git a/llvm/bindings/go/llvm/llvm_dep.go b/llvm/bindings/go/src/llvm/llvm_dep.go similarity index 96% rename from llvm/bindings/go/llvm/llvm_dep.go rename to llvm/bindings/go/src/llvm/llvm_dep.go index 9484e6ddf879e..e3ccce00b7137 100644 --- a/llvm/bindings/go/llvm/llvm_dep.go +++ b/llvm/bindings/go/src/llvm/llvm_dep.go @@ -14,5 +14,3 @@ // +build !byollvm package llvm - -var _ run_build_sh diff --git a/llvm/bindings/go/llvm/string.go b/llvm/bindings/go/src/llvm/string.go similarity index 100% rename from llvm/bindings/go/llvm/string.go rename to llvm/bindings/go/src/llvm/string.go diff --git a/llvm/bindings/go/llvm/string_test.go b/llvm/bindings/go/src/llvm/string_test.go similarity index 100% rename from llvm/bindings/go/llvm/string_test.go rename to llvm/bindings/go/src/llvm/string_test.go diff --git a/llvm/bindings/go/llvm/support.go b/llvm/bindings/go/src/llvm/support.go similarity index 100% rename from llvm/bindings/go/llvm/support.go rename to llvm/bindings/go/src/llvm/support.go diff --git a/llvm/bindings/go/llvm/target.go b/llvm/bindings/go/src/llvm/target.go similarity index 100% rename from llvm/bindings/go/llvm/target.go rename to llvm/bindings/go/src/llvm/target.go diff --git a/llvm/bindings/go/llvm/transforms_coroutines.go b/llvm/bindings/go/src/llvm/transforms_coroutines.go similarity index 100% rename from llvm/bindings/go/llvm/transforms_coroutines.go rename to llvm/bindings/go/src/llvm/transforms_coroutines.go diff --git a/llvm/bindings/go/llvm/transforms_instrumentation.go b/llvm/bindings/go/src/llvm/transforms_instrumentation.go similarity index 100% rename from llvm/bindings/go/llvm/transforms_instrumentation.go rename to llvm/bindings/go/src/llvm/transforms_instrumentation.go diff --git a/llvm/bindings/go/llvm/transforms_ipo.go b/llvm/bindings/go/src/llvm/transforms_ipo.go similarity index 100% rename from llvm/bindings/go/llvm/transforms_ipo.go rename to llvm/bindings/go/src/llvm/transforms_ipo.go diff --git a/llvm/bindings/go/llvm/transforms_pmbuilder.go b/llvm/bindings/go/src/llvm/transforms_pmbuilder.go similarity index 100% rename from llvm/bindings/go/llvm/transforms_pmbuilder.go rename to llvm/bindings/go/src/llvm/transforms_pmbuilder.go diff --git a/llvm/bindings/go/llvm/transforms_scalar.go b/llvm/bindings/go/src/llvm/transforms_scalar.go similarity index 100% rename from llvm/bindings/go/llvm/transforms_scalar.go rename to llvm/bindings/go/src/llvm/transforms_scalar.go diff --git a/llvm/bindings/go/llvm/version.go b/llvm/bindings/go/src/llvm/version.go similarity index 100% rename from llvm/bindings/go/llvm/version.go rename to llvm/bindings/go/src/llvm/version.go diff --git a/llvm/test/Bindings/Go/go.test b/llvm/test/Bindings/Go/go.test index bb39e6c8455cc..5901ccbf6ae88 100644 --- a/llvm/test/Bindings/Go/go.test +++ b/llvm/test/Bindings/Go/go.test @@ -1,4 +1,4 @@ -; RUN: llvm-go test llvm.org/llvm/bindings/go/llvm +; RUN: CGO_CPPFLAGS="`llvm-config --cppflags`" CGO_CXXFLAGS=-std=c++14 CGO_LDFLAGS="`llvm-config --ldflags --libs --system-libs all`" go test llvm ; REQUIRES: shell ; UNSUPPORTED: asan, ubsan, msan diff --git a/llvm/test/Bindings/Go/lit.local.cfg b/llvm/test/Bindings/Go/lit.local.cfg index 3021fc64a750a..7c72c7687e619 100644 --- a/llvm/test/Bindings/Go/lit.local.cfg +++ b/llvm/test/Bindings/Go/lit.local.cfg @@ -57,4 +57,5 @@ def fixup_compiler_path(compiler): config.environment['CC'] = fixup_compiler_path(config.host_cc) config.environment['CXX'] = fixup_compiler_path(config.host_cxx) -config.environment['CGO_LDFLAGS'] = config.host_ldflags +config.environment['LD_LIBRARY_PATH'] = config.llvm_shlib_dir +config.environment['GOPATH'] = os.path.join(config.llvm_src_root, 'bindings', 'go') diff --git a/llvm/test/lit.cfg.py b/llvm/test/lit.cfg.py index 777322e0c2ad7..5789f9d6ade5f 100644 --- a/llvm/test/lit.cfg.py +++ b/llvm/test/lit.cfg.py @@ -160,7 +160,7 @@ def get_asan_rtlib(): # The following tools are optional tools.extend([ - ToolSubst('llvm-go', unresolved='ignore'), + ToolSubst('go', unresolved='ignore'), ToolSubst('llvm-mt', unresolved='ignore'), ToolSubst('Kaleidoscope-Ch3', unresolved='ignore'), ToolSubst('Kaleidoscope-Ch4', unresolved='ignore'), diff --git a/llvm/utils/lit/lit/llvm/subst.py b/llvm/utils/lit/lit/llvm/subst.py index 4275b8a56a3be..c4a269262f75c 100644 --- a/llvm/utils/lit/lit/llvm/subst.py +++ b/llvm/utils/lit/lit/llvm/subst.py @@ -23,7 +23,7 @@ def resolve(self, config, dirs): if self.name == 'llc' and os.environ.get('LLVM_ENABLE_MACHINE_VERIFIER') == '1': command += ' -verify-machineinstrs' - elif self.name == 'llvm-go': + elif self.name == 'go': exe = getattr(config.config, 'go_executable', None) if exe: command += ' go=' + exe