summaryrefslogblamecommitdiffstats
path: root/driver/Makefile.in
blob: 0e986a9d205f1eb2439b3868f2a73614ff281786 (plain) (tree)
1
2
3
4
5
6
                                                                             



                                                                       
                                        














                                     
                              
 



                                                              



                                             


                                                


                                 


                           

                        




                                  


                                   
                                                  






                                
                            



                                  









                                                                               


                               








                                                                           






                                                     

                                                 
 






























                                                                               












                                   

                               



                             
 






















                                                                           
 
                  
                                                 













































                                                                               
                                      
 

                                                          





                                                                              


                                                                             
                                                                     
                          
 



                                                                           
 


                                                         
 
 




                                                                              
 



                                                                        
 








                                                                               
           












                                                                               

             

































                                                                               


                                                                               

                                                                               



















                                                                               
                                                                               





                                                                               




                                                                       
                                                                   
 

                                                                         
                                                                         




                                                                         
                                                                         






                                                                         
                                                                         
                                                                         

                                                                         
                                                                         






                                                                         

                 

















                                                                               



                                                                         





                                                                         



                                                     
                                                                         

                                                                         

                                                                         


                             

                                                                         



                                                                         









                                                                         








                                                                         

                                                                         
                                                                         








                                                                         

                                                                         
                                                                         




                                                                               

                                                                               


                                                                               


                                                                         
                                                                         



                                                                         


                                                                         

                                                                         

                                                                         

                                                                         
                                                                         
                                                                         







                                                                               
                                                                               


                                                                               






                                                                               

































                                                                               
                                  
               



                                                                               



                                                                               
                                                                               
                                                                               
                                                                               


                                                                               


                                  
                                                                               


                                                                               
                                                                               




                                                                               





                                                                               

                                                                               


























                                                                               
                                  



                                                                               

                                                                               


                                                                               


                                  
                                                                               






                                                                               

           




                                                 














                                                                         






                                                                              
      

                                                                   


                                              




                                        
                        





                                                                             
                                 









                                                                              

                                                                             

                                                                             





















                                                                             
                                                                             



                                                                             
                                                                             















                                                                             
              
                                                                       
                                               


















                                                                         


                                                                              
 

                                                                              











                                                         

                                                      
                                                         





















                                                             




                                                                        







                                                                              
                                              
                                                            
     
                             
 


                                          


                                        
                                            
 


                                          
 

                                                            
 




                                                      
 



                                                        
 




                                                                  
 
 


                                                                              
 
                                                                              
 







                                                      

 









                                                          

                                                                         
                                                                         





                                                                         
 












                                                                         
 










                                                                         
 
 





                                                                            

 




                                                                              
 






                                                                    



                                         


                                                                        
 



                                                                               
 


                                                                               
 



                                                                            
 

                                                            
 

                                                               
 


                                                                   
 





                                                                              
 


                                                               
 

                                                                                     
 
 

                                                        
                      
                                                              
                    
                                                      








                                                                              

                             

                                     





                                    
                              
                                            



                               
                      





                                   
                              

                                  
                            

                                    
                              
                              
                               
                         

                                 
                           


                               

                            

                              
                        

                                
                              
                                     
                                     
                              
                        
                               
                                
                          
                               
                         
                                 
                           
                                   
                                     
                       
                            
                      
                               
                         
                                  
                            





                                  

                                        

                                         


                                              




                                               
 
# driver/Makefile.in --- xscreensaver, Copyright © 1997-2021 Jamie Zawinski.
# the `../configure' script generates `driver/Makefile' from this file.

@SET_MAKE@
.SUFFIXES:
.SUFFIXES: .c .m .o .desktop .desktop.in

srcdir		= @srcdir@
VPATH		= @srcdir@
top_srcdir	= @top_srcdir@
top_builddir	= ..

install_prefix	=
prefix		= @prefix@
exec_prefix	= @exec_prefix@
bindir		= @bindir@
datarootdir	= @datarootdir@
datadir		= @datadir@
localedir	= @PO_DATADIR@/locale
mandir		= @mandir@
libexecdir	= @libexecdir@
sysconfdir	= @sysconfdir@

# A = suffix for user commands in /usr/bin/
# B = suffix for helper programs in /usr/libexec/xscreensaver/
mansuffixA	= 1
mansuffixB	= 6

GTK_DATADIR	= @GTK_DATADIR@
GTK_APPDIR	= $(GTK_DATADIR)/applications
GTK_ICONDIR	= $(GTK_DATADIR)/pixmaps
GTK_UIDIR	= $(GTK_DATADIR)/xscreensaver/ui

HACKDIR		= @HACKDIR@
HACK_CONF_DIR	= @HACK_CONF_DIR@

CC		= @CC@
CFLAGS		= @CFLAGS@
LDFLAGS		= @LDFLAGS@
DEFS		= @DEFS@

LIBS		= @LIBS@

DEPEND		= @DEPEND@
DEPEND_FLAGS	= @DEPEND_FLAGS@
DEPEND_DEFINES	= @DEPEND_DEFINES@

INSTALL		= @INSTALL@
SUID_FLAGS      = -o root -m 4755
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SETUID	= $(INSTALL_PROGRAM) $(SUID_FLAGS)
INSTALL_DATA	= @INSTALL_DATA@
INSTALL_DIRS	= @INSTALL_DIRS@

X_CFLAGS	= @X_CFLAGS@
X_LIBS		= @X_LIBS@
X_PRE_LIBS	= @X_PRE_LIBS@
X_EXTRA_LIBS	= @X_EXTRA_LIBS@
PNG_LIBS	= @PNG_LIBS@
XFT_LIBS	= @XFT_LIBS@

INTLTOOL_MERGE	= @INTLTOOL_MERGE@
INTL_LIBS	= @INTLLIBS@

# Note:
#
# X_LIBS would more properly be called X_LDFLAGS (it contains the -L args.)
# X_PRE_LIBS contains extra libraries you have to link against on some systems,
#         and that must come before -lX11.  (e.g., -lSM and -lICE.)
# X_EXTRA_LIBS contains extra libraries needed by X that aren't a part of X.
#         (e.g., -lsocket, -lnsl, etc.)
#
# I think (but am not totally sure) that LIBS is also really "LDFLAGS".


AD_DIR		= @APPDEFAULTS@

# $(sysconfdir) is either /usr/local/etc or /usr/etc but this must be /etc.
PAM_ROOT	= /etc
PAM_DIR		= $(PAM_ROOT)/pam.d
PAM_CONF	= $(PAM_ROOT)/pam.conf

ICON_SRC        = $(UTILS_SRC)/images
LOGO		= $(ICON_SRC)/logo-50.xpm
GTK_ICONS	= $(ICON_SRC)/screensaver-*.png

UTILS_SRC	= $(srcdir)/../utils
UTILS_BIN	= ../utils

INCLUDES_1	= -I. -I$(srcdir) -I$(UTILS_SRC) -I..
INCLUDES	= $(INCLUDES_1) @INCLUDES@

LIBS_PRE	= $(LIBS) $(X_LIBS) $(X_PRE_LIBS)
LIBS_POST	= $(X_EXTRA_LIBS)

XDPMS_LIBS	= @XDPMS_LIBS@
XINERAMA_LIBS	= @XINERAMA_LIBS@ $(FIXME)
XINPUT_LIBS	= -lXi
XML_LIBS	= @XML_LIBS@

DAEMON_DEFS	= -DDEFAULT_PATH_PREFIX='"@HACKDIR@"' -DAD_DIR='"$(AD_DIR)"'
DAEMON_SRCS	= xscreensaver.c blurb.c atoms.c clientmsg.c xinput.c prefs.c
DAEMON_OBJS	= xscreensaver.o blurb.o atoms.o clientmsg.o xinput.o prefs.o \
		  $(UTILS_BIN)/xmu.o
DAEMON_LIBS	= $(LIBS_PRE) $(XINPUT_LIBS) -lX11 $(LIBS_POST)

GFX_DEFS	= -DLOCALEDIR=\"$(localedir)\"
GFX_SRCS	= xscreensaver-gfx.c screens.c windows.c subprocs.c \
		  exec.c prefsw.c dpms.c fade.c exts.c atomswm.c
GFX_OBJS	= xscreensaver-gfx.o screens.o windows.o subprocs.o \
		  exec.o prefsw.o dpms.o fade.o exts.o atomswm.o \
		  prefs.o blurb.o atoms.o clientmsg.o xinput.o \
		  $(UTILS_BIN)/xmu.o \
		  $(UTILS_BIN)/yarandom.o \
		  $(UTILS_BIN)/resources.o \
		  $(UTILS_BIN)/visual.o \
		  $(UTILS_BIN)/usleep.o \
		  $(UTILS_BIN)/font-retry.o \
		  $(UTILS_BIN)/logo.o \
		  $(UTILS_BIN)/minixpm.o \
		  $(UTILS_BIN)/xft.o \
		  $(UTILS_BIN)/utf8wc.o \
		  $(UTILS_BIN)/xshm.o \
		  $(UTILS_BIN)/aligned_malloc.o
GFX_LIBS	= $(LIBS_PRE) $(XFT_LIBS) $(XDPMS_LIBS) $(XINERAMA_LIBS) \
		  @SAVER_LIBS@ -lXt -lX11 -lXext -lXi $(LIBS_POST) $(INTL_LIBS)

PWENT_SRCS	= passwd-pwent.c
PWENT_OBJS	= passwd-pwent.o

KERBEROS_SRCS	= passwd-kerberos.c
KERBEROS_OBJS	= passwd-kerberos.o

PAM_SRCS	= passwd-pam.c
PAM_OBJS	= passwd-pam.o

PWHELPER_SRCS	= passwd-helper.c
PWHELPER_OBJS	= passwd-helper.o

PASSWD_SRCS	= @PASSWD_SRCS@
PASSWD_OBJS	= @PASSWD_OBJS@

LOCK_SRCS	= @LOCK_SRCS@
LOCK_OBJS	= @LOCK_OBJS@


AUTH_DEFS	= -DLOCALEDIR=\"$(localedir)\" -DAD_DIR='"$(AD_DIR)"'
AUTH_SRCS	= xscreensaver-auth.c dialog.c passwd.c setuid.c
AUTH_OBJS	= xscreensaver-auth.o $(AUTH_OBJS_1)
AUTH_OBJS_1	= dialog.o passwd.o setuid.o \
		  @PASSWD_OBJS@ \
		  blurb.o screens.o xinput.o prefs.o atoms.o atomswm.o \
		  $(UTILS_BIN)/xft.o \
		  $(UTILS_BIN)/xftwrap.o \
		  $(UTILS_BIN)/utf8wc.o \
		  $(UTILS_BIN)/font-retry.o \
		  $(UTILS_BIN)/yarandom.o \
		  $(UTILS_BIN)/usleep.o \
		  $(UTILS_BIN)/resources.o \
		  $(UTILS_BIN)/logo.o \
		  $(UTILS_BIN)/minixpm.o
AUTH_LIBS	= $(LIBS_PRE) $(XFT_LIBS) $(XINPUT_LIBS) $(XINERAMA_LIBS) \
		  @SAVER_LIBS@ -lXt -lX11 -lXext -lXi \
		  @PASSWD_LIBS@ $(LIBS_POST) $(INTL_LIBS)

SYSTEMD_DEFS	= 
SYSTEMD_SRCS	= xscreensaver-systemd.c
SYSTEMD_OBJS	= xscreensaver-systemd.o blurb.o $(UTILS_BIN)/yarandom.o
SYSTEMD_LIBS	= $(LIBS_PRE) @SYSTEMD_LIBS@ -lX11 $(LIBS_POST)

CMD_DEFS	= 
CMD_SRCS	= remote.c xscreensaver-command.c
CMD_OBJS	= remote.o xscreensaver-command.o blurb.o atoms.o clientmsg.o
CMD_LIBS	= $(LIBS_PRE) $(XINPUT_LIBS) -lX11 -lXext $(LIBS_POST)

GTK_DEFS	= -DHACK_CONFIGURATION_PATH='"$(HACK_CONF_DIR)"' \
		  -DDEFAULT_PATH_PREFIX='"@HACKDIR@"' \
		  -DDEFAULT_ICONDIR='"$(GTK_UIDIR)"' \
		  -DLOCALEDIR=\"$(localedir)\" \
		  -I$(ICON_SRC)
GTK_SRCS	= demo-Gtk.c demo-Gtk-conf.c
GTK_OBJS	= demo-Gtk.o demo-Gtk-conf.o \
		  blurb.o exec.o prefs.o prefsw.o dpms.o remote.o \
		  clientmsg.o atoms.o \
		  $(UTILS_BIN)/xmu.o \
		  $(UTILS_BIN)/resources.o \
		  $(UTILS_BIN)/visual.o \
		  $(UTILS_BIN)/usleep.o
GTK_LIBS	= $(LIBS_PRE) $(INTL_LIBS) $(XDPMS_LIBS) \
		  $(XINERAMA_LIBS) $(XML_LIBS) @GTK_LIBS@ \
		  -lXt -lX11 -lXext -lXi $(LIBS_POST)

MOTIF_DEFS	= -DHACK_CONFIGURATION_PATH='"$(HACK_CONF_DIR)"' \
		  -DDEFAULT_PATH_PREFIX='"@HACKDIR@"'
MOTIF_SRCS	= demo-Xm.c demo-Xm-widgets.c
MOTIF_OBJS	= demo-Xm.o demo-Xm-widgets.o \
		  blurb.o exec.o prefs.o prefsw.o dpms.o remote.o \
		  clientmsg.o atoms.o \
		  $(UTILS_BIN)/xmu.o \
		  $(UTILS_BIN)/resources.o \
		  $(UTILS_BIN)/visual.o \
		  $(UTILS_BIN)/usleep.o
MOTIF_LIBS	= $(LIBS_PRE) $(XDPMS_LIBS) $(XDPMS_LIBS) @MOTIF_LIBS@ \
		  @PNG_LIBS@ -lXt -lX11 -lXext -lXi $(LIBS_POST)

TEST_SRCS	= test-passwd.c test-uid.c      test-xdpms.c    test-grab.c   \
		  test-fade.c   test-xinerama.c test-vp.c       test-randr.c  \
	          xdpyinfo.c    test-screens.c  test-yarandom.c test-xinput.c \
	          test-xkb.c
TEST_EXES	= test-passwd   test-uid        test-xdpms      test-grab     \
		  test-fade     test-xinerama   test-vp         test-randr    \
		  xdpyinfo      test-screens    test-yarandom   test-xinput   \
	          test-xkb

