XCOMM $XConsortium: Imakefile,v 1.33 91/07/17 00:48:06 gildea Exp $
XCOMM
XCOMM Here is an Imakefile for twm.  It depends on having TWMDIR defined
XCOMM in Imake.tmpl.  I like to use Imakefiles for everything, and I am sure
XCOMM other people do also, so perhaps you could do us all a favor and
XCOMM distribute this one.
XCOMM

#include "Imakefile.local"


#ifdef DEBUGPARSER
         YFLAGS = -d -t -v
DEBUGPARSERDEFINES = -DYYDEBUG=1
#else
         YFLAGS = -d
#endif
        DEPLIBS = $(DEPXMULIB) $(DEPEXTENSIONLIB) $(DEPXLIB)
       LINTLIBS = $(LINTXMU) $(LINTEXTENSIONLIB) $(LINTXLIB)

#ifdef XPM
      XPMLIBDIR = $(USER_XPMLIBDIR)
      XPMINCDIR = $(USER_XPMINCDIR) 

     XPMDEFINES = -DXPM
         XPMLIB = $(XPMLIBDIR) -lXpm
#else
      XPMLIBDIR = 
      XPMINCDIR = 

     XPMDEFINES = 
         XPMLIB = 
#endif

#ifdef JPEG
     JPEGLIBDIR = $(USER_JPEGLIBDIR)
     JPEGINCDIR = $(USER_JPEGINCDIR)

    JPEGDEFINES = -DJPEG
        JPEGLIB = $(JPEGLIBDIR) -ljpeg
#else
     JPEGLIBDIR = 
     JPEGINCDIR = 

    JPEGDEFINES = 
        JPEGLIB = 
#endif

#ifdef USE_GNU_REGEX
     GNUREGEXDEFS = -DUSE_GNU_REGEX
#else
     GNUREGEXDEFS =
#endif

#ifdef IMCONV
   IMCONVLIBDIR = $(USER_IMCONVLIBDIR)
   IMCONVINCDIR = $(USER_IMCONVINCDIR)

  IMCONVDEFINES = -DIMCONV
      IMCONVLIB = $(IMCONVLIBDIR) -lim -lsdsc
#else
   IMCONVLIBDIR = 
   IMCONVINCDIR = 

  IMCONVDEFINES = 
      IMCONVLIB = 
#endif

#if defined USE_M4 || defined USEM4
   M4LIBDIR =
   M4INCDIR =

  M4DEFINES = -DUSEM4
      M4LIB = $(M4LIBDIR)
#else
   M4LIBDIR = 
   M4INCDIR = 

  M4DEFINES = 
      M4LIB = 
#endif

#ifdef GNOME
  GNOMEDEFINES = -DGNOME
      GNOMESRC = gnome.c
      GNOMEOBJ = gnome.o
#else
  GNOMEDEFINES = 
      GNOMESRC = 
      GNOMEOBJ = 
#endif

#ifdef USE_SOUND
    SOUNDLIBDIR = $(USER_SOUNDLIBDIR)
    SOUNDINCDIR = $(USER_SOUNDINCDIR)

   SOUNDDEFINES = -DSOUNDS
       SOUNDLIB = $(SOUNDLIBDIR) -lrplay
       SOUNDSRC = sound.c
       SOUNDOBJ = sound.o
#else
    SOUNDLIBDIR = 
    SOUNDINCDIR = 

   SOUNDDEFINES = 
       SOUNDLIB = 
       SOUNDSRC = 
       SOUNDOBJ = 
#endif

#ifdef USE_SESSION
 SESSIONDEFINES = -DX11R6
     SESSIONSRC = session.c
     SESSIONOBJ = session.o
#else
 SESSIONDEFINES = 
     SESSIONSRC = 
     SESSIONOBJ = 
#endif

#ifdef I18N
   I18NDEFINES = -DI18N
#else
   I18NDEFINES =
#endif

#ifdef DEBUG
    CDEBUGFLAGS = -g -O0
#endif

#ifdef GCC_PEDANTIC
      CCOPTIONS = -pedantic -ansi -Wall \
		-Wshadow -Wstrict-prototypes -Wmissing-prototypes -Wundef \
		-aux-info $@.info
#endif

PIXMAPDIR = $(TWMDIR)/images
CONFDIR = $(TWMDIR)

LOCAL_LIBRARIES = $(M4LIB) $(IMCONVLIB) $(XPMLIB) $(JPEGLIB) $(XMULIB) $(XTOOLLIB) $(XLIB) $(SOUNDLIB)
        DEFINES = $(SIGNAL_DEFINES) $(M4DEFINES) $(GNOMEDEFINES) $(IMCONVDEFINES) $(XPMDEFINES) $(JPEGDEFINES) $(SESSIONDEFINES) $(SOUNDDEFINES)  $(I18NDEFINES) $(DEBUGPARSERDEFINES) $(GNUREGEXDEFS)

 EXTRA_INCLUDES = $(M4INCDIR) $(IMCONVINCDIR) $(XPMINCDIR) $(JPEGINCDIR) $(SOUNDINCDIR)

           SRCS = gram.c lex.c deftwmrc.c add_window.c gc.c list.c ctwm.c \
		parse.c menus.c events.c resize.c util.c version.c iconmgr.c \
		cursor.c icons.c workmgr.c windowbox.c clicktofocus.c vscreen.c \
		$(GNOMESRC) ${SESSIONSRC} ${SOUNDSRC}

           OBJS = gram.o lex.o deftwmrc.o add_window.o gc.o list.o ctwm.o \
		parse.o menus.o events.o resize.o util.o version.o iconmgr.o \
		cursor.o icons.o workmgr.o windowbox.o clicktofocus.o vscreen.o \
		$(GNOMEOBJ) ${SESSIONOBJ} ${SOUNDOBJ}

  PIXMAPFILES =	xpm/IslandD.xpm        xpm/mail1.xpm          xpm/xgopher.xpm \
		xpm/IslandW.xpm        xpm/nothing.xpm        xpm/xgrab.xpm \
		xpm/LRom.xpm           xpm/pixmap.xpm         xpm/xhpcalc.xpm \
		xpm/LRom1.xpm          xpm/postit.xpm         xpm/xmail.xpm \
		xpm/arthur.xpm         xpm/term.xpm           xpm/xman.xpm \
		xpm/cdrom1.xpm         xpm/unknown.xpm        xpm/xnomail.xpm \
		xpm/claude.xpm         xpm/unread.xpm         xpm/xrn.goodnews.xpm \
		xpm/datebook.xpm       xpm/xarchie.xpm        xpm/xrn.nonews.xpm \
		xpm/emacs.xpm          xpm/xcalc.xpm          xpm/xrn.xpm \
		xpm/hpterm.xpm         xpm/xcalc2.xpm         xpm/xterm.xpm \
		xpm/mail0.xpm          xpm/xedit.xpm          xpm/welcome.xpm \
		xpm/audio_editor.xpm   xpm/clipboard.xpm      xpm/ghostview.xpm \
		xpm/xirc.xpm           xpm/xmosaic.xpm        xpm/unknown1.xpm \
		xpm/xrn-compose.xpm    xpm/gnu-emacs1.xpm     xpm/gnu-emacs2.xpm \
		xpm/gnu-emacs3.xpm     xpm/gnu-emacs4.xpm     xpm/gnu-emacs5.xpm \
		xpm/gnu-emacs6.xpm     xpm/gnu-emacs7.xpm     xpm/skull.xpm \
		xpm/3D_Expand15.xpm    xpm/3D_Iconify15.xpm   xpm/3D_Lightning15.xpm \
		xpm/3D_Menu15.xpm      xpm/3D_Resize15.xpm    xpm/3D_Zoom15.xpm \
		xpm/background8.xpm    xpm/spider.xpm \
		xpm/ball1.xpm    xpm/ball12.xpm   xpm/ball4.xpm    xpm/ball7.xpm \
		xpm/ball10.xpm   xpm/ball2.xpm    xpm/ball5.xpm    xpm/ball8.xpm \
		xpm/ball11.xpm   xpm/ball3.xpm    xpm/ball6.xpm    xpm/ball9.xpm \
		xpm/supman1.xbm   xpm/supman4.xbm   xpm/supman7.xbm \
		xpm/supman2.xbm   xpm/supman5.xbm   xpm/supman8.xbm \
		xpm/supman3.xbm   xpm/supman6.xbm   xpm/supman9.xbm \
		xpm/nt1.xpm   xpm/nt2.xpm xpm/xftp.xpm xpm/welcome.xwd \
		3dcircle.xpm 3ddimple.xpm 3ddot.xpm 3dfeet.xpm 3dleopard.xpm \
		3dpie.xpm 3dpyramid.xpm 3dslant.xpm

