From ca760181b4420696c7e86aa2951d7203522ad1e8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Kristian=20H=C3=B8gsberg?= Date: Fri, 16 Mar 2012 12:55:40 -0400 Subject: [PATCH] shared-glapi: Convert to automake 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 breaks 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 | 25 ++++++++++++ src/mapi/vgapi/Makefile | 4 +- 11 files changed, 61 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 c0d81c9a4de..519662b7a05 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 a8072c18213..9c3935b7857 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 1dbc9d15c77..dede5bc1069 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 79dc405372e..a11bd3ff011 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 fe9e40e261b..b75361f46fa 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 0a0449b10a3..a9c91231954 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 := $(notdir $(MAPI_BRIDGE_FILES:.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 bb4ed6585d9..211f384a77c 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 := $(notdir $(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 := $(notdir $(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 28141860f1a..56f4afd3efc 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 3de864d891c..00000000000 --- 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 00000000000..f8e0271d71b --- /dev/null +++ b/src/mapi/shared-glapi/Makefile.am @@ -0,0 +1,25 @@ +# Used by OpenGL ES or when --enable-shared-glapi is specified + +TOP = $(top_srcdir) +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) + +BUILT_SOURCES = glapi_mapi_tmp.h + +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 68cf26e83c3..91766f00040 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 := $(notdir $(MAPI_FILES:.c=.o)) VGAPI_CPPFLAGS := -DMAPI_ABI_HEADER=\"vgapi/vgapi_tmp.h\" -- 2.30.2