EXES		= xscreensaver xscreensaver-command xscreensaver-settings
UTIL_EXES	= xscreensaver-gfx @EXES_SYSTEMD@
SETUID_EXES	= xscreensaver-auth
DEMO_EXES	= @ALL_DEMO_PROGRAMS@
EXES_SYSTEMD	= xscreensaver-systemd

HDRS		= XScreenSaver_ad.h XScreenSaver_Xm_ad.h \
		  xscreensaver.h prefs.h remote.h exec.h \
		  demo-Gtk-conf.h auth.h types.h blurb.h atoms.h clientmsg.h \
		  screens.h xinput.h fade.h
MENA		= xscreensaver.man xscreensaver-settings.man \
		  xscreensaver-command.man
MENB		= xscreensaver-gfx.man xscreensaver-auth.man \
		  xscreensaver-command.man xscreensaver-systemd.man

EXTRAS		= README Makefile.in \
		  XScreenSaver.ad.in XScreenSaver-Xm.ad xscreensaver.pam.in \
		  xscreensaver.ui screensaver-properties.desktop.in \
		  .gdbinit

TARFILES	= $(DAEMON_SRCS) $(GFX_SRCS) $(AUTH_SRCS) $(SYSTEMD_SRCS) \
		  $(CMD_SRCS) $(GTK_SRCS) $(MOTIF_SRCS) $(PWENT_SRCS) \
		  $(PWHELPER_SRCS) $(KERBEROS_SRCS) $(PAM_SRCS) \
		  $(HDRS) $(MENA) $(MENB) $(TEST_SRCS) $(EXTRAS) 

default: $(EXES) $(UTIL_EXES) $(SETUID_EXES)
all:     $(EXES) $(UTIL_EXES) $(SETUID_EXES) $(DEMO_EXES)
tests:   $(TEST_EXES)


##############################################################################
#
# Installation
#
##############################################################################

install:   install-program   install-ad   install-man   install-xml    \
	   install-pam	install-gnome
uninstall: uninstall-program uninstall-ad uninstall-man uninstall-xml  \
	   uninstall-gnome

install-strip:
	$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install

install-program:: $(EXES)
	@if [ ! -d $(install_prefix)$(bindir) ]; then			      \
	   $(INSTALL_DIRS) $(install_prefix)$(bindir) ;			      \
	 fi ;								      \
	 if [ ! -d $(install_prefix)$(HACKDIR) ]; then			      \
	   $(INSTALL_DIRS) $(install_prefix)$(HACKDIR) ;		      \
	 fi

install-program:: $(EXES)
	@inst="$(INSTALL_PROGRAM)" ;					      \
	for exe in $(EXES); do						      \
	  echo $$inst $$exe $(install_prefix)$(bindir)/$$exe ;		      \
	       $$inst $$exe $(install_prefix)$(bindir)/$$exe ;		      \
	done

install-program:: $(UTIL_EXES)
	@inst="$(INSTALL_PROGRAM)" ;					      \
	 for exe in $(UTIL_EXES); do					      \
	    echo $$inst $$exe $(install_prefix)$(HACKDIR)/$$exe ;	      \
	         $$inst $$exe $(install_prefix)$(HACKDIR)/$$exe ;	      \
	 done

install-program:: $(SETUID_EXES)
	@inst="$(INSTALL_PROGRAM)" ;					      \
	 idir="$(install_prefix)$(HACKDIR)" ;				      \
	 if [ @SETUID_AUTH@ = yes ]; then				      \
	   inst="$(INSTALL_SETUID)" ;					      \
	 else								      \
	   inst="$(INSTALL_PROGRAM)" ;					      \
	 fi ;								      \
	 for exe in $(SETUID_EXES); do					      \
	   echo $$inst $$exe $$idir/$$exe ;				      \
	   if   $$inst $$exe $$idir/$$exe ; then			      \
	     true ;							      \
	   elif [ @SETUID_AUTH@ = yes ]; then				      \
	     echo $(INSTALL_PROGRAM) $$exe $$idir/$$exe ;		      \
	     if   $(INSTALL_PROGRAM) $$exe $$idir/$$exe ; then		      \
	       echo "" ;						      \
	       echo "WARNING: unable to install $$exe setuid." ;	      \
	       echo "WARNING: authentication may not work!" ;		      \
	       echo "" ;						      \
	     else							      \
	       exit 1 ;							      \
	     fi ;							      \
	   else								      \
	     exit 1 ;							      \
	   fi ;								      \
	 done


# Symlink from xscreensaver-demo -> xscreensaver-settings in /usr/bin/
install-program::
	@D=$(install_prefix)$(bindir) ;					      \
	 echo ln -sf xscreensaver-settings $$D/xscreensaver-demo ; 	      \
	      ln -sf xscreensaver-settings $$D/xscreensaver-demo

install-ad: XScreenSaver.ad
	@if [ ! -d $(install_prefix)$(AD_DIR) ]; then			      \
	  $(INSTALL_DIRS) $(install_prefix)$(AD_DIR) ;			      \
	 fi ;								      \
	echo $(INSTALL_DATA) XScreenSaver.ad				      \
	  $(install_prefix)$(AD_DIR)/XScreenSaver ;			      \
	if $(INSTALL_DATA) XScreenSaver.ad				      \
	  $(install_prefix)$(AD_DIR)/XScreenSaver ; then		      \
	  true ;							      \
	else								      \
	  e=echo ;							      \
	  if [ -f $(install_prefix)$(AD_DIR)/XScreenSaver ]; then	      \
 $$e ""									     ;\
 $$e "  ####################################################################";\
 $$e "  Warning: unable to install $(install_prefix)$(AD_DIR)/XScreenSaver"  ;\
 $$e "           That file exists, and is unwritable.  It is probably from"  ;\
 $$e "           an older version of xscreensaver, and could cause things"   ;\
 $$e "           to malfunction.  Please delete it!"			     ;\
 $$e "  ####################################################################";\
 $$e ""									     ;\
	    exit 1 ;							      \
	  else								      \
 $$e ""									     ;\
 $$e "  ####################################################################";\
 $$e "  Warning: unable to install $(install_prefix)$(AD_DIR)/XScreenSaver"  ;\
 $$e "           This is probably ok; it should work without that file."     ;\
 $$e "  ####################################################################";\
 $$e ""									     ;\
	    exit 0 ;							      \
	  fi								      \
	fi

# When installing man pages, we install "foo.man" as "foo.N" and update
# the .TH line in the installed file with one like
#
#     .TH XScreenSaver N "V.VV (DD-MMM-YYYY)" "X Version 11"
#
# where N is the manual section suffix (usually 1 or 6, depending).
#
install-man:: $(MENA) $(MENB)
	@								\
	U=$(UTILS_SRC)/version.h ;					\
	V=`sed -n 's/.*xscreensaver \([0-9]\.[^)]*)\).*/\1/p' < $$U |	\
	    head -1` ;							\
	T=/tmp/xs$$$$.man ;						\
	SUFA=$(mansuffixA) ;						\
	SUFB=$(mansuffixB) ;						\
									\
	INST() {							\
	  TH=".TH XScreenSaver $$SUF \"$$V\" \"X Version 11\"" ;	\
	  DIR="$(install_prefix)$(mandir)/man$$SUF" ;			\
	  if [ ! -d $$DIR ]; then					\
	    echo $(INSTALL_DIRS) $$DIR ;				\
	         $(INSTALL_DIRS) $$DIR ;				\
	   fi ;								\
									\
	  sed -e "s/^\.TH.*/$$TH/"					\
	      -e "s/^\(\.BR xscreens[^ ]* (\)[0-9]\(.*\)/\1$$SUFA\2/"	\
	      -e "s@(MANSUFFIX)@($$SUFB)@g"				\
	    < $(srcdir)/$$man > $$T ;					\
	  manbase=`echo $$man | sed 's/\.man$$//'` ;			\
	  echo $(INSTALL_DATA) $$man $$DIR/$$manbase.$$SUF ;		\
	       $(INSTALL_DATA) $$T   $$DIR/$$manbase.$$SUF ;		\
	} ;								\
									\
	SUF=$$SUFA ; for man in $(MENA); do INST ; done ;		\
	SUF=$$SUFB ; for man in $(MENB); do INST ; done ;		\
	rm -f $$T

# Symlink from xscreensaver-demo.1 -> xscreensaver-settings.1 in /usr/man/man1/
install-man::
	@D=$(install_prefix)$(mandir)/man$(mansuffixA) ;		\
	 F1=xscreensaver-settings.$(mansuffixA) ;			\
	 F2=xscreensaver-demo.$(mansuffixA) ;				\
	 echo ln -sf $$F1 $$D/$$F2 ;					\
	      ln -sf $$F1 $$D/$$F2

# These used to be in driver/ and installed into $(bindir)
# Now they are in hacks/ and are installed into ${libexecdir}/xscreensaver/
OLD_EXES = xscreensaver-getimage xscreensaver-getimage-file \
	   xscreensaver-getimage-video xscreensaver-text \
	   xscreensaver-systemd
OLD_MEN  = xscreensaver-getimage.man xscreensaver-getimage-file.man \
	   xscreensaver-getimage-video.man xscreensaver-text.man \
	   xscreensaver-demo.man
uninstall-program::
	@for program in $(EXES) $(OLD_EXES); do				\
	  echo rm -f $(install_prefix)$(bindir)/$$program ;		\
	  rm -f $(install_prefix)$(bindir)/$$program ;			\
	done

uninstall-program::
	@for program in $(UTIL_EXES) $(SETUID_EXES); do			\
	  echo rm -f $(install_prefix)$(HACKDIR)/$$program ;		\
	       rm -f $(install_prefix)$(HACKDIR)/$$program ;		\
	done

uninstall-ad:
	rm -f $(install_prefix)$(AD_DIR)/XScreenSaver

uninstall-man:
	@men="$(MEN) $(OLD_MEN)" ;					\
	for man in $$men; do						\
	  instname=`echo $$man | sed 's/\.man$$/\.$(mansuffix)/'` ;	\
	  echo rm -f $(install_prefix)$(manAdir)/$$instname* ;		\
	       rm -f $(install_prefix)$(manAdir)/$$instname* ;		\
	done

install-pam: xscreensaver.pam
	@src="xscreensaver.pam" ;					\
	name=`sed -n 's/.*PAM_SERVICE_NAME[ 	]*"\([^"]*\)".*$$/\1/p'	\
	   < ../config.h` ;						\
	dir="$(install_prefix)$(PAM_DIR)" ;				\
	conf="$(PAM_CONF)" ;						\
									\
	if [ -z "$$name" ]; then					\
	  echo "PAM not configured, not installing" >&2 ;		\
	  exit 0 ;							\
	fi ;								\
									\
	if [ ! -d $(install_prefix)$(PAM_ROOT) ]; then			\
	  echo $(INSTALL_DIRS) $(install_prefix)$(PAM_ROOT) ;		\
	       $(INSTALL_DIRS) $(install_prefix)$(PAM_ROOT) ;		\
	fi ;								\
									\
	if [ -d $$dir ] ; then						\
									\
	  if [ -f $$dir/xdm ]; then					\
	    src2=$$dir/xdm ;						\
	  elif [ -f $$dir/login ]; then					\
	    src2=$$dir/login ;						\
	  fi ;								\
									\
	  if [ -z "$$src2" ]; then					\
	    echo $(INSTALL_DATA) $$src $$dir/$$name ;			\
	         $(INSTALL_DATA) $$src $$dir/$$name ;			\
	  else								\
	    tmp="xscreensaver.pam.$$$$" ;				\
	    grep '^#%\|^auth\|^@include' $$src2 > $$tmp ;		\
	    if cmp -s $$tmp $$dir/$$name ; then				\
	      echo "$$dir/$$name unchanged" ;				\
	    else							\
	      echo "Updating contents of $$dir/$$name from $$src2" ;	\
	      $(INSTALL_DATA) $$tmp $$dir/$$name ;			\
	    fi ;							\
	    rm -f $$tmp ;						\
	  fi ;								\
									\
	  if [ ! -f $$dir/$$name ]; then				\
	    e=echo ;							\
 $$e ""									     ;\
 $$e "  ####################################################################";\
 $$e "  Warning: xscreensaver has been compiled with support for Pluggable"  ;\
 $$e "           Authentication Modules (PAM).  However, we were unable to"  ;\
 $$e "           install the file \"$$dir/$$name\".  XScreenSaver is"        ;\
 $$e "           unlikely to work without this file."			     ;\
 $$e "  ####################################################################";\
 $$e ""									     ;\
	  fi ;								\
	elif [ -f $$conf -a "x$$name" != "x" ]; then			\
	  if ( grep $$name $$conf >/dev/null ); then			\
	   echo "$$conf unchanged: already has an entry for $$name" ;   \
	  else								\
	    tmp="pam.conf.$$$$" ;					\
	    grep -v $$name $$conf > $$tmp ;				\
	    extras=`sed -n "s/^login\(.*auth.*\)$$/$$name\1/p" $$conf`; \
	    echo "$$extras" >> $$tmp ;					\
	    if [ "x$$extras" = "x" ]; then				\
	      echo "Error: no login rules in $$conf?" >&2 ;		\
	    else							\
	      echo "adding $$name rules to $$conf:" ;			\
	      echo "" ;							\
	      echo "$$extras" | sed 's/^/	/' ;			\
	    fi ; 							\
	    $(INSTALL_DATA) $$tmp $$conf ;				\
	    rm -f $$tmp ;						\
	  fi ;								\
	  if ( grep $$name $$conf >/dev/null ); then			\
	    echo ;							\
	  else								\
	    e=echo ;							\
 $$e ""									     ;\
 $$e "  ####################################################################";\
 $$e "  Warning: xscreensaver has been compiled with support for Pluggable"  ;\
 $$e "           Authentication Modules (PAM).  However, we were unable to"  ;\
 $$e "           install xscreensaver rules in the file $$conf."	     ;\
 $$e "           XScreenSaver is unlikely to work without this."	     ;\
 $$e "  ####################################################################";\
 $$e ""									     ;\
	  fi ;								\
	else								\
	    e=echo ;							\
 $$e ""									     ;\
 $$e "  ####################################################################";\
 $$e "  Warning: $$dir/ does not exist, not installing PAM config."          ;\
 $$e "  ####################################################################";\
 $$e ""									     ;\
	fi

