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
amdgpu_llvm_target_name='amdgpu'
fi
- llvm_require_version $*
+ llvm_check_version_for $*
llvm_add_target $amdgpu_llvm_target_name $2
llvm_set_environment_variables
+AC_SUBST([MESA_LLVM])
AC_SUBST([LLVM_BINDIR])
AC_SUBST([LLVM_CFLAGS])
AC_SUBST([LLVM_CPPFLAGS])
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"
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
}
;;
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" \
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.
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])
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.])
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
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"
#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"
/* 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);
}
}
-#if HAVE_GALLIUM_LLVM
+#if HAVE_LLVM
struct draw_context *
draw_create_with_llvm_context(struct pipe_context *pipe,
void *context)
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
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
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,
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: