diff --git a/configs/autoconf.in b/configs/autoconf.in index 3d4c749cf4b..9ea7588a118 100644 --- a/configs/autoconf.in +++ b/configs/autoconf.in @@ -54,6 +54,9 @@ MKLIB_OPTIONS = @MKLIB_OPTIONS@ MKDEP = @MKDEP@ MKDEP_OPTIONS = @MKDEP_OPTIONS@ INSTALL = @INSTALL@ +AWK = @AWK@ +GREP = @GREP@ +NM = @NM@ # Python and flags (generally only needed by the developers) PYTHON2 = @PYTHON2@ diff --git a/configure.ac b/configure.ac index 8885a6d74e5..febb9f68098 100644 --- a/configure.ac +++ b/configure.ac @@ -1468,9 +1468,21 @@ fi dnl dnl XA configuration dnl +if test "x$enable_xa" = xyes; then +AC_PROG_AWK +AC_PROG_GREP +AC_CHECK_PROG(NM, nm, "nm") +if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then +AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.]) +enable_xa=no +fi +fi if test "x$enable_xa" = xyes; then GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS" HAVE_ST_XA=yes + AC_SUBST(AWK) + AC_SUBST(GREP) + AC_SUBST(NM) fi dnl diff --git a/src/gallium/state_trackers/xa/xa_symbols b/src/gallium/state_trackers/xa/xa_symbols deleted file mode 100644 index 6da701f9702..00000000000 --- a/src/gallium/state_trackers/xa/xa_symbols +++ /dev/null @@ -1,30 +0,0 @@ -xa_tracker_version -xa_tracker_create -xa_tracker_destroy -xa_surface_create -xa_surface_destroy -xa_surface_redefine -xa_surface_dma -xa_surface_map -xa_surface_unmap -xa_surface_format -xa_surface_handle -xa_format_check_supported -xa_context_default -xa_context_create -xa_context_destroy -xa_fence_get -xa_fence_wait -xa_fence_destroy -xa_copy_prepare -xa_copy -xa_copy_done -xa_solid_prepare -xa_solid -xa_solid_done -xa_composite_allocation -xa_composite_check_accelerated -xa_composite_prepare -xa_composite_rect -xa_composite_done -xa_yuv_planar_blit diff --git a/src/gallium/targets/xa-vmwgfx/Makefile b/src/gallium/targets/xa-vmwgfx/Makefile index a4c02d1bca0..6ca446a15dc 100644 --- a/src/gallium/targets/xa-vmwgfx/Makefile +++ b/src/gallium/targets/xa-vmwgfx/Makefile @@ -52,13 +52,17 @@ endif default: $(TOP)/$(LIB_DIR)/gallium/$(XA_LIB_NAME) +# Generate list of library visible symbols +xa_symbols: $(TOP)/src/gallium/state_trackers/xa/libxatracker.o + $(NM) $< | $(GREP) ' T ' | $(AWK) '{print $$3}' > $@ # Make the library -$(TOP)/$(LIB_DIR)/gallium/$(XA_LIB_NAME): depend $(OBJECTS) $(XA_LIB_DEPS) +$(TOP)/$(LIB_DIR)/gallium/$(XA_LIB_NAME): depend $(OBJECTS) $(XA_LIB_DEPS) \ + xa_symbols $(MKLIB) -o $(XA_LIB) -linker $(LD) -ldflags '$(LDFLAGS)' \ -major $(XA_MAJOR) -minor $(XA_MINOR) -patch $(XA_TINY) \ $(MKLIB_OPTIONS) \ - -exports $(TOP)/src/gallium/state_trackers/xa/xa_symbols\ + -exports xa_symbols \ -install $(TOP)/$(LIB_DIR)/gallium \ $(OBJECTS) $(XA_LIB_DEPS) $(GALLIUM_AUXILIARIES) @@ -91,7 +95,7 @@ clean: -rm -f *.la -rm -f *.pc -rm -rf .libs - -rm -f depend depend.bak exptmp + -rm -f depend depend.bak exptmp xa_symbols depend: $(SOURCES)