configure.ac: Revert recent HAVE_LLVM changes.
authorJose Fonseca <jfonseca@vmware.com>
Wed, 18 Jan 2017 14:42:47 +0000 (14:42 +0000)
committerJose Fonseca <jfonseca@vmware.com>
Wed, 18 Jan 2017 14:46:54 +0000 (14:46 +0000)
This reverts changes 903eb09b5fb78d47d0f8a4bdf826a113ca2aff40..1a0aa468f354f0ee94dd383cd40ae915584624aa:

  Tobias Droste (5):
    configure.ac: Rename MESA_LLVM to FOUND_LLVM
    configure.ac: Only set LLVM_LIBS if LLVM is used
    configure.ac: Only define HAVE_LLVM if LLVM is used
    configure.ac: Set and use HAVE_GALLIUM_LLVM define
    configure.ac: Don't check LLVM version in gallium_require_llvm

They break scons build, and I'm not convinced this is the right fix.  In
particular changing HAVE_LLVM in the C code is something I'd rather
avoid no matter what.  So it's better to discuss without the pressure of
broken builds.

configure.ac
src/gallium/auxiliary/draw/draw_context.c
src/gallium/auxiliary/draw/draw_context.h
src/gallium/auxiliary/draw/draw_pt.c
src/gallium/auxiliary/draw/draw_vs.c
src/gallium/auxiliary/draw/draw_vs.h

index 182d0726c303bf8525735e424b87bc4f7db7b55d..beacd11d0c3f96e61beb109cb65707e949f12a5d 100644 (file)
@@ -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"
index f0dae1b1fecb05f02bfcfe19238918c8ad90bee4..56abcff5a248addaa4f25603ce0df64c1231952d 100644 (file)
@@ -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:
index 782dec2dde33a41a59a304735d0ce0afd6dbe8c4..145fc2ed467bba4de79d98a367972d90e879221b 100644 (file)
@@ -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
index 1be983f56a3e2871585c3bf99bfdfa7edb1e44c0..5a49acb64d3f69e23e6aea2b9d94fd3663686b79 100644 (file)
@@ -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
    {
index e9966cf725ebbf1d42cc40f28fb82967c369e100..415c4fa949aacb6d9080ce2782e952994d7bea36 100644 (file)
@@ -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);
    }
index 7b9fd4fac7b4ad6c0f57c411dc43b39ec0881eef..6a900224c110d006ba927b780cdf1df0fe318f5d 100644 (file)
@@ -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);