# screensaver-properties.desktop
# into /usr/share/applications/
install-gnome:: screensaver-properties.desktop
	@if [ "$(GTK_DATADIR)" != "" ]; then				      \
	   if [ ! -d "$(install_prefix)$(GTK_APPDIR)" ]; then		      \
	     echo $(INSTALL_DIRS) "$(install_prefix)$(GTK_APPDIR)"	     ;\
		  $(INSTALL_DIRS) "$(install_prefix)$(GTK_APPDIR)"	     ;\
	   fi								     ;\
	   name2=xscreensaver-properties.desktop			     ;\
	   echo $(INSTALL_DATA) screensaver-properties.desktop		      \
		  $(install_prefix)$(GTK_APPDIR)/$$name2		     ;\
		$(INSTALL_DATA) screensaver-properties.desktop		      \
		  $(install_prefix)$(GTK_APPDIR)/$$name2		     ;\
	 fi


# xscreensaver.xpm
# into /usr/share/pixmaps/
install-gnome:: $(LOGO)
	@if [ "$(GTK_DATADIR)" != "" ]; then                                  \
           if [ ! -d "$(install_prefix)$(GTK_ICONDIR)" ]; then                \
             echo $(INSTALL_DIRS) "$(install_prefix)$(GTK_ICONDIR)"          ;\
                  $(INSTALL_DIRS) "$(install_prefix)$(GTK_ICONDIR)"          ;\
           fi                                                                ;\
	   target=xscreensaver.xpm                                           ;\
	   echo $(INSTALL_DATA) $(LOGO)					      \
	          $(install_prefix)$(GTK_ICONDIR)/$$target		     ;\
	        $(INSTALL_DATA) $(LOGO)					      \
	          $(install_prefix)$(GTK_ICONDIR)/$$target		     ;\
        fi

# ../utils/images/screensaver-*.png
# into /usr/share/xscreensaver/ui/
install-gnome::
	@if [ "$(GTK_DATADIR)" != "" ]; then                                  \
           if [ ! -d "$(install_prefix)$(GTK_UIDIR)" ]; then                  \
             echo $(INSTALL_DIRS) "$(install_prefix)$(GTK_UIDIR)"	     ;\
                  $(INSTALL_DIRS) "$(install_prefix)$(GTK_UIDIR)"	     ;\
           fi                                                                ;\
	   for target in $(GTK_ICONS) ; do				      \
	     dest=`echo $$target | sed 's@^.*/@@'`			     ;\
	     echo $(INSTALL_DATA) $$target				      \
	          $(install_prefix)$(GTK_UIDIR)/$$dest			     ;\
	          $(INSTALL_DATA) $$target				      \
	          $(install_prefix)$(GTK_UIDIR)/$$dest			     ;\
	   done								     ;\
        fi

# xscreensaver.ui
# into /usr/share/xscreensaver/ui/
install-gnome:: xscreensaver.ui
	@if [ "$(GTK_DATADIR)" != "" ]; then				      \
	  if [ ! -d "$(install_prefix)$(GTK_UIDIR)" ]; then		      \
	    echo $(INSTALL_DIRS) "$(install_prefix)$(GTK_UIDIR)"	     ;\
	         $(INSTALL_DIRS) "$(install_prefix)$(GTK_UIDIR)"	     ;\
	  fi								     ;\
	  target=xscreensaver.ui					     ;\
	  echo $(INSTALL_DATA) $(srcdir)/$$target			      \
	    $(install_prefix)$(GTK_UIDIR)/$$target			     ;\
	  if   $(INSTALL_DATA) $(srcdir)/$$target			      \
	    $(install_prefix)$(GTK_UIDIR)/$$target			     ;\
	    then true                                                        ;\
          else                                                                \
	    e=echo ;                                                          \
 $$e ""                                                                      ;\
 $$e "  ####################################################################";\
 $$e "  Warning: unable to install $$target into"			     ;\
 $$e "           $(install_prefix)$(GTK_UIDIR)/."			     ;\
 $$e "           Without this file, xscreensaver-settings will not"          ;\
 $$e "           be able to run properly."                                   ;\
 $$e "  ####################################################################";\
 $$e ""                                                                      ;\
             exit 1 ;                                                         \
	   fi ;                                                               \
	 fi


# screensaver-properties.desktop
# into /usr/share/applications/
uninstall-gnome::
	@if [ "$(GTK_DATADIR)" != "" ]; then				      \
          f=xscreensaver-properties.desktop                                  ;\
          echo rm -f $(install_prefix)$(GTK_APPDIR)/$$f                      ;\
               rm -f $(install_prefix)$(GTK_APPDIR)/$$f                      ;\
        fi

# xscreensaver.xpm
# into /usr/share/pixmaps/
uninstall-gnome::
	@if [ "$(GTK_ICONDIR)" != "" ]; then				      \
	  target=xscreensaver.xpm                                            ;\
	  echo rm -f $(install_prefix)$(GTK_ICONDIR)/$$target                ;\
	       rm -f $(install_prefix)$(GTK_ICONDIR)/$$target                ;\
	 fi

# ../utils/images/screensaver-*.png
# into /usr/share/xscreensaver/ui/
uninstall-gnome::
	@if [ "$(GTK_DATADIR)" != "" ]; then				      \
	   for target in $(GTK_ICONS) ; do				      \
	     dest=`echo $$target | sed 's@^.*/@@'`			     ;\
	     echo rm -f $(install_prefix)$(GTK_UIDIR)/$$dest                 ;\
	          rm -f $(install_prefix)$(GTK_UIDIR)/$$dest                 ;\
	   done								     ;\
        fi

# xscreensaver.ui
# into /usr/share/xscreensaver/ui/
uninstall-gnome::
	@if [ "$(GTK_DATADIR)" != "" ]; then				      \
	  for target in xscreensaver.ui xscreensaver-demo.ui ; do	      \
	    echo rm -f $(install_prefix)$(GTK_UIDIR)/$$target                ;\
	         rm -f $(install_prefix)$(GTK_UIDIR)/$$target                ;\
	   done								     ;\
	  rmdir "$(GTK_UIDIR)"						     ;\
	  rmdir "$(GTK_DATADIR)/xscreensaver"				     ;\
	  exit 0							     ;\
	 fi

# /usr/share/xscreensaver/glade/ no longer used
uninstall-gnome::
	-rm -rf $(GTK_DATADIR)/xscreensaver/glade


# /usr/share/xscreensaver/config/README
install-xml:
	@dest=$(install_prefix)$(HACK_CONF_DIR) ;			\
	 if [ ! -d $$dest ]; then					\
	   $(INSTALL_DIRS) $$dest ;					\
	 fi ;								\
	 src=$(srcdir)/../hacks/config ;				\
	 echo $(INSTALL_DATA) $$src/README $$dest/README ;		\
	      $(INSTALL_DATA) $$src/README $$dest/README


# /usr/share/xscreensaver/config/README
uninstall-xml:
	rm -f $(install_prefix)$(HACK_CONF_DIR)/README


##############################################################################
#
# Clean and dependencies
#
##############################################################################

clean:
	-rm -f *.o a.out core $(EXES) $(UTIL_EXES) $(SETUID_EXES) \
	$(DEMO_EXES) $(TEST_EXES) \
	XScreenSaver_ad.h XScreenSaver_Xm_ad.h

distclean: clean
	-rm -f \
	TAGS *~ "#"* *.rej *.orig \
	Makefile \
	XScreenSaver.ad \
	screensaver-properties.desktop \
	xscreensaver.pam

