summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac69
-rw-r--r--src/gallium/auxiliary/draw/draw_context.c14
-rw-r--r--src/gallium/auxiliary/draw/draw_context.h2
-rw-r--r--src/gallium/auxiliary/draw/draw_pt.c4
-rw-r--r--src/gallium/auxiliary/draw/draw_vs.c2
-rw-r--r--src/gallium/auxiliary/draw/draw_vs.h2
6 files changed, 39 insertions, 54 deletions
diff --git a/configure.ac b/configure.ac
index 182d0726c30..beacd11d0c3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1003,19 +1003,16 @@ llvm_set_environment_variables() {
LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}${LLVM_VERSION_MINOR}"
fi
- FOUND_LLVM=yes
- USE_LLVM=no
+ DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DMESA_LLVM_VERSION_PATCH=$LLVM_VERSION_PATCH"
+ MESA_LLVM=1
else
- FOUND_LLVM=no
- USE_LLVM=no
+ MESA_LLVM=0
LLVM_VERSION_INT=0
fi
}
-llvm_require_version() {
- USE_LLVM=yes
-
- if test "x$FOUND_LLVM" = xno; then
+llvm_check_version_for() {
+ if test "x$MESA_LLVM" = x0; then
AC_MSG_ERROR([LLVM $1 or newer is required for $2])
return
fi
@@ -1059,7 +1056,7 @@ radeon_llvm_check() {
amdgpu_llvm_target_name='amdgpu'
fi
- llvm_require_version $*
+ llvm_check_version_for $*
llvm_add_target $amdgpu_llvm_target_name $2
@@ -1075,6 +1072,7 @@ radeon_llvm_check() {
llvm_set_environment_variables
+AC_SUBST([MESA_LLVM])
AC_SUBST([LLVM_BINDIR])
AC_SUBST([LLVM_CFLAGS])
AC_SUBST([LLVM_CPPFLAGS])
@@ -2189,7 +2187,7 @@ if test "x$enable_opencl" = xyes; then
AC_MSG_ERROR([Clover requires libelf])
fi
- llvm_require_version $LLVM_REQUIRED_OPENCL "opencl"
+ llvm_check_version_for $LLVM_REQUIRED_OPENCL "opencl"
llvm_add_default_components "opencl"
llvm_add_component "all-targets" "opencl"
@@ -2393,7 +2391,9 @@ dnl
dnl Gallium helper functions
dnl
gallium_require_llvm() {
- if test "x$enable_gallium_llvm" != "xyes"; then
+ if test "x$enable_gallium_llvm" = "xyes"; then
+ llvm_check_version_for $LLVM_REQUIRED_GALLIUM "gallium"
+ else
AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
fi
}
@@ -2525,12 +2525,12 @@ if test -n "$with_gallium_drivers"; then
;;
xswrast)
HAVE_GALLIUM_SOFTPIPE=yes
- if test "x$FOUND_LLVM" = xyes -a "x$enable_gallium_llvm" = xyes; then
+ if test "x$MESA_LLVM" = x1 && test "x$enable_gallium_llvm" == "xyes"; then
HAVE_GALLIUM_LLVMPIPE=yes
fi
;;
xswr)
- llvm_require_version $LLVM_REQUIRED_SWR "swr"
+ llvm_check_version_for $LLVM_REQUIRED_SWR "swr"
gallium_require_llvm "swr"
swr_require_cxx_feature_flags "C++11" "__cplusplus >= 201103L" \
@@ -2573,11 +2573,8 @@ if test -n "$with_gallium_drivers"; then
fi
if test "x$enable_gallium_llvm" == "xyes"; then
- llvm_require_version $LLVM_REQUIRED_GALLIUM "gallium"
+ llvm_check_version_for $LLVM_REQUIRED_GALLIUM "gallium"
llvm_add_default_components "gallium"
-
- HAVE_GALLIUM_LLVM=yes
- DEFINES="${DEFINES} -DHAVE_GALLIUM_LLVM"
fi
dnl We need to validate some needed dependencies for renderonly drivers.
@@ -2586,17 +2583,14 @@ if test "x$HAVE_GALLIUM_ETNAVIV" != xyes -a "x$HAVE_GALLIUM_IMX" == xyes ; then
AC_ERROR([Building with imx requires etnaviv])
fi
-dnl Set HAVE_LLVM compiler define if LLVM is used.
-
-if test "x$USE_LLVM" == xyes; then
- DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DMESA_LLVM_VERSION_PATCH=$LLVM_VERSION_PATCH"
+dnl Set LLVM_LIBS - This is done after the driver configuration so
+dnl that drivers can add additional components to LLVM_COMPONENTS.
+dnl Previously, gallium drivers were updating LLVM_LIBS directly
+dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
+dnl this was causing the same libraries to be appear multiple times
+dnl in LLVM_LIBS.
- dnl Set LLVM_LIBS - This is done after the driver configuration so
- dnl that drivers can add additional components to LLVM_COMPONENTS.
- dnl Previously, gallium drivers were updating LLVM_LIBS directly
- dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
- dnl this was causing the same libraries to be appear multiple times
- dnl in LLVM_LIBS.
+if test "x$MESA_LLVM" != x0; then
if ! $LLVM_CONFIG --libs ${LLVM_COMPONENTS} >/dev/null; then
AC_MSG_ERROR([Calling ${LLVM_CONFIG} failed])
@@ -2698,7 +2692,8 @@ AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$HAVE_GALLIUM_R300" = xyes -o \
AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$enable_glx" = xgallium-xlib)
AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes)
AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
-AM_CONDITIONAL(HAVE_GALLIUM_LLVM, test "x$HAVE_GALLIUM_LLVM" = xyes)
+AM_CONDITIONAL(HAVE_GALLIUM_LLVM, test "x$MESA_LLVM" = x1 -a \
+ "x$enable_gallium_llvm" = xyes)
AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes)
if test "x$USE_VC4_SIMULATOR" = xyes -a "x$HAVE_GALLIUM_ILO" = xyes; then
AC_MSG_ERROR([VC4 simulator on x86 replaces i965 driver build, so ilo must be disabled.])
@@ -2983,28 +2978,18 @@ else
fi
echo ""
-if test "x$FOUND_LLVM" = xyes; then
- echo " llvm found: yes"
+if test "x$MESA_LLVM" = x1; then
+ echo " llvm: yes"
echo " llvm-config: $LLVM_CONFIG"
echo " llvm-version: $LLVM_VERSION"
else
- echo " llvm found: no"
-fi
-if test "x$USE_LLVM" = xyes; then
- echo " llvm used: yes"
-else
- echo " llvm used: no"
+ echo " llvm: no"
fi
echo ""
if test -n "$with_gallium_drivers"; then
echo " Gallium drivers: $gallium_drivers"
echo " Gallium st: $gallium_st"
- if test "x$HAVE_GALLIUM_LLVM" = xyes; then
- echo " Gallium llvm: yes"
- else
- echo " Gallium llvm: no"
- fi
else
echo " Gallium: no"
fi
@@ -3047,7 +3032,7 @@ echo " CFLAGS: $cflags"
echo " CXXFLAGS: $cxxflags"
echo " Macros: $defines"
echo ""
-if test "x$FOUND_LLVM" = xyes; then
+if test "x$MESA_LLVM" = x1; then
echo " LLVM_CFLAGS: $LLVM_CFLAGS"
echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS"
echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"
diff --git a/src/gallium/auxiliary/draw/draw_context.c b/src/gallium/auxiliary/draw/draw_context.c
index f0dae1b1fec..56abcff5a24 100644
--- a/src/gallium/auxiliary/draw/draw_context.c
+++ b/src/gallium/auxiliary/draw/draw_context.c
@@ -45,7 +45,7 @@
#include "draw_vs.h"
#include "draw_gs.h"
-#if HAVE_GALLIUM_LLVM
+#if HAVE_LLVM
#include "gallivm/lp_bld_init.h"
#include "gallivm/lp_bld_limits.h"
#include "draw_llvm.h"
@@ -78,7 +78,7 @@ draw_create_context(struct pipe_context *pipe, void *context,
/* we need correct cpu caps for disabling denorms in draw_vbo() */
util_cpu_detect();
-#if HAVE_GALLIUM_LLVM
+#if HAVE_LLVM
if (try_llvm && draw_get_option_use_llvm()) {
draw->llvm = draw_llvm_create(draw, (LLVMContextRef)context);
}
@@ -112,7 +112,7 @@ draw_create(struct pipe_context *pipe)
}
-#if HAVE_GALLIUM_LLVM
+#if HAVE_LLVM
struct draw_context *
draw_create_with_llvm_context(struct pipe_context *pipe,
void *context)
@@ -221,7 +221,7 @@ void draw_destroy( struct draw_context *draw )
draw_pt_destroy( draw );
draw_vs_destroy( draw );
draw_gs_destroy( draw );
-#ifdef HAVE_GALLIUM_LLVM
+#ifdef HAVE_LLVM
if (draw->llvm)
draw_llvm_destroy( draw->llvm );
#endif
@@ -1003,7 +1003,7 @@ draw_set_samplers(struct draw_context *draw,
draw->num_samplers[shader_stage] = num;
-#ifdef HAVE_GALLIUM_LLVM
+#ifdef HAVE_LLVM
if (draw->llvm)
draw_llvm_set_sampler_state(draw, shader_stage);
#endif
@@ -1020,7 +1020,7 @@ draw_set_mapped_texture(struct draw_context *draw,
uint32_t img_stride[PIPE_MAX_TEXTURE_LEVELS],
uint32_t mip_offsets[PIPE_MAX_TEXTURE_LEVELS])
{
-#ifdef HAVE_GALLIUM_LLVM
+#ifdef HAVE_LLVM
if (draw->llvm)
draw_llvm_set_mapped_texture(draw,
shader_stage,
@@ -1057,7 +1057,7 @@ int
draw_get_shader_param(unsigned shader, enum pipe_shader_cap param)
{
-#ifdef HAVE_GALLIUM_LLVM
+#ifdef HAVE_LLVM
if (draw_get_option_use_llvm()) {
switch(shader) {
case PIPE_SHADER_VERTEX:
diff --git a/src/gallium/auxiliary/draw/draw_context.h b/src/gallium/auxiliary/draw/draw_context.h
index 782dec2dde3..145fc2ed467 100644
--- a/src/gallium/auxiliary/draw/draw_context.h
+++ b/src/gallium/auxiliary/draw/draw_context.h
@@ -65,7 +65,7 @@ struct draw_so_target {
struct draw_context *draw_create( struct pipe_context *pipe );
-#if HAVE_GALLIUM_LLVM
+#if HAVE_LLVM
struct draw_context *draw_create_with_llvm_context(struct pipe_context *pipe,
void *context);
#endif
diff --git a/src/gallium/auxiliary/draw/draw_pt.c b/src/gallium/auxiliary/draw/draw_pt.c
index 1be983f56a3..5a49acb64d3 100644
--- a/src/gallium/auxiliary/draw/draw_pt.c
+++ b/src/gallium/auxiliary/draw/draw_pt.c
@@ -191,7 +191,7 @@ boolean draw_pt_init( struct draw_context *draw )
if (!draw->pt.middle.general)
return FALSE;
-#if HAVE_GALLIUM_LLVM
+#if HAVE_LLVM
if (draw->llvm)
draw->pt.middle.llvm = draw_pt_fetch_pipeline_or_emit_llvm( draw );
#endif
@@ -519,7 +519,7 @@ draw_vbo(struct draw_context *draw,
draw->pt.vertex_element,
draw->pt.nr_vertex_elements,
info);
-#if HAVE_GALLIUM_LLVM
+#if HAVE_LLVM
if (!draw->llvm)
#endif
{
diff --git a/src/gallium/auxiliary/draw/draw_vs.c b/src/gallium/auxiliary/draw/draw_vs.c
index e9966cf725e..415c4fa949a 100644
--- a/src/gallium/auxiliary/draw/draw_vs.c
+++ b/src/gallium/auxiliary/draw/draw_vs.c
@@ -59,7 +59,7 @@ draw_create_vertex_shader(struct draw_context *draw,
tgsi_dump(shader->tokens, 0);
}
-#if HAVE_GALLIUM_LLVM
+#if HAVE_LLVM
if (draw->pt.middle.llvm) {
vs = draw_create_vs_llvm(draw, shader);
}
diff --git a/src/gallium/auxiliary/draw/draw_vs.h b/src/gallium/auxiliary/draw/draw_vs.h
index 7b9fd4fac7b..6a900224c11 100644
--- a/src/gallium/auxiliary/draw/draw_vs.h
+++ b/src/gallium/auxiliary/draw/draw_vs.h
@@ -163,7 +163,7 @@ draw_create_vs_exec(struct draw_context *draw,
struct draw_vs_variant_key;
struct draw_vertex_shader;
-#if HAVE_GALLIUM_LLVM
+#if HAVE_LLVM
struct draw_vertex_shader *
draw_create_vs_llvm(struct draw_context *draw,
const struct pipe_shader_state *state);