SpecialObjectRule(parse.o,parse.c,'-DSYSTEM_INIT_FILE="$(DESTDIR)$(CONFDIR)/system.ctwmrc"' '-DPIXMAP_DIRECTORY="$(DESTDIR)$(PIXMAPDIR)"')
SpecialObjectRule(ctwm.o,ctwm.c,'-DPIXMAP_DIRECTORY="$(DESTDIR)$(PIXMAPDIR)"')
#if !HasPutenv
SpecialObjectRule(util.o,util.c,-DNOPUTENV)
#endif

depend:: lex.c gram.c deftwmrc.c 

NormalLibraryTarget(ctwm, libctwm.o)
ComplexProgramTarget(ctwm)
InstallNonExecFile(system.ctwmrc,$(CONFDIR))
#ifdef XPM
install::
	MakeDir($(DESTDIR)$(PIXMAPDIR))
	@case '${MFLAGS}' in *[i]*) set +e;; esac; \
	for i in xpm/?* ; do \
		(set -x; $(INSTALL) -c $(INSTLIBFLAGS) $$i $(DESTDIR)$(PIXMAPDIR)); \
	done
#endif

gram.h gram.c: gram.y
	$(YACC) $(YFLAGS) gram.y
	$(MV) y.tab.c gram.c
	$(MV) y.tab.h gram.h

clean::
	$(RM) y.tab.h y.tab.c lex.yy.c gram.h gram.c lex.c deftwmrc.c
	$(RM) *.[chy].flc *.orig *.rej

deftwmrc.c:  system.ctwmrc
	$(RM) $@
	echo '/* ' >>$@
	echo ' * This file is generated automatically from the default' >>$@
	echo ' * twm bindings file system.ctwmrc by the twm Imakefile.' >>$@
	echo ' */' >>$@
	echo '' >>$@
	echo 'char *defTwmrc[] = {' >>$@
	sed -e '/^#/d' -e 's/"/\\"/g' -e 's/^/    "/' -e 's/$$/",/' \
		system.ctwmrc >>$@
	echo '    (char *) 0 };' >>$@

GET_VERSION="`grep '^\#define VERSION_ID' version.c | sed -e 's/^[^"]*"\([^"]*\)".*$$/\1/'`"
dist:	clean gram.h gram.c lex.c deftwmrc.c
	version=$(GET_VERSION); \
	find * \! -path CVS/\* \! -path \*/CVS/\* \! -name CVS \
	       \! -name .cvsignore \! -name STATUS \! -name TABLE \
	       \! -name Makefile \
	       \! -name Imakefile.local \! -name descrip.local \
		| sort > ../ctwm-$$version.list; \
	tar --no-recursion --files-from ../ctwm-$$version.list -cvf - | \
	tardy --user_number=0  --user_name=ctwm \
	      --group_number=0 --group_name=ctwm \
	      --prefix=ctwm-$$version - |\
	gzip --best >../ctwm-$$version.tar.gz; \
	rm -f ../ctwm-$$version.list; \
	ls -l ../ctwm-$$version.tar.gz

rpm: hack_spec dist unhack_spec do_rpm
hack_spec:
	if grep 'Debian' /etc/issue > /dev/null 2> /dev/null; then \
	    mv ctwm.spec ctwm.spec.Redhat; \
	    sed -e '/^BuildRequires:/d' < ctwm.spec.Redhat > ctwm.spec; \
	fi
unhack_spec:
	if grep 'Debian' /etc/issue > /dev/null 2> /dev/null; then \
	    mv ctwm.spec.Redhat ctwm.spec; \
	fi
do_rpm:
	version=$(GET_VERSION); \
	rpmbuild -ta ../ctwm-$$version.tar.gz

# Make all source files depend on this file, so there will be no more
# surprises.

$(OBJS): Makefile

#define IHaveSpecialMakefileTarget
Makefile: Imakefile Imakefile.local
	echo "You need to run 'xmkmf'"
	exit 1