# Adds all current dependencies to Makefile
depend: XScreenSaver_ad.h XScreenSaver_Xm_ad.h
	$(DEPEND) -s '# DO NOT DELETE: updated by make depend'		    \
	$(DEPEND_FLAGS) --						    \
	$(INCLUDES_1) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) --    \
	$(SAVER_SRCS) $(CMD_SRCS)

# Adds some dependencies to Makefile.in -- not totally accurate, but pretty
# close.  This excludes dependencies on files in /usr/include, etc.  It tries
# to include only dependencies on files which are themselves a part of this
# package.
distdepend: check_men update_ad_version XScreenSaver_ad.h XScreenSaver_Xm_ad.h
	@echo updating dependencies in `pwd`/Makefile.in... ;		    \
	$(DEPEND) -w 0 -f - 						    \
	-s '# DO NOT DELETE: updated by make distdepend' $(DEPEND_FLAGS) -- \
	$(INCLUDES_1) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) $(X_CFLAGS) --    \
	$(SAVER_SRCS_1) $(SYSTEMD_SRCS) $(MOTIF_SRCS) $(GTK_SRCS)	    \
	$(PWENT_SRCS) $(PWHELPER_SRCS) $(KERBEROS_SRCS) $(PAM_SRCS)	    \
	$(LOCK_SRCS_1) $(DEMO_SRCS_1) $(CMD_SRCS)			    \
	$(TEST_SRCS) 2>/dev/null |					    \
	sort -d |							    \
	(								    \
	  awk '/^# .*Makefile.in ---/,/^# DO .*distdepend/' < Makefile.in ; \
	  sed -e '/^#.*/d'						    \
	      -e 's@ \./@ @g;s@ /[^ ]*@@g;/^.*:$$/d'			    \
	      -e 's@\.\./utils@$$(UTILS_SRC)@g'				    \
	      -e 's@ \([^$$]\)@ $$(srcdir)/\1@g'			    \
	      -e 's@$$.*\(XScreenSaver_ad\)@\1@g'			    \
	      -e 's@$$.*\(XScreenSaver_Xm_ad\)@\1@g'			    \
	      -e 's@ $$(srcdir)/\(.*config\.h\)@ \1@g' ;		    \
	  echo ''							    \
	) > /tmp/distdepend.$$$$ &&					    \
	mv /tmp/distdepend.$$$$ Makefile.in

# Updates the version number in the app-defaults file to be in sync with 
# the version number in version.h.  This is so people can tell when they
# have a version skew between the app-defaults file and the executable.
# Also update hacks/config/README in the same way.
update_ad_version::
	@								    \
  files="XScreenSaver.ad.in ../hacks/config/README ../OSX/bindist.rtf" ;    \
  U=$(UTILS_SRC)/version.h ;						    \
  V=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^ ]*\).*/\1/p' < $$U | head -1` ;	    \
  Y=`date '+%Y'` ;							    \
  D=`date '+%d-%b-%Y'` ;						    \
  for S in $$files ; do							    \
    T=/tmp/xs.$$$$ ;							    \
    sed -e "s/\(.*version \)[0-9][0-9]*\.[0-9.]*[ab]*[0-9]*\(.*\)/\1$$V\2/" \
        -e "s/\([0-9][0-9]-[A-Z][a-z][a-z]-[0-9][0-9][0-9]*\)/$$D/"	    \
        -e "s/\( [0-9][0-9][0-9][0-9]-\)[0-9][0-9][0-9][0-9] /\1$$Y /"	    \
      < $$S > $$T ;							    \
    if cmp -s $$S $$T ; then						    \
      true ;								    \
    else								    \
      cat $$T > $$S ;							    \
      echo "updated $$S to $$V $$D" ;					    \
    fi ;								    \
  done ;								    \
  rm $$T

TAGS: tags
tags:
	find $(srcdir) -name '*.[chly]' -print | xargs etags -a

list_tarfiles:
	@$(MAKE) XScreenSaver_ad.h XScreenSaver_Xm_ad.h 2>&1 >/dev/null
	@find $(TARFILES) -type f -print | sort

check_men:
	@badmen="" ;							\
	 for exe in $(EXES); do						\
	   if ! [ -f $(srcdir)/$$exe.man ]; then			\
	     badmen="$$badmen $$exe" ;					\
	   fi ;								\
	 done ;								\
	 if [ -n "$$badmen" ]; then					\
	   echo "" ;							\
	   echo "Warning: The following programs have no manuals:" ;	\
	   echo "" ;							\
	   for m in $$badmen ; do					\
	     echo "    $$m" ;						\
	   done ;							\
	   echo "" ;							\
	 fi


##############################################################################
#
# Dependencies on utils/
#
##############################################################################

$(UTILS_BIN)/overlay.o:		$(UTILS_SRC)/overlay.c
$(UTILS_BIN)/resources.o:	$(UTILS_SRC)/resources.c
$(UTILS_BIN)/usleep.o:		$(UTILS_SRC)/usleep.c
$(UTILS_BIN)/visual.o:		$(UTILS_SRC)/visual.c
$(UTILS_BIN)/xmu.o:		$(UTILS_SRC)/xmu.c
$(UTILS_BIN)/logo.o:		$(UTILS_SRC)/logo.c
$(UTILS_BIN)/minixpm.o:		$(UTILS_SRC)/minixpm.c
$(UTILS_BIN)/yarandom.o:	$(UTILS_SRC)/yarandom.c
$(UTILS_BIN)/colorbars.o:	$(UTILS_SRC)/colorbars.c
$(UTILS_BIN)/hsv.o:		$(UTILS_SRC)/hsv.c
$(UTILS_BIN)/colors.o:		$(UTILS_SRC)/colors.c
$(UTILS_BIN)/grabscreen.o:	$(UTILS_SRC)/grabscreen.c
$(UTILS_BIN)/utf8wc.o:		$(UTILS_SRC)/utf8wc.c
$(UTILS_BIN)/xftwrap.o:		$(UTILS_SRC)/xftwrap.c
$(UTILS_BIN)/font-retry.o:	$(UTILS_SRC)/font-retry.c
$(UTILS_BIN)/xshm.o:		$(UTILS_SRC)/xshm.c
$(UTILS_BIN)/aligned_malloc.o:	$(UTILS_SRC)/aligned_malloc.c


UTIL_OBJS	= $(UTILS_BIN)/overlay.o \
		  $(UTILS_BIN)/resources.o \
		  $(UTILS_BIN)/usleep.o \
		  $(UTILS_BIN)/visual.o \
		  $(UTILS_BIN)/xmu.o \
		  $(UTILS_BIN)/logo.o \
		  $(UTILS_BIN)/minixpm.o \
		  $(UTILS_BIN)/yarandom.o \
		  $(UTILS_BIN)/colorbars.o \
		  $(UTILS_BIN)/hsv.o \
		  $(UTILS_BIN)/colors.o \
		  $(UTILS_BIN)/grabscreen.o \
		  $(UTILS_BIN)/xft.o \
		  $(UTILS_BIN)/xftwrap.o \
		  $(UTILS_BIN)/utf8wc.o \
		  $(UTILS_BIN)/font-retry.o \
		  $(UTILS_BIN)/xshm.o \
		  $(UTILS_BIN)/aligned_malloc.o

