From 59d53dfe09f6e77438dcb75fce7f0f45da2ffb55 Mon Sep 17 00:00:00 2001 From: serge-sans-paille Date: Wed, 13 Nov 2019 23:19:56 +0100 Subject: [PATCH 1/4] 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 c227b9e38020b82d0223c47ff662376f88c70692 Mon Sep 17 00:00:00 2001 From: serge-sans-paille Date: Tue, 7 Jan 2020 09:15:27 +0100 Subject: [PATCH 2/4] Specific github validation --- .github/workflows/llvm.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/llvm.yml b/.github/workflows/llvm.yml index c18b3c27d547c..1e3e6136af154 100644 --- a/.github/workflows/llvm.yml +++ b/.github/workflows/llvm.yml @@ -9,11 +9,7 @@ jobs: fail-fast: false matrix: os: - - ubuntu-latest - - windows-latest - macOS-latest - cmake_args: - - "" steps: - name: Setup Windows if: startsWith(matrix.os, 'windows') @@ -27,8 +23,14 @@ jobs: uses: tstellar/actions/install-ninja@master with: os: ${{ runner.os }} - - name: Test LLVM + - name: Test LLVM / dynamic + if: startsWith(matrix.os, 'windows') == false uses: tstellar/actions/build-test-llvm-project@master with: - cmake_args: -G Ninja -DCMAKE_BUILD_TYPE=Release ${{ matrix.cmake_args }} + cmake_args: -G Ninja -DCMAKE_BUILD_TYPE=Release ${{ matrix.cmake_args }} -DLLVM_ENABLE_PROJECTS='polly;clang' -DPOLLY_ENABLE_GPGPU_CODEGEN=OFF -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_POLLY_LINK_INTO_TOOLS=OFF '-DLLVM_BUILD_EXAMPLES=On' '-DCMAKE_MACOSX_RPATH=On' + os: ${{ runner.os }} + - name: Test LLVM / static + uses: tstellar/actions/build-test-llvm-project@master + with: + cmake_args: -G Ninja -DCMAKE_BUILD_TYPE=Release ${{ matrix.cmake_args }} -DLLVM_ENABLE_PROJECTS='polly;clang' -DPOLLY_ENABLE_GPGPU_CODEGEN=ON -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_POLLY_LINK_INTO_TOOLS=ON '-DLLVM_BUILD_EXAMPLES=On' '-DCMAKE_MACOSX_RPATH=On' os: ${{ runner.os }} From 50f99409fbfad363f93f5ce4577a5551ac820496 Mon Sep 17 00:00:00 2001 From: serge-sans-paille Date: Tue, 7 Jan 2020 09:15:49 +0100 Subject: [PATCH 3/4] Fix compiler extension example cmake integration - Do not add it to the Export file - Update install target Fix OSX integration --- llvm/cmake/modules/AddLLVM.cmake | 18 ++++++++---------- llvm/test/Feature/load_extension.ll | 3 --- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake index c1bbae788781d..68d6023218935 100644 --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -870,9 +870,7 @@ function(add_llvm_pass_plugin name) endif() message(STATUS "Registering ${name} as a pass plugin (static build: ${LLVM_${name_upper}_LINK_INTO_TOOLS})") - if(LLVM_${name_upper}_LINK_INTO_TOOLS) - set_property(GLOBAL APPEND PROPERTY LLVM_COMPILE_EXTENSIONS ${name}) - endif() + set_property(GLOBAL APPEND PROPERTY LLVM_COMPILE_EXTENSIONS ${name}) endfunction(add_llvm_pass_plugin) # Generate X Macro file for extension handling. It provides a @@ -893,15 +891,15 @@ function(process_llvm_pass_plugins) string(CONCAT llvm_extension_project ${llvm_extension_upper_first} ${llvm_extension_lower_tail}) if(LLVM_${llvm_extension_upper}_LINK_INTO_TOOLS) - file(APPEND "${CMAKE_BINARY_DIR}/include/llvm/Support/Extension.def.tmp" "HANDLE_EXTENSION(${llvm_extension_project})\n") + file(APPEND "${CMAKE_BINARY_DIR}/include/llvm/Support/Extension.def.tmp" "HANDLE_EXTENSION(${llvm_extension_project})\n") - get_property(llvm_plugin_targets GLOBAL PROPERTY LLVM_PLUGIN_TARGETS) - foreach(llvm_plugin_target ${llvm_plugin_targets}) - set_property(TARGET ${llvm_plugin_target} APPEND PROPERTY LINK_LIBRARIES ${llvm_extension}) - set_property(TARGET ${llvm_plugin_target} APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${llvm_extension}) - endforeach() + get_property(llvm_plugin_targets GLOBAL PROPERTY LLVM_PLUGIN_TARGETS) + foreach(llvm_plugin_target ${llvm_plugin_targets}) + set_property(TARGET ${llvm_plugin_target} APPEND PROPERTY LINK_LIBRARIES ${llvm_extension}) + set_property(TARGET ${llvm_plugin_target} APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${llvm_extension}) + endforeach() else() - add_llvm_library(${llvm_extension_lower} MODULE obj.${llvm_extension_lower}) + add_llvm_library(${llvm_extension_lower} MODULE $) endif() endforeach() diff --git a/llvm/test/Feature/load_extension.ll b/llvm/test/Feature/load_extension.ll index 49a593a1ade74..62b49bac6339a 100644 --- a/llvm/test/Feature/load_extension.ll +++ b/llvm/test/Feature/load_extension.ll @@ -1,6 +1,3 @@ -; This fails at least on macOS. -; XFAIL: darwin - ; RUN: opt %s %loadbye -goodbye -wave-goodbye -disable-output 2>&1 | FileCheck %s ; REQUIRES: plugins, examples ; CHECK: Bye From 2a2c859750a3dbd9f6fa9f0109e50e6662180345 Mon Sep 17 00:00:00 2001 From: serge-sans-paille Date: Tue, 7 Jan 2020 11:03:47 +0100 Subject: [PATCH 4/4] WIP --- llvm/cmake/modules/AddLLVM.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake index 68d6023218935..404e952020db7 100644 --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -881,6 +881,7 @@ endfunction(add_llvm_pass_plugin) # Also correctly set lib dependencies between plugins and tools. function(process_llvm_pass_plugins) get_property(LLVM_EXTENSIONS GLOBAL PROPERTY LLVM_COMPILE_EXTENSIONS) + message(STATUS ">>>> ${LLVM_EXTENSIONS}") file(WRITE "${CMAKE_BINARY_DIR}/include/llvm/Support/Extension.def.tmp" "//extension handlers\n") foreach(llvm_extension ${LLVM_EXTENSIONS}) string(TOLOWER ${llvm_extension} llvm_extension_lower) @@ -890,6 +891,7 @@ function(process_llvm_pass_plugins) string(SUBSTRING ${llvm_extension_lower} 1 -1 llvm_extension_lower_tail) string(CONCAT llvm_extension_project ${llvm_extension_upper_first} ${llvm_extension_lower_tail}) + message(STATUS ">>>> ${llvm_extension_upper}: ${LLVM_${llvm_extension_upper}_LINK_INTO_TOOLS}") if(LLVM_${llvm_extension_upper}_LINK_INTO_TOOLS) file(APPEND "${CMAKE_BINARY_DIR}/include/llvm/Support/Extension.def.tmp" "HANDLE_EXTENSION(${llvm_extension_project})\n")