On Fri, Mar 16, 2012 at 4:29 PM, Kristian Høgsberg <k...@bitplanet.net> wrote: > This fixes a build problem where EGL links to libgbm.la, which encodes > a relative path to it's libglapi.so dependency. The relative path > breaks when the linker tries to resolve it from src/egl/main instead > of src/gbm. Typically we silently fall back to the system > libglapi.so, which is wrong and break when there isn't one. > > Morale of the story: don't mix mklib and libtool. > --- > configure.ac | 2 + > src/egl/main/Makefile.am | 1 - > src/gbm/Makefile.am | 4 +- > src/glx/Makefile.am | 2 +- > src/mapi/Android.mk | 4 +- > src/mapi/es1api/Makefile | 4 +- > src/mapi/glapi/Makefile | 8 ++-- > src/mapi/mapi/sources.mak | 42 ++++++++++++------------ > src/mapi/shared-glapi/Makefile | 65 > ------------------------------------- > src/mapi/shared-glapi/Makefile.am | 23 +++++++++++++ > src/mapi/vgapi/Makefile | 4 +- > 11 files changed, 59 insertions(+), 100 deletions(-) > delete mode 100644 src/mapi/shared-glapi/Makefile > create mode 100644 src/mapi/shared-glapi/Makefile.am > > diff --git a/configure.ac b/configure.ac > index c0d81c9..519662b 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -702,6 +702,7 @@ if test "x$enable_shared_glapi" = xyes; then > # libGL will use libglapi for function lookups (IN_DRI_DRIVER means to use > # the remap table) > DEFINES="$DEFINES -DIN_DRI_DRIVER" > + SRC_DIRS="$SRC_DIRS mapi/shared-glapi" > fi > AC_SUBST([SHARED_GLAPI]) > AM_CONDITIONAL(HAVE_SHARED_GLAPI, test $SHARED_GLAPI = 1) > @@ -1985,6 +1986,7 @@ AC_CONFIG_FILES([configs/autoconf > src/egl/wayland/wayland-egl/wayland-egl.pc > src/egl/wayland/wayland-drm/Makefile > src/glx/Makefile > + src/mapi/shared-glapi/Makefile > src/mesa/drivers/dri/dri.pc > src/mesa/drivers/dri/Makefile > src/mesa/drivers/dri/common/Makefile > diff --git a/src/egl/main/Makefile.am b/src/egl/main/Makefile.am > index a8072c1..9c3935b 100644 > --- a/src/egl/main/Makefile.am > +++ b/src/egl/main/Makefile.am > @@ -93,7 +93,6 @@ endif > if HAVE_EGL_PLATFORM_DRM > AM_CFLAGS += -DHAVE_DRM_PLATFORM > libEGL_la_LIBADD += ../../gbm/libgbm.la > -libEGL_la_LIBADD += ../../gbm/libgbm.la > endif > > if HAVE_EGL_PLATFORM_FBDEV > diff --git a/src/gbm/Makefile.am b/src/gbm/Makefile.am > index 1dbc9d1..dede5bc 100644 > --- a/src/gbm/Makefile.am > +++ b/src/gbm/Makefile.am > @@ -31,8 +31,8 @@ libgbm_dri_la_CFLAGS = \ > -DDEFAULT_DRIVER_DIR='"$(DRI_DRIVER_SEARCH_DIR)"' \ > $(LIBDRM_CFLAGS) > > -libgbm_la_LDFLAGS += -L$(top_builddir)/$(LIB_DIR) > -libgbm_la_LIBADD += libgbm_dri.la -lglapi > +libgbm_la_LIBADD += \ > + libgbm_dri.la $(top_builddir)/src/mapi/shared-glapi/libglapi.la > endif > > all-local: libgbm.la > diff --git a/src/glx/Makefile.am b/src/glx/Makefile.am > index 79dc405..a11bd3f 100644 > --- a/src/glx/Makefile.am > +++ b/src/glx/Makefile.am > @@ -21,7 +21,7 @@ > > if HAVE_SHARED_GLAPI > SHARED_GLAPI_CFLAGS = -DGLX_SHARED_GLAPI > -SHARED_GLAPI_LIBS = -L$(top_builddir)/$(LIB_DIR) -lglapi > +SHARED_GLAPI_LIBS = $(top_builddir)/src/mapi/shared-glapi/libglapi.la > endif > > GLAPI_LIB = ../mapi/glapi/libglapi.a > diff --git a/src/mapi/Android.mk b/src/mapi/Android.mk > index fe9e40e..b75361f 100644 > --- a/src/mapi/Android.mk > +++ b/src/mapi/Android.mk > @@ -25,7 +25,7 @@ > > LOCAL_PATH := $(call my-dir) > > -# get MAPI_GLAPI_SOURCES > +# get MAPI_GLAPI_FILES > include $(LOCAL_PATH)/mapi/sources.mak > > mapi_abi_headers := > @@ -38,7 +38,7 @@ include $(CLEAR_VARS) > > abi_header := shared-glapi/glapi_mapi_tmp.h > > -LOCAL_SRC_FILES := $(addprefix mapi/, $(MAPI_GLAPI_SOURCES)) > +LOCAL_SRC_FILES := $(MAPI_GLAPI_FILES) > > LOCAL_CFLAGS := \ > -DMAPI_MODE_GLAPI \ > diff --git a/src/mapi/es1api/Makefile b/src/mapi/es1api/Makefile > index 0a0449b..2545dd0 100644 > --- a/src/mapi/es1api/Makefile > +++ b/src/mapi/es1api/Makefile > @@ -41,8 +41,8 @@ esapi_CPPFLAGS := \ > -DMAPI_ABI_HEADER=\"$(ESAPI)/glapi_mapi_tmp.h\" > > include $(MAPI)/sources.mak > -esapi_SOURCES := $(addprefix $(MAPI)/, $(MAPI_BRIDGE_SOURCES)) > -esapi_OBJECTS := $(MAPI_BRIDGE_SOURCES:.c=.o) > +esapi_SOURCES := $(MAPI_BRIDGE_FILES) > +esapi_OBJECTS := $(esapi_SOURCES:.c=.o) > esapi_CPPFLAGS += -DMAPI_MODE_BRIDGE > > esapi_LIB_DEPS := -L$(TOP)/$(LIB_DIR) -l$(GLAPI_LIB) $(esapi_LIB_DEPS) > diff --git a/src/mapi/glapi/Makefile b/src/mapi/glapi/Makefile > index bb4ed65..bca2432 100644 > --- a/src/mapi/glapi/Makefile > +++ b/src/mapi/glapi/Makefile > @@ -19,18 +19,18 @@ ifeq ($(SHARED_GLAPI),1) > glapi_CPPFLAGS += \ > -DMAPI_MODE_BRIDGE \ > -DMAPI_ABI_HEADER=\"glapi/glapi_mapi_tmp.h\" > -glapi_SOURCES := $(addprefix $(MAPI)/, $(MAPI_BRIDGE_SOURCES)) > +glapi_SOURCES := $(MAPI_BRIDGE_FILES) > > glapi_GLAPI_OBJECTS := > glapi_ASM_OBJECTS := > -glapi_MAPI_OBJECTS := $(MAPI_BRIDGE_SOURCES:.c=.o) > +glapi_MAPI_OBJECTS := $(MAPI_BRIDGE_FILES:.c=.o) > else > glapi_CPPFLAGS += -DMAPI_MODE_UTIL > -glapi_SOURCES := $(GLAPI_SOURCES) $(addprefix $(MAPI)/, $(MAPI_UTIL_SOURCES)) > +glapi_SOURCES := $(GLAPI_SOURCES) $(MAPI_UTIL_FILES) > > glapi_GLAPI_OBJECTS := $(GLAPI_SOURCES:.c=.o) > glapi_ASM_OBJECTS := $(GLAPI_ASM_SOURCES:.S=.o) > -glapi_MAPI_OBJECTS := $(MAPI_UTIL_SOURCES:.c=.o) > +glapi_MAPI_OBJECTS := $(MAPI_UTIL_FILES:.c=.o) > endif # SHARED_GLAPI > > glapi_OBJECTS := \ > diff --git a/src/mapi/mapi/sources.mak b/src/mapi/mapi/sources.mak > index 2814186..35ea3cd 100644 > --- a/src/mapi/mapi/sources.mak > +++ b/src/mapi/mapi/sources.mak > @@ -3,34 +3,34 @@ > # mapi may be used in several ways > # > # - In default mode, mapi implements the interface defined by mapi.h. To > use > -# this mode, compile MAPI_SOURCES. > +# this mode, compile MAPI_FILES. > # > # - In util mode, mapi provides utility functions for use with glapi. To > use > -# this mode, compile MAPI_UTIL_SOURCES with MAPI_MODE_UTIL defined. > +# this mode, compile MAPI_UTIL_FILES with MAPI_MODE_UTIL defined. > # > # - In glapi mode, mapi implements the interface defined by glapi.h. To use > -# this mode, compile MAPI_GLAPI_SOURCES with MAPI_MODE_GLAPI defined. > +# this mode, compile MAPI_GLAPI_FILES with MAPI_MODE_GLAPI defined. > # > # - In bridge mode, mapi provides entry points calling into glapi. To use > -# this mode, compile MAPI_BRIDGE_SOURCES with MAPI_MODE_BRIDGE defined. > +# this mode, compile MAPI_BRIDGE_FILES with MAPI_MODE_BRIDGE defined. > > -MAPI_UTIL_SOURCES = \ > - u_current.c \ > - u_execmem.c > +MAPI_UTIL_FILES := \ > + $(TOP)/src/mapi/mapi/u_current.c \ > + $(TOP)/src/mapi/mapi/u_execmem.c > > -MAPI_SOURCES = \ > - entry.c \ > - mapi.c \ > - stub.c \ > - table.c \ > - $(MAPI_UTIL_SOURCES) > +MAPI_FILES := \ > + $(TOP)/src/mapi/mapi/entry.c \ > + $(TOP)/src/mapi/mapi/mapi.c \ > + $(TOP)/src/mapi/mapi/stub.c \ > + $(TOP)/src/mapi/mapi/table.c \ > + $(MAPI_UTIL_FILES) > > -MAPI_GLAPI_SOURCES = \ > - entry.c \ > - mapi_glapi.c \ > - stub.c \ > - table.c \ > - $(MAPI_UTIL_SOURCES) > +MAPI_GLAPI_FILES := \ > + $(TOP)/src/mapi/mapi/entry.c \ > + $(TOP)/src/mapi/mapi/mapi_glapi.c \ > + $(TOP)/src/mapi/mapi/stub.c \ > + $(TOP)/src/mapi/mapi/table.c \ > + $(MAPI_UTIL_FILES) > > -MAPI_BRIDGE_SOURCES = \ > - entry.c > +MAPI_BRIDGE_FILES := \ > + $(TOP)/src/mapi/mapi/entry.c > diff --git a/src/mapi/shared-glapi/Makefile b/src/mapi/shared-glapi/Makefile > deleted file mode 100644 > index 3de864d..0000000 > --- a/src/mapi/shared-glapi/Makefile > +++ /dev/null > @@ -1,65 +0,0 @@ > -# src/mapi/shared-glapi/Makefile > -# > -# Used by OpenGL ES or when --enable-shared-glapi is specified > -# > - > -TOP := ../../.. > -include $(TOP)/configs/current > - > -GLAPI := $(TOP)/src/mapi/glapi > -MAPI := $(TOP)/src/mapi/mapi > - > -glapi_CPPFLAGS := \ > - -I$(TOP)/include \ > - -I$(TOP)/src/mapi \ > - -DMAPI_MODE_GLAPI \ > - -DMAPI_ABI_HEADER=\"shared-glapi/glapi_mapi_tmp.h\" > - > -include $(MAPI)/sources.mak > -glapi_SOURCES := $(addprefix $(MAPI)/, $(MAPI_GLAPI_SOURCES)) > -glapi_OBJECTS := $(MAPI_GLAPI_SOURCES:.c=.o) > - > -.PHONY: default > -default: depend $(TOP)/$(LIB_DIR)/$(GLAPI_LIB_NAME) > - > -$(TOP)/$(LIB_DIR)/$(GLAPI_LIB_NAME): $(glapi_OBJECTS) > - $(MKLIB) -o $(GLAPI_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \ > - -major 0 -minor 0 -patch 0 \ > - -id $(INSTALL_LIB_DIR)/lib$(GLAPI_LIB).0.dylib \ > - $(MKLIB_OPTIONS) -install $(TOP)/$(LIB_DIR) \ > - $(glapi_OBJECTS) $(GLAPI_LIB_DEPS) > - > -$(glapi_OBJECTS): %.o: $(MAPI)/%.c > - $(CC) -c $(glapi_CPPFLAGS) $(CFLAGS) $< -o $@ > - > -$(glapi_SOURCES): glapi_mapi_tmp.h > - > -include $(GLAPI)/gen/glapi_gen.mk > -glapi_mapi_tmp.h: $(GLAPI)/gen/gl_and_es_API.xml $(glapi_gen_mapi_deps) > - $(call glapi_gen_mapi,$<,shared-glapi) > - > -.PHONY: clean > -clean: > - -rm -f $(TOP)/$(LIB_DIR)/$(GLAPI_LIB_NAME) > - -rm -f $(glapi_OBJECTS) > - -rm -f depend depend.bak > - -rm -f glapi_mapi_tmp.h > - > -install: > - $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR) > - $(MINSTALL) $(TOP)/$(LIB_DIR)/$(GLAPI_LIB_GLOB) \ > - $(DESTDIR)$(INSTALL_LIB_DIR) > - > -# workaround a bug in makedepend > -makedepend_CPPFLAGS := \ > - $(filter-out -DMAPI_ABI_HEADER=%, $(glapi_CPPFLAGS)) > -$(glapi_OBJECTS): glapi_mapi_tmp.h > - > -depend: $(glapi_SOURCES) > - @echo "running $(MKDEP)" > - @touch depend > - @$(MKDEP) $(MKDEP_OPTIONS) -f- $(DEFINES) $(makedepend_CPPFLAGS) \ > - $(glapi_SOURCES) 2>/dev/null | sed -e 's,^$(MAPI)/,,' \ > - > depend > - > --include depend > diff --git a/src/mapi/shared-glapi/Makefile.am > b/src/mapi/shared-glapi/Makefile.am > new file mode 100644 > index 0000000..d24a57e > --- /dev/null > +++ b/src/mapi/shared-glapi/Makefile.am > @@ -0,0 +1,23 @@ > +# Used by OpenGL ES or when --enable-shared-glapi is specified > + > +TOP := ../../.. > +GLAPI = $(top_srcdir)/src/mapi/glapi > +include $(top_srcdir)/src/mapi/mapi/sources.mak > + > +lib_LTLIBRARIES = libglapi.la > +libglapi_la_SOURCES = $(MAPI_GLAPI_FILES) > + > +include $(GLAPI)/gen/glapi_gen.mk > +glapi_mapi_tmp.h : $(GLAPI)/gen/gl_and_es_API.xml $(glapi_gen_mapi_deps) > + $(call glapi_gen_mapi,$<,shared-glapi) > + > +AM_CPPFLAGS = \ > + $(DEFINES) \ > + -I$(top_srcdir)/include \ > + -I$(top_srcdir)/src/mapi \ > + -DMAPI_MODE_GLAPI \ > + -DMAPI_ABI_HEADER=\"shared-glapi/glapi_mapi_tmp.h\" > + > +all-local: libglapi.la > + $(MKDIR_P) $(top_builddir)/$(LIB_DIR) > + ln -f .libs/libglapi.so.0.0.0 $(top_builddir)/$(LIB_DIR)/libglapi.so > diff --git a/src/mapi/vgapi/Makefile b/src/mapi/vgapi/Makefile > index 68cf26e..550b68c 100644 > --- a/src/mapi/vgapi/Makefile > +++ b/src/mapi/vgapi/Makefile > @@ -10,8 +10,8 @@ VG_LIB_PATCH = 0 > MAPI := $(TOP)/src/mapi/mapi > > include $(MAPI)/sources.mak > -VGAPI_SOURCES := $(addprefix $(MAPI)/, $(MAPI_SOURCES)) > -VGAPI_OBJECTS := $(MAPI_SOURCES:.c=.o) > +VGAPI_SOURCES := $(MAPI_FILES) > +VGAPI_OBJECTS := $(VGAPI_SOURCES:.c=.o) > > VGAPI_CPPFLAGS := -DMAPI_ABI_HEADER=\"vgapi/vgapi_tmp.h\" > > -- > 1.7.9.1
Fails for me with gmake[2]: Entering directory `/home/mattst88/projects/mesa/src/mapi/shared-glapi' CC entry.lo In file included from ../../../src/mapi/mapi/entry.c:69:0: ../../../src/mapi/mapi/mapi_tmp.h:48:25: fatal error: shared-glapi/glapi_mapi_tmp.h: No such file or directory compilation terminated. gmake[2]: *** [entry.lo] Error 1 Looks like it's not generating glapi_mapi_tmp.h. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev