gallium/targets: don't leave an empty target directory(ies)
authorEmil Velikov <emil.l.velikov@gmail.com>
Fri, 3 Mar 2017 19:25:40 +0000 (19:25 +0000)
committerEmil Velikov <emil.l.velikov@gmail.com>
Sat, 4 Mar 2017 15:26:43 +0000 (15:26 +0000)
Some drivers do not support certain targets - for example nouveau
doesn't do VAAPI, while freedreno doesn't do of the video backends.

As such if we enter vdpau when building freedreno/ilo/etc, a vdpau/
folder will be created, empty library will be build and almost
immediately removed. Thus keeping an empty vdpau/ folder around.

There are two ways to fix this.

 * add substantial tracking in configure/makefiles so that we never end
up in targets/vdpau
 Downsides:
Error prone, as the configure checks and the 'include
gallium/drivers/foo/Automake.inc' can easily get out of sync.

 * remove the folder, if empty, alongside the empty library.
 Downsides:
In the latter case vdpau/ might be empty before the mesa build has
started, yet we'll remove it either way.

This patch implements the latter option, as the downside isn't that
significant, plus the patch is way shorter ;-)

v2: use has_drivers to track since TARGET_DRIVERS can contain space,
hence neither string comparison nor -n/-z works correctly.

Gentoo Bugzilla: https://bugs.gentoo.org/545230
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
src/gallium/targets/dri/Makefile.am
src/gallium/targets/vdpau/Makefile.am
src/gallium/targets/xvmc/Makefile.am

index 50c273376f67d14438f36d7829fb02474f96e004..4d92f45e421df6acaab349b64e1d51995104f8ce 100644 (file)
@@ -139,10 +139,12 @@ endif
 # gallium_dri.so in the set of final installed files.
 install-data-hook:
        for i in $(TARGET_DRIVERS); do                                  \
+               has_drivers=1;                                          \
                ln -f $(DESTDIR)$(dridir)/gallium_dri.so                \
                      $(DESTDIR)$(dridir)/$${i}_dri.so;                 \
        done;                                                           \
-       $(RM) $(DESTDIR)$(dridir)/gallium_dri.*
+       $(RM) $(DESTDIR)$(dridir)/gallium_dri.*;                        \
+       test $${has_drivers} -eq 1 || $(RM) -d $(DESTDIR)$(dridir)
 
 uninstall-hook:
        for i in $(TARGET_DRIVERS); do                                  \
index 97c0ab27f514033161c04898b3c4ea60bc7e43d2..a0f310bc5967423ac822dd7e1576658f072f570b 100644 (file)
@@ -108,6 +108,7 @@ endif
 install-data-hook:
        $(AM_V_GEN)dest_dir=$(DESTDIR)/$(vdpaudir);                     \
        for i in $(TARGET_DRIVERS); do                                  \
+               has_drivers=1;                                          \
                j=libvdpau_gallium.$(LIB_EXT);                          \
                k=libvdpau_$${i}.$(LIB_EXT);                            \
                l=$${k}.$(VDPAU_MAJOR).$(VDPAU_MINOR).0;                \
@@ -120,7 +121,8 @@ install-data-hook:
                ln -sf $${l}                                            \
                       $${dest_dir}/$${k};                              \
        done;                                                           \
-       $(RM) $${dest_dir}/libvdpau_gallium.*
+       $(RM) $${dest_dir}/libvdpau_gallium.*;                          \
+       test $${has_drivers} -eq 1 || $(RM) -d $${dest_dir}
 
 uninstall-hook:
        for i in $(TARGET_DRIVERS); do                                  \
index c8bac58961d91b2e89b6d1b3944c9f83c85bf3a9..b65a191eab0b25c1df564b7bbc7b543a0494264b 100644 (file)
@@ -70,6 +70,7 @@ endif
 install-data-hook:
        $(AM_V_GEN)dest_dir=$(DESTDIR)/$(xvmcdir);                      \
        for i in $(TARGET_DRIVERS); do                                  \
+               has_drivers=1;                                          \
                j=libXvMCgallium.$(LIB_EXT);                            \
                k=libXvMC$${i}.$(LIB_EXT);                              \
                l=$${k}.$(XVMC_MAJOR).$(XVMC_MINOR).0;                  \
@@ -82,7 +83,8 @@ install-data-hook:
                ln -sf $${l}                                            \
                       $${dest_dir}/$${k};                              \
        done;                                                           \
-       $(RM) $${dest_dir}/libXvMCgallium.*
+       $(RM) $${dest_dir}/libXvMCgallium.*;                            \
+       test $${has_drivers} -eq 1 || $(RM) -d $${dest_dir}
 
 uninstall-hook:
        for i in $(TARGET_DRIVERS); do                                  \