configure.ac/meson.build: Add options for library suffixes
authorBenjamin Gordon <bmgordon@chromium.org>
Wed, 13 Jun 2018 22:17:32 +0000 (16:17 -0600)
committerGurchetan Singh <gurchetansingh@chromium.org>
Thu, 21 Mar 2019 17:18:31 +0000 (10:18 -0700)
When building the Chrome OS Android container, we need to build copies
of mesa that don't conflict with the Android system-supplied libraries.
This adds options to create suffixed versions of EGL and GLES libraries:

libEGL.so -> libEGL${egl-lib-suffix}.so
libGLESv1_CM.so -> libGLESv1_CM${gles-lib-suffix}.so
libGLESv2.so -> libGLES${gles-lib-suffix}.so

This is similar to what happens when --enable-libglvnd is specified, but
without the side effects of linking against libglvnd.  To avoid
unexpected clashes with the suffixed appended by libglvnd, make it an
error to specify both --enable-libglvnd and --with-egl-lib-suffix.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
configure.ac
meson.build
meson_options.txt
src/egl/Makefile.am
src/egl/meson.build
src/mapi/Makefile.am
src/mapi/es1api/meson.build
src/mapi/es2api/meson.build

index d8124479c7646fa8fa0efb0942c92f5aaba705ec..073ffc508d5fbe6785184d7794748011533fb624 100644 (file)
@@ -1557,6 +1557,23 @@ AC_ARG_WITH([osmesa-lib-name],
 GL_LIB="$DEFAULT_GL_LIB_NAME"
 OSMESA_LIB=OSMesa
 
+AC_ARG_WITH([egl-lib-suffix],
+  [AS_HELP_STRING([--with-egl-lib-suffix@<:@=NAME@:>@],
+    [specify EGL library suffix @<:@default=none@:>@])],
+  [EGL_LIB_SUFFIX=$withval],
+  [EGL_LIB_SUFFIX=""])
+AC_ARG_WITH([gles-lib-suffix],
+  [AS_HELP_STRING([--with-gles-lib-suffix@<:@=NAME@:>@],
+    [specify GLES library suffix @<:@default=none@:>@])],
+  [GLES_LIB_SUFFIX=$withval],
+  [GLES_LIB_SUFFIX=""])
+AS_IF([test "x$EGL_LIB_SUFFIX" = xyes], [EGL_LIB_SUFFIX=""])
+AS_IF([test "x$GLES_LIB_SUFFIX" = xyes], [GLES_LIB_SUFFIX=""])
+
+if test "x$enable_libglvnd" = xyes -a "x$EGL_LIB_SUFFIX" != x; then
+    AC_MSG_ERROR([EGL lib suffix can't be used with libglvnd])
+fi
+
 dnl
 dnl Mangled Mesa support
 dnl
@@ -1575,6 +1592,8 @@ if test "x${enable_mangling}" = "xyes" ; then
   OSMESA_LIB="Mangled${OSMESA_LIB}"
 fi
 AC_SUBST([GL_LIB])
+AC_SUBST([EGL_LIB_SUFFIX])
+AC_SUBST([GLES_LIB_SUFFIX])
 AC_SUBST([OSMESA_LIB])
 
 dnl HACK when building glx + glvnd we ship gl.pc, despite that glvnd should do it
index 7a536982da69f4c60fb58f2f19158b2edabbfd65..7b337755544e267bef9b16043619c88ac3458edf 100644 (file)
@@ -375,6 +375,9 @@ if with_glvnd
   elif with_glx == 'disabled' and not with_egl
     error('glvnd requires DRI based GLX and/or EGL')
   endif
+  if get_option('egl-lib-suffix') != ''
+    error('''EGL lib suffix can't be used with libglvnd''')
+  endif
 endif
 
 if with_vulkan_icd_dir == ''
index 6c14fd503b9a0d0a4e427a0064a448a875bbae39..45faa341e79dd7d8b05baab771a3ab383ad32f0c 100644 (file)
@@ -336,3 +336,14 @@ option(
   value : false,
   description : 'Allow work-in-progress freedreno vulkan driver to be enabled',
 )
+option('egl-lib-suffix',
+  type : 'string',
+  value : '',
+  description : 'Suffix to append to EGL library name.  Default: none.'
+)
+option(
+  'gles-lib-suffix',
+  type : 'string',
+  value : '',
+  description : 'Suffix to append to GLES library names.  Default: none.'
+)
index 4383cca1e004c413536475a44aa829f7db4b36b0..349779feb4e05e499d4902612928cd093c7cc522 100644 (file)
@@ -190,12 +190,12 @@ libEGL_mesa_la_LDFLAGS = \
 
 else # USE_LIBGLVND
 
-lib_LTLIBRARIES = libEGL.la
-libEGL_la_SOURCES =
-libEGL_la_LIBADD = \
+lib_LTLIBRARIES = libEGL@EGL_LIB_SUFFIX@.la
+libEGL@EGL_LIB_SUFFIX@_la_SOURCES =
+libEGL@EGL_LIB_SUFFIX@_la_LIBADD = \
        libEGL_common.la \
        $(top_builddir)/src/mapi/shared-glapi/libglapi.la
-libEGL_la_LDFLAGS = \
+libEGL@EGL_LIB_SUFFIX@_la_LDFLAGS = \
        -no-undefined \
        -version-number 1:0 \
        $(BSYMBOLIC) \
index abc3695d6d40c60ebc6984563f2b5d0ddc3411eb..38ffb512f1ce09f6e31d03282fac08d7c68a3abf 100644 (file)
@@ -143,7 +143,7 @@ if cc.has_function('mincore')
 endif
 
 if not with_glvnd
-  egl_lib_name = 'EGL'
+  egl_lib_name = 'EGL' + get_option('egl-lib-suffix')
   egl_lib_version = '1.0.0'
 else
   egl_lib_name = 'EGL_mesa'
index 69978e7a468b4fca40c21afcb4300acfaf51040b..23735ded1a5f85309d98ebc035d3d29b7533ebb4 100644 (file)
@@ -191,24 +191,24 @@ GLES_include_HEADERS = \
        $(top_srcdir)/include/GLES/glext.h \
        $(top_srcdir)/include/GLES/glplatform.h
 
-lib_LTLIBRARIES += es1api/libGLESv1_CM.la
+lib_LTLIBRARIES += es1api/libGLESv1_CM@GLES_LIB_SUFFIX@.la
 
-es1api_libGLESv1_CM_la_SOURCES = entry.c es1api/glapi_mapi_tmp.h
-es1api_libGLESv1_CM_la_CFLAGS = \
+es1api_libGLESv1_CM@GLES_LIB_SUFFIX@_la_SOURCES = entry.c es1api/glapi_mapi_tmp.h
+es1api_libGLESv1_CM@GLES_LIB_SUFFIX@_la_CFLAGS = \
        $(AM_CFLAGS) \
        $(VISIBILITY_CFLAGS)
-es1api_libGLESv1_CM_la_CPPFLAGS = \
+es1api_libGLESv1_CM@GLES_LIB_SUFFIX@_la_CPPFLAGS = \
        $(AM_CPPFLAGS) \
        -DMAPI_MODE_BRIDGE \
        -DMAPI_ABI_HEADER=\"es1api/glapi_mapi_tmp.h\"
-es1api_libGLESv1_CM_la_LIBADD = $(GLESv1_CM_LIB_DEPS)
-es1api_libGLESv1_CM_la_LDFLAGS = \
+es1api_libGLESv1_CM@GLES_LIB_SUFFIX@_la_LIBADD = $(GLESv1_CM_LIB_DEPS)
+es1api_libGLESv1_CM@GLES_LIB_SUFFIX@_la_LDFLAGS = \
        -no-undefined \
        -version-number 1:1 \
        $(GC_SECTIONS) \
        $(LD_NO_UNDEFINED)
 
-es1api_libGLESv1_CM_la_LIBADD += shared-glapi/libglapi.la
+es1api_libGLESv1_CM@GLES_LIB_SUFFIX@_la_LIBADD += shared-glapi/libglapi.la
 endif # HAVE_OPENGL_ES1
 endif # USE_LIBGLVND
 
@@ -238,24 +238,24 @@ GLES3_include_HEADERS = \
        $(top_srcdir)/include/GLES3/gl3ext.h \
        $(top_srcdir)/include/GLES3/gl3platform.h
 
-lib_LTLIBRARIES += es2api/libGLESv2.la
+lib_LTLIBRARIES += es2api/libGLESv2@GLES_LIB_SUFFIX@.la
 
-es2api_libGLESv2_la_SOURCES = entry.c es2api/glapi_mapi_tmp.h
-es2api_libGLESv2_la_CFLAGS = \
+es2api_libGLESv2@GLES_LIB_SUFFIX@_la_SOURCES = entry.c es2api/glapi_mapi_tmp.h
+es2api_libGLESv2@GLES_LIB_SUFFIX@_la_CFLAGS = \
        $(AM_CFLAGS) \
        $(VISIBILITY_CFLAGS)
-es2api_libGLESv2_la_CPPFLAGS = \
+es2api_libGLESv2@GLES_LIB_SUFFIX@_la_CPPFLAGS = \
        $(AM_CPPFLAGS) \
        -DMAPI_MODE_BRIDGE \
        -DMAPI_ABI_HEADER=\"es2api/glapi_mapi_tmp.h\"
-es2api_libGLESv2_la_LIBADD = $(GLESv2_LIB_DEPS)
-es2api_libGLESv2_la_LDFLAGS = \
+es2api_libGLESv2@GLES_LIB_SUFFIX@_la_LIBADD = $(GLESv2_LIB_DEPS)
+es2api_libGLESv2@GLES_LIB_SUFFIX@_la_LDFLAGS = \
        -no-undefined \
        -version-number 2 \
        $(GC_SECTIONS) \
        $(LD_NO_UNDEFINED)
 
-es2api_libGLESv2_la_LIBADD += shared-glapi/libglapi.la
+es2api_libGLESv2@GLES_LIB_SUFFIX@_la_LIBADD += shared-glapi/libglapi.la
 endif # HAVE_OPENGL_ES2
 endif # USE_LIBGLVND
 
index 016090dac91c8f67e51f72125fadacabb842cea6..47f0f8bd0b973f1fbaacfe87d5dc2f58ef80cb40 100644 (file)
@@ -28,7 +28,7 @@ es1_glapi_mapi_tmp_h = custom_target(
 )
 
 libglesv1_cm = shared_library(
-  'GLESv1_CM',
+  'GLESv1_CM' + get_option('gles-lib-suffix'),
   ['../entry.c', es1_glapi_mapi_tmp_h],
   c_args : [
     c_msvc_compat_args, c_vis_args, '-DMAPI_MODE_BRIDGE',
index c6e9261bcc8e64bcb25dcf4f2969ea967f684dd0..5b2c52b024dec16dfc54f4c79dc4cb74b75035a2 100644 (file)
@@ -28,7 +28,7 @@ es2_glapi_mapi_tmp_h = custom_target(
 )
 
 libgles2 = shared_library(
-  'GLESv2',
+  'GLESv2' + get_option('gles-lib-suffix'),
   ['../entry.c', es2_glapi_mapi_tmp_h],
   c_args : [
     c_msvc_compat_args, c_vis_args, '-DMAPI_MODE_BRIDGE',