$(UTIL_OBJS):
	cd $(UTILS_BIN) ; \
	$(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"


##############################################################################
#
# Compiling the daemon: xscreensaver, xscreensaver-gfx, xscreensaver-auth,
# xscreensaver-systemd and xscreensaver-comand.
#
##############################################################################

# How we build object files in this directory.
CC_ALL=$(INCLUDES) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(X_CFLAGS)
.c.o:
	$(CC) -c $(CC_ALL) $<

# # subprocs takes an extra -D option.
# subprocs.o: subprocs.c
# 	$(CC) -c $(CC_ALL) $(SUBP_DEFS) $<

# xscreensaver takes an extra -D option.
xscreensaver.o: xscreensaver.c
	$(CC) -c $(CC_ALL) $(DAEMON_DEFS) $<

xscreensaver-auth.o: XScreenSaver_ad.h
xscreensaver-auth.o: xscreensaver-auth.c
	$(CC) -c $(CC_ALL) $(AUTH_DEFS) $<

xscreensaver: $(DAEMON_OBJS)
	$(CC) $(LDFLAGS) -o $@ $(DAEMON_OBJS) $(DAEMON_LIBS)

xscreensaver-gfx.o: XScreenSaver_ad.h
xscreensaver-gfx.o: xscreensaver-gfx.c
	$(CC) -c $(CC_ALL) $(GFX_DEFS) $<
xscreensaver-gfx: $(GFX_OBJS)
	$(CC) $(LDFLAGS) -o $@ $(GFX_OBJS) $(GFX_LIBS)

dialog.o: dialog.c
	$(CC) -c $(CC_ALL) $(AUTH_DEFS) $<
xscreensaver-auth: $(AUTH_OBJS)
	$(CC) $(LDFLAGS) -o $@ $(AUTH_OBJS) $(AUTH_LIBS)

xscreensaver-systemd: $(SYSTEMD_OBJS)
	$(CC) $(LDFLAGS) -o $@ $(SYSTEMD_OBJS) $(SYSTEMD_LIBS) -lm

xscreensaver-command: $(CMD_OBJS)
	$(CC) $(LDFLAGS) -o $@ $(CMD_OBJS) $(CMD_LIBS)


##############################################################################
#
# Compiling the GUI, xscreensaver-settings
#
##############################################################################

demo-Gtk.o: XScreenSaver_ad.h
demo-Gtk.o: demo-Gtk.c
	$(CC) -c $(CC_ALL) $(GTK_DEFS) $<
demo-Gtk-conf.o: demo-Gtk-conf.c
	$(CC) -c $(CC_ALL) $(GTK_DEFS) $<

xscreensaver-settings-Gtk: $(GTK_OBJS)
	$(CC) $(LDFLAGS) -o $@ $(GTK_OBJS) $(GTK_LIBS)


demo-Xm.o: XScreenSaver_ad.h
demo-Xm.o: demo-Xm.c
	$(CC) -c $(CC_ALL) $(GTK_DEFS) $<
demo-Xm-widgets.o: demo-Xm-widgets.c
	$(CC) -c $(CC_ALL) $(GTK_DEFS) $<

xscreensaver-settings-Xm: $(MOTIF_OBJS)
	$(CC) $(LDFLAGS) -o $@ $(MOTIF_OBJS) $(MOTIF_LIBS)

xscreensaver-settings: @PREFERRED_DEMO_PROGRAM@
	@if [ "@PREFERRED_DEMO_PROGRAM@" = "" ]; then			\
	  echo "WARNING: neither GTK nor Motif are available,"		\
	       "therefore no xscreensaver-settings!"		      ; \
	  rm -f $@@EXEEXT@					      ;	\
	else								\
	  echo cp -p @PREFERRED_DEMO_PROGRAM@@EXEEXT@ $@@EXEEXT@      ;	\
	       cp -p @PREFERRED_DEMO_PROGRAM@@EXEEXT@ $@@EXEEXT@      ;	\
	fi


# How we build the default app-defaults file into the program.
#
XScreenSaver_ad.h::
	@TMP=/tmp/xs$$$$.h ;						\
	IN="XScreenSaver.ad" ;						\
	OUT=XScreenSaver_ad.h ;						\
	$(UTILS_SRC)/ad2c $$IN > $$TMP ;				\
	if cmp -s $$TMP $$OUT ; then					\
	  rm -f "$$TMP" ;						\
	else								\
	  echo $(UTILS_SRC)/ad2c $$IN \> $$OUT ;			\
	  mv $$TMP $$OUT ;						\
	fi

XScreenSaver_Xm_ad.h::
	@TMP=/tmp/xs$$$$.h ;						\
	IN="XScreenSaver-Xm.ad" ;					\
	OUT=XScreenSaver_Xm_ad.h ;					\
	$(UTILS_SRC)/ad2c $$IN > $$TMP ;				\
	if cmp -s $$TMP $$OUT ; then					\
	  rm -f "$$TMP" ;						\
	else								\
	  echo $(UTILS_SRC)/ad2c $$IN \> $$OUT ;			\
	  mv $$TMP $$OUT ;						\
	fi


# Replace this with @INTLTOOL_DESKTOP_RULE@ once
# https://bugs.launchpad.net/intltool/+bug/1749904 is fixed.
.desktop.in.desktop:   $(INTLTOOL_MERGE) $(top_srcdir)/po/*.po
	$(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) \
	  $(INTLTOOL_V_MERGE_OPTIONS) -d -u \
	  -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@


##############################################################################
#
# Debugging utilities, not built by default
#
##############################################################################

TESTPASS_OBJS = test-passwd.o test-passwd-b.o $(AUTH_OBJS_1)
TESTPATH_DEFS = -Dxscreensaver_auth_conv=test_auth_conv $(AUTH_DEFS)
test-passwd-b.o: XScreenSaver_ad.h
test-passwd-b.o: $(srcdir)/xscreensaver-auth.c
	$(CC) -c $(CC_ALL) $(TESTPATH_DEFS) $< -o $@
test-passwd: $(TESTPASS_OBJS)
	$(CC) $(LDFLAGS) -o $@ $(TESTPASS_OBJS) $(AUTH_LIBS)

test-uid: test-uid.o
	$(CC) $(LDFLAGS) -o $@ test-uid.o

TESTDPMS_LIBS = $(LIBS_PRE) $(XDPMS_LIBS) -lXt -lX11 -lXext $(LIBS_POST)
test-xdpms: test-xdpms.o blurb.o
	$(CC) $(LDFLAGS) -o $@ test-xdpms.o blurb.o $(TESTDPMS_LIBS)

TESTXINPUT_OBJS = test-xinput.o blurb.o xinput.o
TESTXINPUT_LIBS = $(LIBS_PRE) $(XDPMS_LIBS) -lXi -lXt -lX11 -lXext $(LIBS_POST)
test-xinput: $(TESTXINPUT_OBJS)
	$(CC) $(LDFLAGS) -o $@ $(TESTXINPUT_OBJS) $(TESTXINPUT_LIBS)

TESTXIN_LIBS = $(LIBS_PRE) $(XINERAMA_LIBS) -lXi -lXt -lX11 -lXext $(LIBS_POST)
test-xinerama: test-xinerama.o blurb.o
	$(CC) $(LDFLAGS) -o $@ test-xinerama.o blurb.o $(TESTXIN_LIBS)

TESTXKB_OBJS = test-xkb.o blurb.o
TESTXKB_LIBS = $(LIBS_PRE) $(XDPMS_LIBS) -lXi -lXt -lX11 -lXext $(LIBS_POST)
test-xkb: $(TESTXKB_OBJS)
	$(CC) $(LDFLAGS) -o $@ $(TESTXKB_OBJS) $(TESTXKB_LIBS)

test-vp: test-vp.o blurb.o
	$(CC) $(LDFLAGS) -o $@ test-vp.o blurb.o $(GFX_LIBS)

test-randr: test-randr.o blurb.o
	$(CC) $(LDFLAGS) -o $@ test-randr.o blurb.o $(GFX_LIBS)

TESTGRAB_LIBS = $(LIBS_PRE) -lXt -lX11 -lXext $(LIBS_POST)
test-grab: test-grab.o blurb.o
	$(CC) $(LDFLAGS) -o $@ test-grab.o blurb.o $(TESTGRAB_LIBS)

TEST_FADE_OBJS = test-fade.o fade.o blurb.o atoms.o clientmsg.o xinput.o \
	$(UTILS_BIN)/visual.o $(UTILS_BIN)/resources.o $(UTILS_BIN)/usleep.o \
	$(UTILS_BIN)/logo.o $(UTILS_BIN)/minixpm.o $(UTILS_BIN)/xshm.o \
	$(UTILS_BIN)/xmu.o $(UTILS_BIN)/aligned_malloc.o
test-fade: $(TEST_FADE_OBJS)
	$(CC) $(LDFLAGS) -o $@ $(TEST_FADE_OBJS) $(GFX_LIBS)

TEST_SCREENS_OBJS = test-screens.o screens.o blurb.o
test-screens: $(TEST_SCREENS_OBJS)
	$(CC) $(LDFLAGS) -o $@ $(TEST_SCREENS_OBJS) $(GFX_LIBS)

test-yarandom: test-yarandom.o blurb.o
	$(CC) -DTEST $(LDFLAGS) -o $@ test-yarandom.o blurb.o $(UTILS_BIN)/yarandom.o


XDPY_DEFS = -DHAVE_GLX $(CPPFLAGS) $(CFLAGS) $(X_CFLAGS)
XDPY_LIBS = $(LIBS_PRE) -lGL -lX11 -lXext $(LIBS_POST)
xdpyinfo.o: xdpyinfo.c
	$(CC) -c $(INCLUDES) $(XDPY_DEFS) $(srcdir)/xdpyinfo.c
xdpyinfo: xdpyinfo.o
	$(CC) $(LDFLAGS) -o $@ xdpyinfo.o $(XDPY_LIBS)

##############################################################################
#
# DO NOT DELETE: updated by make distdepend

demo-Gtk-conf.o: ../config.h
demo-Gtk-conf.o: $(srcdir)/demo-Gtk-conf.h
demo-Gtk-conf.o: $(UTILS_SRC)/xscreensaver-intl.h
demo-Gtk.o: XScreenSaver_ad.h
demo-Gtk.o: $(srcdir)/atoms.h
demo-Gtk.o: $(srcdir)/blurb.h
demo-Gtk.o: ../config.h
demo-Gtk.o: $(srcdir)/demo-Gtk-conf.h
demo-Gtk.o: $(srcdir)/remote.h
demo-Gtk.o: $(srcdir)/types.h
demo-Gtk.o: $(UTILS_SRC)/resources.h
demo-Gtk.o: $(UTILS_SRC)/usleep.h
demo-Gtk.o: $(UTILS_SRC)/version.h
demo-Gtk.o: $(UTILS_SRC)/visual.h
demo-Gtk.o: $(UTILS_SRC)/xmu.h
demo-Gtk.o: $(UTILS_SRC)/xscreensaver-intl.h
demo-Xm.o: XScreenSaver_Xm_ad.h
demo-Xm.o: XScreenSaver_ad.h
demo-Xm.o: $(srcdir)/atoms.h
demo-Xm.o: $(srcdir)/blurb.h
demo-Xm.o: ../config.h
demo-Xm.o: $(srcdir)/remote.h
demo-Xm.o: $(srcdir)/types.h
demo-Xm.o: $(UTILS_SRC)/resources.h
demo-Xm.o: $(UTILS_SRC)/version.h
demo-Xm.o: $(UTILS_SRC)/visual.h
demo-Xm.o: $(UTILS_SRC)/xmu.h
demo-Xm-widgets.o: ../config.h
passwd-helper.o: $(srcdir)/auth.h
passwd-helper.o: $(srcdir)/blurb.h
passwd-helper.o: ../config.h
passwd-kerberos.o: $(srcdir)/auth.h
passwd-kerberos.o: $(srcdir)/blurb.h
passwd-kerberos.o: ../config.h
passwd-pam.o: $(srcdir)/auth.h
passwd-pam.o: $(srcdir)/blurb.h
passwd-pam.o: ../config.h
passwd-pwent.o: $(srcdir)/auth.h
passwd-pwent.o: $(srcdir)/blurb.h
passwd-pwent.o: ../config.h
remote.o: $(srcdir)/atoms.h
remote.o: $(srcdir)/blurb.h
remote.o: $(srcdir)/clientmsg.h
remote.o: ../config.h
remote.o: $(srcdir)/remote.h
test-fade.o: $(srcdir)/atoms.h
test-fade.o: $(srcdir)/blurb.h
test-fade.o: ../config.h
test-fade.o: $(srcdir)/fade.h
test-fade.o: $(srcdir)/screens.h
test-fade.o: $(srcdir)/types.h
test-fade.o: $(UTILS_SRC)/resources.h
test-fade.o: $(srcdir)/xscreensaver.h
test-grab.o: $(srcdir)/blurb.h
test-grab.o: ../config.h
test-passwd.o: $(srcdir)/auth.h
test-passwd.o: $(srcdir)/blurb.h
test-passwd.o: ../config.h
test-randr.o: $(srcdir)/blurb.h
test-randr.o: ../config.h
test-screens.o: $(srcdir)/blurb.h
test-screens.o: ../config.h
test-screens.o: $(srcdir)/screens.h
test-screens.o: $(UTILS_SRC)/visual.h
test-uid.o: ../config.h
test-vp.o: $(srcdir)/blurb.h
test-vp.o: ../config.h
test-xdpms.o: $(srcdir)/blurb.h
test-xdpms.o: ../config.h
test-xinerama.o: $(srcdir)/blurb.h
test-xinerama.o: ../config.h
test-xinput.o: $(srcdir)/blurb.h
test-xinput.o: ../config.h
test-xinput.o: $(srcdir)/xinput.h
test-xkb.o: $(srcdir)/blurb.h
test-xkb.o: ../config.h
test-yarandom.o: $(srcdir)/blurb.h
test-yarandom.o: ../config.h
test-yarandom.o: $(UTILS_SRC)/yarandom.h
xscreensaver-command.o: $(srcdir)/atoms.h
xscreensaver-command.o: $(srcdir)/blurb.h
xscreensaver-command.o: ../config.h
xscreensaver-command.o: $(srcdir)/remote.h
xscreensaver-command.o: $(UTILS_SRC)/version.h
xscreensaver-systemd.o: $(srcdir)/blurb.h
xscreensaver-systemd.o: ../config.h
xscreensaver-systemd.o: $(UTILS_SRC)/queue.h
xscreensaver-systemd.o: $(UTILS_SRC)/version.h
xscreensaver-systemd.o: $(UTILS_SRC)/yarandom.h