aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDylan Baker <[email protected]>2018-04-24 13:48:25 -0700
committerDylan Baker <[email protected]>2019-10-18 13:02:58 -0700
commitb962c7c9713700ca02b698efb1dfdd28516ce580 (patch)
tree07f7fe9f97aca43ec0fca525fe21a1e7665a9740
parentdbd554ba05d6fd5d434b2bc08f656cd62677e77b (diff)
meson: Add support for wrapping llvm
For building on Windows (when not using cygwin), users may want to use a binary wrap of LLVM, this provides a fallback to the LLVM dependency which may be used in this case Reviewed-by: Adam Jackson <[email protected]>
-rw-r--r--meson.build15
-rw-r--r--src/gallium/drivers/swr/rasterizer/jitter/meson.build16
2 files changed, 25 insertions, 6 deletions
diff --git a/meson.build b/meson.build
index ac52833f417..2d8668e601b 100644
--- a/meson.build
+++ b/meson.build
@@ -1384,6 +1384,7 @@ if _llvm != 'false'
),
static : not _shared_llvm,
method : 'config-tool',
+ fallback : ['llvm', 'dep_llvm'],
)
with_llvm = dep_llvm.found()
endif
@@ -1394,7 +1395,19 @@ if with_llvm
# LLVM can be built without rtti, turning off rtti changes the ABI of C++
# programs, so we need to build all C++ code in mesa without rtti as well to
# ensure that linking works.
- if dep_llvm.get_configtool_variable('has-rtti') == 'NO'
+ #
+ # In meson 0.51.0 we can use cmake to find LLVM in addittion to meson's
+ # builtin llvm-config based finder. A new generic variable getter method
+ # has also been added, so we'll use that if we can, to cover the cmake case.
+ if dep_llvm.type_name() == 'internal'
+ _rtti = subproject('llvm').get_variable('has_rtti', true)
+ elif meson.version().version_compare('>=0.51')
+ # The CMake finder will return 'ON', the llvm-config will return 'YES'
+ _rtti = ['ON', 'YES'].contains(dep_llvm.get_variable(cmake : 'LLVM_ENABLE_RTTI', configtool: 'has-rtti'))
+ else
+ _rtti = dep_llvm.get_configtool_variable('has-rtti') == 'YES'
+ endif
+ if not _rtti
if with_gallium_nouveau
error('The Nouveau driver requires rtti. You either need to turn off nouveau or use an LLVM built with LLVM_ENABLE_RTTI.')
elif with_gallium_opencl
diff --git a/src/gallium/drivers/swr/rasterizer/jitter/meson.build b/src/gallium/drivers/swr/rasterizer/jitter/meson.build
index aced4a1b735..c52f285cd37 100644
--- a/src/gallium/drivers/swr/rasterizer/jitter/meson.build
+++ b/src/gallium/drivers/swr/rasterizer/jitter/meson.build
@@ -18,15 +18,21 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
+if dep_llvm.type_name() == 'internal'
+ _irbuilder_h = subproject('llvm').get_variable('irbuilder_h')
+else
+ if meson.version().version_compare('>=0.51')
+ _llvm_includedir = dep_llvm.get_variable(configtool : 'includedir', cmake : 'LLVM_INCLUDE_DIR')
+ else
+ _llvm_includedir = dep_llvm.get_configtool_variable('includedir')
+ endif
+ _irbuilder_h = join_paths(_llvm_includedir, 'llvm', 'IR', 'IRBuilder.h')
+endif
gen_builder_hpp = custom_target(
'gen_builder.hpp',
input : [
- swr_gen_llvm_ir_macros_py,
- join_paths(
- dep_llvm.get_configtool_variable('includedir'), 'llvm', 'IR',
- 'IRBuilder.h'
- )
+ swr_gen_llvm_ir_macros_py, _irbuilder_h,
],
output : 'gen_builder.hpp',
command : [