--- Imakefile.orig	Thu Mar 22 02:36:43 2001
+++ Imakefile	Mon Jan 21 22:15:51 2002
@@ -25,8 +25,27 @@
 #endif
 #endif
 
+#if defined(FreeBSDBuildXlib) && FreeBSDBuildXlib
+        SUBDIRS = include config lib $(NLSSUBDIR) \
+		programs/Xserver/include \
+		programs/Xserver/hw/xfree86/parser \
+		programs/proxymngr programs/xrx
+#else
+#if defined(FreeBSDBuildXbin) && FreeBSDBuildXbin
+        SUBDIRS = include config lib $(NLSSUBDIR) \
+		programs/rgb \
+		programs \
+		fonts/util
+#else
+#if defined(FreeBSDBuildXfs) && FreeBSDBuildXfs
+        SUBDIRS = include config lib $(NLSSUBDIR) \
+                  programs programs/xfs
+#else
         SUBDIRS = include config lib $(NLSSUBDIR) \
                   programs $(FONTSDIR) $(DOCSDIR)
+#endif
+#endif
+#endif
   LNINSTALLDIRS = lib
 
 #if HasParallelMake
@@ -227,3 +246,98 @@
 #undef BootstrapCleanSubdirs
 #define BootstrapCleanSubdirs BOOTSTRAPSUBDIRS="$(BOOTSTRAPSUBDIRS)"
 BOOTSTRAPSUBDIRS = imake makedepend
+
+#if defined(BuildXF86DRI) && BuildXF86DRI
+FreeBSDPortsDRIDir = lib/GL/mesa/src/drv
+#endif
+#if defined(FreeBSDBuildXlib) && FreeBSDBuildXlib
+FreeBSDPortsInstallDir = include lib nls programs/Xserver/include \
+			programs/xrx/plugin \
+			programs/Xserver/hw/xfree86/parser
+#else
+#if defined(FreeBSDBuildXbin) && FreeBSDBuildXbin
+FreeBSDPortsInstallDir = lib programs/rgb programs fonts/util
+#else
+#if defined(FreeBSDBuildXxserv) && FreeBSDBuildXxserv
+FreeBSDPortsInstallDir = programs lib/font $(FreeBSDPortsDRIDir)
+#else
+#if defined(FreeBSDBuildXfs) && FreeBSDBuildXfs
+FreeBSDPortsInstallDir = programs/xfs
+#else
+#if defined(FreeBSDBuildXnest) && FreeBSDBuildXnest
+FreeBSDPortsInstallDir = programs/Xserver
+#else
+FreeBSDPortsInstallDir = $(SUBDIRS)
+#endif
+#endif
+#endif
+#endif
+#endif
+
+FreeBSDPortsBuild::
+	@for dir in $(SUBDIRS); do \
+	   (cd $$dir && $(MAKE) $(MFLAGS) $(PARALLELMFLAGS) all); \
+	done	
+
+FreeBSDPortsInstall::
+	@for dir in $(FreeBSDPortsInstallDir); do \
+	   (cd $$dir && $(MAKE) $(MFLAGS) $(PARALLELMFLAGS) install); \
+	done
+
+FreeBSDPortsInstall.man::
+	@for dir in $(FreeBSDPortsInstallDir); do \
+	   (cd $$dir && $(MAKE) $(MFLAGS) $(PARALLELMFLAGS) install.man); \
+	done
+
+# followings are in XBMPICS and XPMPICS at programs/Xserver/hw/xfree86/xf86cfg
+XLIBADDFILES1= \
+	card.xbm\
+	keyboard.xbm\
+	monitor.xbm\
+	mouse.xbm\
+	left.xbm\
+	right.xbm\
+	up.xbm\
+	down.xbm\
+	wider.xbm\
+	narrower.xbm\
+	shorter.xbm\
+	taller.xbm
+XLIBADDFILES2= \
+	card.xpm\
+	computer.xpm\
+	keyboard.xpm\
+	monitor.xpm\
+	mouse.xpm
+
+installXlib::
+	(cd programs/proxymngr && \
+	  $(INSTALL) -c $(INSTINCFLAGS) PM.h $(INCROOT)/X11/PM && \
+	  $(INSTALL) -c $(INSTINCFLAGS) PMproto.h $(INCROOT)/X11/PM)
+	(cd programs/Xserver/hw/xfree86/xf86cfg && \
+	  $(INSTALL) -c $(INSTINCFLAGS) $(XLIBADDFILES1) $(INCROOT)/X11/bitmaps && \
+	  $(INSTALL) -c $(INSTINCFLAGS) $(XLIBADDFILES2) $(INCROOT)/X11/pixmaps)
+
+installXnest::
+	(cd programs/Xserver && \
+	  $(INSTALL) -c $(INSTALLFLAGS) $(INSTPGMFLAGS) Xnest $(DESTDIR)$(BINDIR)/Xnest)
+
+installXnest.man::
+	(cd programs/Xserver/hw/xnest && $(MAKE) install.man)
+
+installXprt::
+	(cd programs/Xserver && \
+	  $(INSTALL) -c $(INSTALLFLAGS) $(INSTPGMFLAGS) Xprt $(DESTDIR)$(BINDIR)/Xprt)
+
+installXvfb::
+	(cd programs/Xserver && \
+	  $(INSTALL) -c $(INSTALLFLAGS) $(INSTPGMFLAGS) Xvfb $(DESTDIR)$(BINDIR)/Xvfb)
+
+installXvfb.man::
+	(cd programs/Xserver/hw/vfb && $(MAKE) install.man)
+
+installXserver.man::
+	(cd programs/Xserver && $(MAKE) install.man)
+
+NOOP:
+	@echo :
