From 34041968f883253de639f137a761340e84f82bb9 Mon Sep 17 00:00:00 2001 From: Jose Fonseca Date: Wed, 18 Jan 2017 14:42:47 +0000 Subject: [PATCH] configure.ac: Revert recent HAVE_LLVM changes. 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 | 69 +++++++++-------------- src/gallium/auxiliary/draw/draw_context.c | 14 ++--- src/gallium/auxiliary/draw/draw_context.h | 2 +- src/gallium/auxiliary/draw/draw_pt.c | 4 +- src/gallium/auxiliary/draw/draw_vs.c | 2 +- src/gallium/auxiliary/draw/draw_vs.h | 2 +- 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); -- 2.30.2