This lets us link EGL apps with libGL without pulling in X dependencies. --- configs/autoconf.in | 2 + configure.ac | 99 +++++++++++++++++++------------ src/gallium/state_trackers/egl/Makefile | 1 + src/glx/x11/Makefile | 16 +++-- 4 files changed, 72 insertions(+), 46 deletions(-)
diff --git a/configs/autoconf.in b/configs/autoconf.in index 3063787..5eb7770 100644 --- a/configs/autoconf.in +++ b/configs/autoconf.in @@ -41,6 +41,8 @@ INSTALL = @INSTALL@ PYTHON2 = python PYTHON_FLAGS = -t -O -O +WITH_GLX = @WITH_GLX@ + # Library names (base name) GL_LIB = GL GLU_LIB = GLU diff --git a/configure.ac b/configure.ac index b6c6535..8c17312 100644 --- a/configure.ac +++ b/configure.ac @@ -85,6 +85,7 @@ AC_SUBST([X11_INCLUDES]) dnl Compiler macros DEFINES="" AC_SUBST([DEFINES]) +AC_SUBST([GLX_DEFINES]) case "$host_os" in linux*|*-gnu*|gnu*) DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS" @@ -486,12 +487,7 @@ dnl If $with_demos is yes, directories will be added as libs available PROGRAM_DIRS="" case "$with_demos" in no) ;; -yes) - # If the driver isn't osmesa, we have libGL and can build xdemos - if test "$mesa_driver" != osmesa; then - PROGRAM_DIRS="xdemos" - fi - ;; +yes) ;; *) # verify the requested demos directories exist demos=`IFS=,; echo $with_demos` @@ -592,33 +588,34 @@ dri) DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED" # find the DRI deps for libGL - if test "$x11_pkgconfig" = yes; then - # add xcb modules if necessary - dri_modules="x11 xext xxf86vm xdamage xfixes" - if test "$enable_xcb" = yes; then - dri_modules="$dri_modules x11-xcb xcb-glx" - fi - - PKG_CHECK_MODULES([DRIGL], [$dri_modules]) - GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules" - X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS" - GL_LIB_DEPS="$DRIGL_LIBS" - else - # should check these... - X11_INCLUDES="$X11_INCLUDES $X_CFLAGS" - GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes" - GL_PC_LIB_PRIV="$GL_LIB_DEPS" - GL_PC_CFLAGS="$X11_INCLUDES" + if test "$enable_glx" = yes; then + if test "$x11_pkgconfig" = yes; then + # add xcb modules if necessary + dri_modules="x11 xext xxf86vm xdamage xfixes" + if test "$enable_xcb" = yes; then + dri_modules="$dri_modules x11-xcb xcb-glx" + fi - # XCB can only be used from pkg-config - if test "$enable_xcb" = yes; then - PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx]) - GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx" - X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS" - GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS" + PKG_CHECK_MODULES([DRIGL], [$dri_modules]) + GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules" + X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS" + GL_LIB_DEPS="$DRIGL_LIBS" + else + # should check these... + X11_INCLUDES="$X11_INCLUDES $X_CFLAGS" + GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes" + GL_PC_LIB_PRIV="$GL_LIB_DEPS" + GL_PC_CFLAGS="$X11_INCLUDES" + + # XCB can only be used from pkg-config + if test "$enable_xcb" = yes; then + PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx]) + GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx" + X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS" + GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS" + fi fi - fi - + fi # need DRM libs, -lpthread, etc. GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS" GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS" @@ -710,10 +707,11 @@ if test "$mesa_driver" = dri; then case "$host_os" in linux*) DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER" + GLX_DEFINES="-DGLX_INDIRECT_RENDERING" if test "x$driglx_direct" = xyes; then - DEFINES="$DEFINES -DGLX_DIRECT_RENDERING" + GLX_DEFINES="$GLX_DEFINES -DGLX_DIRECT_RENDERING" fi - DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS" + DEFINES="$DEFINES -DHAVE_ALIAS" case "$host_cpu" in x86_64) @@ -744,9 +742,9 @@ if test "$mesa_driver" = dri; then freebsd* | dragonfly*) DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1" DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS" - DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING" + GLX_DEFINES="-DGLX_INDIRECT_RENDERING" if test "x$driglx_direct" = xyes; then - DEFINES="$DEFINES -DGLX_DIRECT_RENDERING" + GLX_DEFINES="$GLX_DEFINES -DGLX_DIRECT_RENDERING" fi if test "x$GXX" = xyes; then CXXFLAGS="$CXXFLAGS -ansi -pedantic" @@ -761,13 +759,14 @@ if test "$mesa_driver" = dri; then ;; gnu*) DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER" - DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS" + DEFINES="$DEFINES -DHAVE_ALIAS" + GLX_DEFINES="-DGLX_INDIRECT_RENDERING" ;; solaris*) DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER" - DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING" + GLX_DEFINES="-DGLX_INDIRECT_RENDERING" if test "x$driglx_direct" = xyes; then - DEFINES="$DEFINES -DGLX_DIRECT_RENDERING" + GLX_DEFINES="$GLX_DEFINES -DGLX_DIRECT_RENDERING" fi ;; esac @@ -923,12 +922,33 @@ if test "x$enable_egl" = xyes; then if test "$have_xcb_dri2" = yes; then EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS dri2" fi + + if test "x$with_demos" == xyes; then + PROGRAM_DIRS="$PROGRAM_DIRS egl" + fi fi fi AC_SUBST([EGL_LIB_DEPS]) AC_SUBST([EGL_DRIVERS_DIRS]) dnl +dnl GLX configuration +dnl +AC_ARG_ENABLE([glx], + [AS_HELP_STRING([--disable-glx], + [disable GLX entrypoints in libGL @<:@default=enabled@:>@])], + [enable_glx="$enableval"], + [enable_glx=yes]) +if test "x$enable_glx" = xyes; then + DEFINES="$DEFINES $GLX_DEFINES" + if test "x$with_demos" == xyes; then + PROGRAM_DIRS="xdemos $PROGRAM_DIRS" + fi +fi +WITH_GLX=$enable_glx +AC_SUBST([WITH_GLX]) + +dnl dnl GLU configuration dnl AC_ARG_ENABLE([glu], @@ -1078,7 +1098,7 @@ if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then enable_glut=no fi -if test "x$enable_glut" = xyes; then +if test "x$enable_glut" = xyes -a "x$enable_glx" = yes; then SRC_DIRS="$SRC_DIRS glut/glx" GLUT_CFLAGS="" if test "x$GCC" = xyes; then @@ -1404,6 +1424,7 @@ dnl Libraries echo "" echo " Shared libs: $enable_shared" echo " Static libs: $enable_static" +echo " GLX: $enable_glx" if test "$enable_egl" = yes; then echo " EGL: $EGL_DRIVERS_DIRS" else diff --git a/src/gallium/state_trackers/egl/Makefile b/src/gallium/state_trackers/egl/Makefile index 2863320..3841e8d 100644 --- a/src/gallium/state_trackers/egl/Makefile +++ b/src/gallium/state_trackers/egl/Makefile @@ -13,6 +13,7 @@ common_OBJECTS = $(common_SOURCES:.c=.o) x11_INCLUDES = \ + -DGLX_DIRECT_RENDERING \ -I$(TOP)/src/gallium/drivers \ -I$(TOP)/src/glx/x11 \ -I$(TOP)/src/mesa \ diff --git a/src/glx/x11/Makefile b/src/glx/x11/Makefile index e681be8..e3fa6f0 100644 --- a/src/glx/x11/Makefile +++ b/src/glx/x11/Makefile @@ -1,5 +1,6 @@ TOP = ../../.. include $(TOP)/configs/current +include $(TOP)/src/mesa/sources.mak EXTRA_DEFINES = -DXF86VIDMODE -D_REENTRANT \ -DDEFAULT_DRIVER_DIR=\"$(DRI_DRIVER_SEARCH_DIR)\" @@ -39,9 +40,13 @@ SOURCES = \ dri2_glx.c \ dri2.c -GLAPI_LIB = $(TOP)/src/mesa/libglapi.a +LIBGL_GLAPI_OBJECTS = $(addprefix $(TOP)/src/mesa/,$(GLAPI_OBJECTS)) -OBJECTS = $(SOURCES:.c=.o) +ifeq ($(WITH_GLX), yes) +OBJECTS = $(SOURCES:.c=.o) $(LIBGL_GLAPI_OBJECTS) +else +OBJECTS = $(LIBGL_GLAPI_OBJECTS) +endif INCLUDES = -I. \ -I$(TOP)/include \ @@ -66,14 +71,11 @@ INCLUDES = -I. \ default: depend $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME) # Make libGL -$(TOP)/$(LIB_DIR)/$(GL_LIB_NAME): $(OBJECTS) $(GLAPI_LIB) Makefile +$(TOP)/$(LIB_DIR)/$(GL_LIB_NAME): $(OBJECTS) Makefile $(MKLIB) -o $(GL_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \ -major 1 -minor 2 $(MKLIB_OPTIONS) \ -install $(TOP)/$(LIB_DIR) -id $(INSTALL_LIB_DIR)/lib$(GL_LIB).1.dylib \ - $(GL_LIB_DEPS) $(OBJECTS) $(GLAPI_LIB) - -$(GLAPI_LIB): - @$(MAKE) -C $(TOP)/src/mesa libglapi.a + $(GL_LIB_DEPS) $(OBJECTS) depend: $(SOURCES) Makefile rm -f depend -- 1.6.5.rc2 ------------------------------------------------------------------------------ The Planet: dedicated and managed hosting, cloud storage, colocation Stay online with enterprise data centers and the best network in the business Choose flexible plans and management services without long-term contracts Personal 24x7 support from experience hosting pros just a phone call away. http://p.sf.net/sfu/theplanet-com _______________________________________________ Mesa3d-dev mailing list Mesa3d-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mesa3d-dev