# @MODE_FUNDAMENTAL@ -*- Mode: Makefile -*-
# Generated automatically from Rules.in by configure.
######################################################################

# Taken from automake:
DEPS_MAGIC := $(shell mkdir .deps .list > /dev/null 2>&1 || :)

# Remove spaces that typically confuse GNUMake and the people using it:
PROG:=               $(shell echo '$(PROG)'               | sed 's@[ 	]@@g')
LIBRARY:=            $(shell echo '$(LIBRARY)'            | sed 's@[ 	]@@g')
USE_ERWIN:=          $(shell echo '$(USE_ERWIN)'          | sed 's@[ 	]@@g')
USE_SYMBOL:=         $(shell echo '$(USE_SYMBOL)'         | sed 's@[ 	]@@g')
COUNT_BUILD:=        $(shell echo '$(COUNT_BUILD)'        | sed 's@[ 	]@@g')
ERR_SUBSYSTEM:=      $(shell echo '$(ERR_SUBSYSTEM)'      | sed 's@[ 	]@@g')
ERWIN_MANUAL_FLAGS:= $(shell echo '$(ERWIN_MANUAL_FLAGS)' | sed 's@[ 	]@@g')
LINK_CXX:=           $(shell echo '$(LINK_CXX)'           | sed 's@[ 	]@@g')
INSTALL_ERWIN:=      $(shell echo '$(INSTALL_ERWIN)'      | sed 's@[ 	]@@g')
INSTALL_SYMBOL:=     $(shell echo '$(INSTALL_SYMBOL)'     | sed 's@[ 	]@@g')
INSTALL_FAILURE:=    $(shell echo '$(INSTALL_FAILURE)'    | sed 's@[ 	]@@g')
INSTALL_VERSION:=    $(shell echo '$(INSTALL_VERSION)'    | sed 's@[ 	]@@g')
GLOBAL_PREFIX:=      $(shell echo '$(GLOBAL_PREFIX)'      | sed 's@[ 	]@@g')

# global prefix:
ifeq ($(GLOBAL_PREFIX),)
ifneq ($(PROG),)
GLOBAL_PREFIX:= $(shell echo $(PROG) | tr - _)_
else
GLOBAL_PREFIX:= $(PROGNAME)_
endif
endif

ifndef PROG_EXE
PROG_EXE= $(PROG)
endif

ifeq ($(INCLUDE_SUBDIR),)
INCLUDE_SUBDIR=$(PROGNAME)
endif

# symbols:
ifeq ($(USE_SYMBOL),1)
USE_SYMBOL:=sym_
endif

ifneq ($(USE_SYMBOL),)
ifeq ($(LIBRARY),)
FILE_SYMBOL=symbol
SUBDIR_SYMBOL=
DIR_SYMBOL=
DYN_SYMBOL=0
PREFIX_SYMBOL=
SYMBOL_H_LOCAL=/dev/null
else
PREFIX_SYMBOL=$(GLOBAL_PREFIX)
ifneq ($(INSTALL_SYMBOL),1)
FILE_SYMBOL=symbol
SUBDIR_SYMBOL=
DIR_SYMBOL=
DYN_SYMBOL=0
SYMBOL_H_LOCAL=/dev/null
else
FILE_SYMBOL=symbol
SUBDIR_SYMBOL=$(INCLUDE_SUBDIR)/
DIR_SYMBOL=include/$(SUBDIR_SYMBOL)
DYN_SYMBOL=1
SYMBOL_H_LOCAL=symbol.h
$(SYMBOL_H_LOCAL): $(DIR_SYMBOL)$(FILE_SYMBOL).h
endif
endif
endif

ifeq ($(LIBRARY),)
FAILURE_H=failure.h
FAILURE_H_LOCAL=failure.dummy
else
ifeq ($(INSTALL_FAILURE),0)
FAILURE_H=failure.h
FAILURE_H_LOCAL=failure.dummy
else
FAILURE_H_LOCAL=failure.h
FAILURE_H=include/$(INCLUDE_SUBDIR)/failure.h
$(FAILURE_H_LOCAL): $(FAILURE_H)
endif
endif

PATH_SYMBOL=$(DIR_SYMBOL)$(FILE_SYMBOL)

ifneq ($(USE_SYMBOL),)
LOCAL_FILES+= $(PATH_SYMBOL).inc
ifeq ($(NO_SYMBOL_C),)
GENCXXMODULES += symbol
endif
endif

ifneq ($(MAKEFAILURE),)
LOCAL_FILES += $(FAILURE_H)
endif

# CXXMODULES:
ifeq ($(CXX_EXT),cpp)
GENCPPMODULES += $(GENCXXMODULES)
else
ifeq ($(CXX_EXT),c)
GENCMODULES += $(GENCXXMODULES)
else
GENCCMODULES += $(GENCXXMODULES)
endif
endif

VERSION_NUMERIC = "`$(VERSION_TOOL) -read $(BASE_VERSION_FILE) -read-suffix $(SUB_VERSION_FILE) || (cat .base-version .sub-version | xargs echo | sed 's@  *@.@g')`"

# build counter:
ifeq ($(COUNT_BUILD),1)
#VERSION = "$(BASE_VERSION) (build $(SUB_VERSION))"
VERSION = "`$(VERSION_TOOL) -read $(BASE_VERSION_FILE) || echo '$(BASE_VERSION)'` (build $(SUB_VERSION))"
else
#VERSION = $(BASE_VERSION).$(SUB_VERSION)
VERSION = $(VERSION_NUMERIC)
endif

ifeq ($(LIBRARY),)
WINDIR_PROGNAME = $(WINDIR)/$(PROGNAME)
else
WINDIR_PROGNAME = $(WINDIR)/lib$(LIBRARY)
endif

ifeq ($(WINDOWS_SUBSYSTEM),)
WINDOWS_SUBSYSTEM=console
endif

# PAG
ifeq ($(PAG_ITERATOR),)
	PAG_ITERATOR:= iterate1.t
endif

PAG_SPECDIR=spec
PAG_MAKEDIR=.
ifneq ($(PAG_ANALYSIS),)
	SOURCES+=spec/$(PAG_ANALYSIS).set
ifneq ($(PAG_OPTLA_USE_M4),)
	SOURCES+=spec/$(PAG_ANALYSIS).optla.m4
else
	SOURCES+=spec/$(PAG_ANALYSIS).optla
endif
CPPFLAGS += -I./$(PAG_MAKEDIR)/src
EXTRA_WINCPPFLAGS += -I$(PAG_MAKEDIR)\src
endif


GLOBAL_PREFIX_UC:= $(shell echo $(GLOBAL_PREFIX) | tr [a-z] [A-Z])

ifeq ($(LIBRARY),)
LIB_GLOBAL_PREFIX:=
LIB_GLOBAL_PREFIX_UC:=
else
LIB_GLOBAL_PREFIX:=    $(GLOBAL_PREFIX)
LIB_GLOBAL_PREFIX_UC:= $(GLOBAL_PREFIX_UC)
endif

ifeq ($(PROG),)
PROG_GLOBAL_PREFIX:=
PROG_GLOBAL_PREFIX_UC:=
else
PROG_GLOBAL_PREFIX:=    $(GLOBAL_PREFIX)
PROG_GLOBAL_PREFIX_UC:= $(GLOBAL_PREFIX_UC)
endif

# For compatility reasons, we have USE_LIBERROR and ERROR_SUBSYSTEM, which are the same.
ifneq ($(USE_LIBERROR),)
  ERROR_SUBSYSTEM=$(USE_LIBERROR)
endif

ifeq ($(ERROR_SUBSYSTEM),)
  ERR_SUBSYSTEM := 0
else
  ifeq ($(ERROR_SUBSYSTEM),1)
    ifeq ($(LIBRARY),)
      ERR_SUBSYSTEM := 0
    else
      ERR_SUBSYSTEM := $(GLOBAL_PREFIX)err_subsystem
    endif
  else
    ERR_SUBSYSTEM := $(ERROR_SUBSYSTEM)err_subsystem
  endif
endif

ifeq ($(PROG),)
  ifneq ($(LIBRARY),)
    ifeq ($(INSTALL_VERSION),0)
      VERSION_H        = version.h
      INC_VERSION_H    = version.h
      VERSION_H_LOCAL  = version.dummy
    else
      VERSION_H        = include/$(INCLUDE_SUBDIR)/version.h
      INC_VERSION_H    = $(INCLUDE_SUBDIR)/version.h
      VERSION_H_LOCAL  = version.h
    endif
  endif
else
  VERSION_H       = version.h
  INC_VERSION_H   = version.h
  VERSION_H_LOCAL = version.dummy
endif

LOCAL_FILES+= .base-version \
              .sub-version

.PRECIOUS: $(VERSION_H) $(VERSION_H_LOCAL)

ifeq ($(USE_ERWIN),)

  LDFLAGS   = -L/home/ht/opt/lib -L/local/lib $(EXTRA_LDFLAGS)
  LOADLIBES = $(EXTRA_LIBS) -lerror -lm 

  ERWIN_LIB_INFIX      =
  ERWIN_FILE_PREFIX    =
  ERWIN_NAME_PREFIX    =
  ERWIN_NAME_PREFIX_UC =

else

  # if erwin is used, infer prefix for libraries, but for programs, only
  # use a prefix if defined explicitly by the user:
  ifeq ($(PROG),)
    ifeq ($(USE_ERWIN),1)
      USE_ERWIN := $(GLOBAL_PREFIX)
    endif
  endif

  ifeq ($(USE_ERWIN),1)
    ERWIN_LIB_INFIX      =
    ERWIN_FILE_PREFIX    =
    ERWIN_NAME_PREFIX    =
    ERWIN_NAME_PREFIX_UC =
  else
    ERWIN_LIB_INFIX      = $(shell echo $(USE_ERWIN) | tr [A-Z] [a-z] | sed 's@_@@g')
    ERWIN_FILE_PREFIX    = $(PROGNAME)/
    ERWIN_NAME_PREFIX    = $(USE_ERWIN)
    ERWIN_NAME_PREFIX_UC = $(shell echo $(USE_ERWIN) | tr [a-z] [A-Z])
  endif

  CPPFLAGS += -D$(ERWIN_NAME_PREFIX_UC)ERWIN_COMPILING

  LDFLAGS   = -L/home/ht/opt/lib -L/local/lib $(EXTRA_LDFLAGS) -L$(top_srcdir)/erwin/lib
  LOADLIBES = $(EXTRA_LIBS) -l$(ERWIN_LIB_INFIX)erwin -lerror -lm 

endif

ifneq ($(USE_PAG),)
    CPPFLAGS += -I${PAGPATH}/include/pag \
                -I${PAGPATH}/include/pag/analyzer \
                -I${PAGPATH}/include/pag/frontend/${PAG_FRONTEND}
    LDFLAGS  += -L${PAGPATH}/lib/pag
endif

ifeq (error ,$(subst %,@,%WIN_LIBS%))
WIN_LIBS=
else
WIN_LIBS=error 
endif

ifeq (,$(subst %,@,%WIN_LIBS_SYSTEM%))
WIN_LIBS_SYSTEM=
else
WIN_LIBS_SYSTEM=
endif

-include $(DEP_FILES)

all: all-subdirs
	$(MAKE) all-post-subdirs
	$(MAKE) all-post-local

help: dummy less-help
	-@echo "Building:"
	-@echo "    make depend        - builds dependency info for make"
	-@echo "    make               - builds everything"
	-@echo "Clean-Up:"
	-@echo "    make clean         - removes everything made by 'make'"
	-@echo "    make distclean     - removes everything made by 'configure && make'"
	-@echo "    make develclean    - removes everything not in the CVS (you need a"
	-@echo "                         ./cvscompile or equivalent after this)"
	-@echo "    make sweep         - removes back-up files (*.bak, *~, etc.)"
	-@echo "Tests:"
	-@echo "    make run           - runs programs (probably needs 'make all')"
	-@echo "    make test          - runs tests (probably needs 'make all')"
	-@echo "Installation:"
ifeq ($(RELEASE),1)
	-@echo "    make install       - installs the package (honours DEST variable"
	-@echo "                         as an additional prefix; strips executables)"
	-@echo "    make install-no-strip"
	-@echo "                       - same as install, but does not strip executables"
else
	-@echo "    make install       - installs the package (honours DEST variable"
	-@echo "                         as an additional prefix)"
	-@echo "    make install-strip - same as install, but strips the executables"
endif
	-@echo "    make uninstall     - uninstalls the package."
	-@echo "    Note: 'prefix' is currently '$(prefix)'."
	-@echo "Statistics:"
	-@echo "    make list-sources  - creates a list of source files (in .list/sources)"
	-@echo "    make list-files    - creates a list of some more source files (.list/files)"
	-@echo "    make count         - counts source files with wc"
	-@echo "Packages (the *gz targets exist as *bz2, too):"
	-@echo "    make targz         - gzipped tarball archive of the distclean project"
	-@echo "    make bin-targz     - gzipped tarball archive of the binary package"
	-@echo "                         'MORE_PACKAGES': dirs of other pkgs to include"
	-@echo "    make help-archive  - see more options related to tarballs, ISO images, etc."
	-@echo "    Note: 'ARCHIVE_SUFFIX' is currently '$(ARCHIVE_SUFFIX)'."
	-@echo "       => 'ARCHIVE'        is currently '$(ARCHIVE)'."
	-@echo "Other OSs:"
	-@echo "    make wincopyall    - copies the sources to be compiled under Win"
	-@echo "    Note: 'WINDIR'    is currently '$(WINDIR)'."
	-@echo "          'WINPREFIX' is currently '$(WINPREFIX)'."
	@$(MAKE) more-help 2>/dev/null
	-@echo "Note: 'make' is currently '$(MAKE)'."

.PHONY: more-help less-help

more-help: dummy

less-help: dummy

.PHONY: help-archive help-arch help-tar help-iso help-targz help-tarbz2
help-archive:
	-@echo "Source Code Trees:"
	-@echo "    make archive       - prepares a directory with a source distro"
	-@echo "Binary Trees:"
	-@echo "    make bin-archive   - prepares a directory with a binary distro"
	-@echo "Source Code Tarballs:"
	-@echo "    make tar           - tarball archive of the distclean project"
	-@echo "                         'TARFLAGS' sets additional options for 'tar'"
	-@echo "                         'TAREXT'   sets the extension to use"
	-@echo "    make targz        == make tar TARFLAGS=z TAREXT=.tar.gz"
	-@echo "    make tgz          == make tar TARFLAGS=z TAREXT=.tgz"
	-@echo "    make tarbz2       == make tar TARFLAGS=j TAREXT=.tar.bz2"
	-@echo "    make tbz          == make tar TARFLAGS=j TAREXT=.tbz"
	-@echo "Binary Tarballs:"
	-@echo "    make bin-tar       - tarball archive of the binary package"
	-@echo "                         'TARFLAGS' and 'TAREXT' as above"
	-@echo "                         'MORE_PACKAGES': dirs of other pkgs to include"
	-@echo "    make bin-{targz,tgz,tarbz2,tbz}"
	-@echo "                       - analogous to the source code versions"
	-@echo "Binary ISO Images"
	-@echo "    make bin-iso       - uses mkisofs to make an ISO image"
ifneq ($(DEFAULT_DISTRO),)
	-@echo "Default distribution is '$(DEFAULT_DISTRO)':"
	-@echo "    make iso          == make $(DEFAULT_DISTRO)-iso"
	-@echo "    make tar          == make $(DEFAULT_DISTRO)-tar"
	-@echo "    make targz        == make $(DEFAULT_DISTRO)-targz"
	-@echo "    ..."
endif
	-@echo "Note: 'ARCHIVE_SUFFIX' is currently '$(ARCHIVE_SUFFIX)'."
	-@echo "   => 'ARCHIVE'        is currently '$(ARCHIVE)'."

.PHONY: help-archives
help-archives: help-archive

.PHONY: help-arch
help-arch: help-archive

.PHONY: help-tar
help-tar: help-archive

.PHONY: help-iso
help-iso: help-archive

.PHONY: help-targz
help-targz: help-archive

.PHONY: help-tarbz2
help-tarbz2: help-archive

# Make init.  This is a bit tricky.  We need some files, but do not
# want them to trigger regeneration of Makefile.  Further, it's
# enough to create them when make is invoked for the first time.
# We use an ifneq with wildcard for that.  Other parts of the file
# use that techinique, too.

ifneq ($(FAILURE_H),$(wildcard $(FAILURE_H)))
Makefile: failure.h.stamp
endif
ifneq ($(FAILURE_H_LOCAL),$(wildcard $(FAILURE_H_LOCAL)))
Makefile: failure.h.stamp
endif

ifneq ($(VERSION_H),$(wildcard $(VERSION_H)))
Makefile: $(VERSION_H) 
endif

all-post:

all-post-local: doc

%.inc: %.gperf
	true
	( LINE="`grep -i 'Command-line:  *gperf' $< | sed 's@^.* gperf @gperf @' | sed 's@ *\*/ *$$@@'`" ; \
      if test "x$$LINE" = "x"; then LINE="$(GPERF)"; fi ; \
	  $${LINE} $< > $@.new \
    )
	$(MOVE) $@

.PRECIOUS: Makefile configure

.PRECIOUS: $(addsuffix .dvi, $(ALLLATEXMODULES))
%.dvi: %.tex
	$(LATEX) $< < /dev/null || ( rm -f $@ ; false )

%.ps: %.dvi
	$(DVIPS) -o $@ $< || ( rm -f $@ ; false )

depend: depend-local depend-subdirs

clean-depend: clean-depend-subdirs clean-depend-all-local clean-depend-local

clean-sub: clean-sub-subdirs clean-all-local clean-local

run-sub: run-sub-subdirs run-local

test-sub: test-sub-subdirs test-local

clean: clean-sub-top

run: run-sub-top

test:
	$(MAKE) test-sub-top || (echo "***ERROR***: Test failed." ; false)

distclean: distclean-subdirs
	$(MAKE) sweep-local sweep-all-local \
            clean-depend-local clean-depend-all-local \
            clean-local clean-all-local \
            distclean-local distclean-all-local

sweep: sweep-all-local sweep-local sweep-subdirs

develclean: develclean-subdirs
	$(MAKE) sweep-local sweep-all-local \
            clean-local clean-all-local \
            clean-depend-local clean-depend-all-local \
            distclean-local distclean-all-local \
	        develclean-local develclean-all-local

.PHONY: depend clean sweep distclean develclean clean-depend
.PHONY: depend-local clean-local sweep-local distclean-local develclean-local clean-depend-local
.PHONY: distclean-all-local sweep-all-local clean-all-local clean-depend-all-local
.PHONY: develclean-all-local
.PHONY: all-subdirs all-post-subdirs depend-subdirs clean-subdirs sweep-subdirs distclean-subdirs develclean-subdirs
.PHONY: clean-depend-subdirs
.PHONY: run-subdirs run-sub-subdirs run-top run-local run
.PHONY: test-subdirs test-sub-subdirs test-top test-local test
.PHONY: all-top all-post all-post-local depend-top all notall do-it-all count clean-sub-top clean-sub
.PHONY: clean-sub-subdirs doc

doc: dummy

.PHONY: dep
dep: depend

# list-files
.PHONY: list-files list-files-local list-files-subdirs \
        list-files-topdir list-files-make list-files-erwin

list-files: list-files-local list-files-subdirs list-files-topdir \
            list-files-makesub list-files-erwin
	cat .list/files.local .list/files.subdirs .list/files.erwin \
        .list/files.topdir .list/files.makesub > .list/files
	(echo "LIST_FILES:= \\" ; \
       (cat .list/files.local .list/files.subdirs | perl -pe 'chomp; s@.*@    $$& \\\n@' ) ; \
       echo ) > .list/files.make

list-files-topdir: list-sources-topdir
	( cat .list/sources.topdir && \
      if test "x$(top_srcdir)" = "x$(srcdir)"; then \
          for i in $(TOPDIR_FILES); do echo $$i; done; \
      fi ) > .list/files.topdir

list-files-makesub: list-sources-makesub
	( cat .list/sources.makesub && \
      if test "x$(top_srcdir)" = "x$(srcdir)"; then \
          for i in $(MAKESUB_FILES); do echo $$i; done; \
      fi ) > .list/files.makesub

list-files-local: list-sources-local
	(cat .list/sources.local && \
         for i in $(LOCAL_FILES) $(EXTRA_FILES); do echo $$i; done ) > .list/files.local

list-files-erwin:
ifeq ($(USE_ERWIN),)
	cat /dev/null > .list/files.erwin
else
	cd erwin && $(MAKE) FILE_PREFIX=erwin/ listfiles
	cat erwin/listfiles > .list/files.erwin
endif

# list-sources
.PHONY: list-sources list-sources-local list-sources-subdirs \
        list-sources-topdir list-sources-makesub

# the Erwin sources and the make sources are completely generated or belong to another
# project, so we will not take them into account for the sources list.
list-sources: list-sources-local list-sources-subdirs list-sources-topdir
	cat .list/sources.local .list/sources.subdirs .list/sources.topdir > .list/sources
	(echo "LIST_SOURCES:= \\" ; \
       (cat .list/sources.local .list/sources.subdirs | perl -pe 'chomp; s@.*@    $$& \\\n@' ) ; \
       echo ) > .list/sources.make

list-sources-topdir:
	( if test "x$(top_srcdir)" = "x$(srcdir)"; then \
          for i in $(TOPDIR_SOURCES); do echo $$i; done; \
      fi ) > .list/sources.topdir

list-sources-makesub:
	( if test "x$(top_srcdir)" = "x$(srcdir)"; then \
          for i in $(MAKESUB_SOURCES); do echo $$i; done; \
      fi ) > .list/sources.makesub

list-sources-local:
	sources='$(SOURCES) $(HEADERS)'; for i in Makefile.in $$sources; do echo $$i; done > .list/sources.local

# archives:

# The second line, 'for ... ' makes sure that $$ARCHIVE_SRC is not empty, since
# if it is, the shell will have a syntax error.  This hopefully protects the
# rm -rf from doing rm -rf ./ by accident.  Speaking of which, the ./ protects
# the rm -rf from easily escaping from this directory in case of a nasty bug.
# It unfortunately prevents archive/$(ARCHIVE_SRC) to be outside this directory.
.PHONY: clean-archive
clean-archive: dummy
	-rm -rf ./archive

.PHONY: clean-tar
clean-tar: dummy
	-rm -rf ./packages

# src:

.PHONY: clean-src-archive
clean-src-archive: clean-archive

.PHONY: clean-src-tar
clean-src-tar: clean-tar

.PHONY: src-archive
src-archive: list-files clean-archive nmakefile
	test -n "$(ARCHIVE_SRC)"
	mkdir ./archive
	ARCHIVE_SRC=archive/$(ARCHIVE_SRC); \
	mkdir ./$$ARCHIVE_SRC || exit 1 ; \
	for i in `grep '/' .list/files | sed 's@/[^/]*$$@@' | sort -u`; do \
	    $(MKINSTALLDIRS) ./$$ARCHIVE_SRC/$$i; \
	done ; \
	for i in `cat .list/files` nmakefile; do \
	    cp $$i ./$$ARCHIVE_SRC/$$i; \
	done

.PHONY: src-tar src-targz src-tgz src-tarbz2 src-tbz
src-tar: archive
	-mkdir ./packages
	ARCHIVE_SRC=$(ARCHIVE_SRC); \
	TARBALL_SRC=$(TARBALL_SRC); \
	cd archive && tar cv$(TARFLAGS)f ../packages/$${TARBALL_SRC}$(TAREXT) $${ARCHIVE_SRC}

src-targz: dummy
	$(MAKE) src-tar TARFLAGS=z TAREXT=.tar.gz

src-tgz: dummy
	$(MAKE) src-tar TARFLAGS=z TAREXT=.tgz

src-tarbz2: dummy
	$(MAKE) src-tar TARFLAGS=j TAREXT=.tar.bz2

src-tbz: dummy
	$(MAKE) src-tar TARFLAGS=j TAREXT=.tbz

# binary:
# Also double check that $$ARCHIVE_BIN is non-empty (which should generate a syntax error):
.PHONY: clean-bin-archive
clean-bin-archive: clean-archive

.PHONY: clean-bin-tar
clean-bin-tar: clean-tar

.PHONY: bin-install-script
bin-install-script: dummy
	ARCHIVE_BIN=archive/$(ARCHIVE_BIN); \
	    $(PERL_OR_ERR) $(top_srcdir)/make/mkbininstall.pl \
	        exec_prefix='$${prefix}' \
	        bindir='$${exec_prefix}/bin' \
	        libdir='$${exec_prefix}/lib' \
	        libexecdir='$${exec_prefix}/libexec' \
	        datadir='$${prefix}/share' \
	        includedir='$${prefix}/include' \
	        sysconfdir='$${prefix}/etc' \
	        localstatedir='$${prefix}/var' \
	        sharedstatedir='$${prefix}/com' \
	        packagedocdir='$${datadir}/doc/packages' \
	        archive/$(ARCHIVE_BIN)/data/*$(ARCHIVE_TAREXT) \
	        archive/$(ARCHIVE_BIN)-raw/bindir/*-version \
	        VERSION=$(VERSION) \
	        PROGNAME=$(PROGNAME) \
	        SIZE_KB=`expr "x\`du -s $${ARCHIVE_BIN}-raw\`" : 'x\([1-9][0-9]*\)'` \
	        COPYING=$${ARCHIVE_BIN}/COPYING \
	        > ./$${ARCHIVE_BIN}/install-sh
	chmod 755 ./archive/$(ARCHIVE_BIN)/install-sh
	( echo "This is $(PROGNAME)-"$(VERSION)"." ; echo ; \
	  echo "For installation of this binary package, please invoke 'sh ./install-sh'" ; \
	  echo "You will be able to set the installation directories interactively." ) \
	    > ./archive/$(ARCHIVE_BIN)/INSTALL

.PHONY: bin-archive
bin-archive: clean-bin-archive
	test -n "$(ARCHIVE_BIN)"
	mkdir ./archive
	ARCHIVE_BIN=archive/$(ARCHIVE_BIN); \
	    mkdir ./$${ARCHIVE_BIN} || exit 1 ; \
	    mkdir ./$${ARCHIVE_BIN}-raw || exit 1 ; \
	    mkdir ./$${ARCHIVE_BIN}/data || exit 1 ; \
	    VARS=""; \
	    for i in prefix exec_prefix bindir datadir includedir libdir libexecdir \
                 sysconfdir localstatedir sharedstatedir packagedocdir ; do \
	        mkdir ./$${ARCHIVE_BIN}-raw/$$i || exit 1 ; \
	        VARS="$$VARS $$i=`pwd`/$${ARCHIVE_BIN}-raw/$$i"; \
	    done; \
	    for i in $(MORE_PACKAGES) . ; do ( cd $$i && $(MAKE) $$VARS install ) || exit 1; done; \
	    for i in prefix exec_prefix bindir datadir includedir libdir libexecdir \
                 sysconfdir localstatedir sharedstatedir packagedocdir ; do \
	        echo $$i$(ARCHIVE_TAREXT) ; \
	        rmdir ./$${ARCHIVE_BIN}-raw/$$i 2>/dev/null || \
	            (cd ./$${ARCHIVE_BIN}-raw/$$i && \
	                 tar c$(ARCHIVE_TARFLAGS)f \
	                     ../../../$${ARCHIVE_BIN}/data/$$i$(ARCHIVE_TAREXT) . ) \
	            || exit 1 ; \
	    done ; \
	    ( cd ./$${ARCHIVE_BIN}-raw && find . -type f ) > ./$${ARCHIVE_BIN}/FILES
	-cp $(top_srcdir)/COPYING     ./archive/$(ARCHIVE_BIN)/COPYING 2>/dev/null
	-cp $(top_srcdir)/COPYING-bin ./archive/$(ARCHIVE_BIN)/COPYING 2>/dev/null
	-cp $(top_srcdir)/README      ./archive/$(ARCHIVE_BIN)/README 2>/dev/null
	-cp $(top_srcdir)/README-bin  ./archive/$(ARCHIVE_BIN)/README 2>/dev/null
	$(MAKE) bin-install-script

.PHONY: bin-tar
bin-tar: bin-archive
	-mkdir ./packages
	ARCHIVE_BIN=$(ARCHIVE_BIN); \
	TARBALL_BIN=$(TARBALL_BIN); \
	cd archive && tar cv$(TARFLAGS)f ../packages/$${TARBALL_BIN}$(TAREXT) ./$${ARCHIVE_BIN}

.PHONY: bin-targz
bin-targz: dummy
	$(MAKE) bin-tar TARFLAGS=z TAREXT=.tar.gz

.PHONY: bin-tgz
bin-tgz: dummy
	$(MAKE) bin-tar TARFLAGS=z TAREXT=.tgz

.PHONY: bin-tarbz2
bin-tarbz2: dummy
	$(MAKE) bin-tar TARFLAGS=j TAREXT=.tar.bz2

.PHONY: bin-tbz
bin-tbz: dummy
	$(MAKE) bin-tar TARFLAGS=j TAREXT=.tbz

.PHONY: bin-iso
bin-iso: bin-archive
	-mkdir ./packages
	mkisofs \
	    -A '$(PROGNAME)' \
	    -copyright '$(COPYRIGHT)' \
	    -P '$(VENDOR)' \
	    -p '$(VENDOR)' \
	    -r -J -pad \
	    -o ./packages/$(TARBALL_BIN).iso \
	    ./archive/$(ARCHIVE_BIN)

ifneq ($(DEFAULT_DISTRO),)

# bin or src:
.PHONY: archive
archive: $(DEFAULT_DISTRO)-archive

.PHONY: tar
tar: $(DEFAULT_DISTRO)-tar

.PHONY: targz
targz: $(DEFAULT_DISTRO)-targz

.PHONY: tgz
tgz: $(DEFAULT_DISTRO)-tgz

.PHONY: tarbz2
tarbz2: $(DEFAULT_DISTRO)-tarbz2

.PHONY: tbz
tbz: $(DEFAULT_DISTRO)-tbz

.PHONY: iso
iso: $(DEFAULT_DISTRO)-iso

endif

# clean:
clean-all-local: erwin-clean clean-archive clean-tar clean-bin-archive clean-bin-tar
	-rm -f $(PROG) $(PROG_ALIASES) $(PROG_EXE) lib$(LIBRARY).a $(PROG).date.c
	-rm -f *.a *.o *.so *.lo *.ii core *.stamp
ifneq ($(USE_PAG),)
	-rm -f .pag_timestamp
endif
ifneq ($(PAG_ANALYSIS),)
	-rm -f .pag_timestamp
	-rm -rf ./$(PAG_MAKEDIR)/src
endif
ifneq ($(GEN_DOC_FILES),)
	-rm -f $(addprefix doc/,$(GEN_DOC_FILES))
endif
ifneq ($(GEN_SHARE_FILES),)
	-rm -f $(GEN_SHARE_FILES)
endif
	-rm -f $(addsuffix .ii,$(ALLCXXMODULES))
	-rm -f $(addsuffix .s,$(ALLCXXMODULES))
	-rm -f $(addsuffix .o,$(ALLCXXMODULES))
	-rm -f $(addsuffix .aux,$(ALLLATEXMODULES))
	-rm -f $(addsuffix .dvi,$(ALLLATEXMODULES))
	-rm -f $(addsuffix .ps,$(ALLLATEXMODULES))
	-rm -f $(addsuffix .ps.gz,$(ALLLATEXMODULES))
	-rm -f $(addsuffix .log,$(ALLLATEXMODULES))
	-rm -f $(addsuffix .so,$(ALLCXXMODULES))
	-rm -f $(addsuffix .inc,$(GPERFMODULES))
	-rm -f $(addsuffix _moc.$(CXX_EXT),$(MOCHEADERS))
ifneq ($(USE_SYMBOL),)
	-rm -f $(PATH_SYMBOL).inc
endif

.PHONY: erwin-clean
erwin-clean:

ifneq ($(USE_ERWIN),)
erwin-clean:
	-cd erwin && $(MAKE) clean
endif

clean-depend-all-local:
	-rm -rf .list
	-rm -rf .deps .depend $(EXTRA_DEPFILES)

clean-depend-subdirs: clean-depend-subdirs-pre

.PHONY: clean-depend-subdirs-pre
clean-depend-subdirs-pre:
	-rm -f `find . -name "*.P"`

sweep-all-local:
	-rm -f *~ .desktop.el*

distclean-all-local: clean-depend-all-local
	-rm -f config.status config.log config.cache version.$(CXX_EXT)
	-rm -f $(VERSION_H) $(VERSION_H_LOCAL)
	-rm -f version.h.stamp version.h version.dummy version.o
	-rm -f Makefile make/Rules make/Defs

clean-local:
clean-depend-local:
distclean-local:
sweep-local:
develclean-local:

develclean-all-local:
	-rm -f $(FAILURE_H) failure.h failure.h.stamp $(FAILURE_H).new
	-rm -rf autom4te.cache
	-rm -f configure
	-rm -f $(add_suffix .cc,         $(GENCCMODULES))
	-rm -f $(add_suffix .cpp,        $(GENCPPMODULES))
	-rm -f $(add_suffix .$(CXX_EXT), $(GENCXXMODULES))
	-rm -f $(add_suffix .hh,         $(GENHHMODULES))
	-rm -f $(add_suffix .tex,        $(GENLATEXMODULES))
	-rm -f $(add_suffix .h,          $(GENHMODULES))
	-rm -f $(add_suffix .inc,        $(GENINCMODULES))
ifneq ($(USE_SYMBOL),)
ifeq ($(NO_SYMBOL_C),)
	-rm -f $(PATH_SYMBOL).h symbol.h $(PATH_SYMBOL).h.stamp $(FILE_SYMBOL).$(CXX_EXT)
endif
endif

all-subdirs \
all-post-subdirs \
wincopy-subdirs \
wincopyall-subdirs \
run-subdirs \
run-sub-subdirs \
test-subdirs \
test-sub-subdirs \
clean-depend-subdirs \
clean-subdirs \
clean-sub-subdirs \
depend-subdirs \
develclean-subdirs \
distclean-subdirs \
sweep-subdirs:
	target=`echo $@ | sed s/-subdirs//` ; \
	    subdirs='$(SUBDIRS)' ; \
            for i in $$subdirs; do \
                (cd $$i && $(MAKE) $$target); done

list-files-subdirs \
list-sources-subdirs:
	target=`echo $@ | sed s/-subdirs// | sed s/list-//` ; \
	    subdirs='$(SUBDIRS)' ; \
            for i in $$subdirs; do \
                (cd $$i && $(MAKE) list-$$target); done ; \
            (for i in $$subdirs; do \
                (cat $$i/.list/$$target | \
                    while read a; do echo $$i/$$a; done ); done) > .list/$$target.subdirs

all-top \
all-post-top \
depend-top \
clean-sub-top \
run-sub-top \
test-sub-top \
list-files-top \
wincopy-top \
wincopyall-top \
list-sources-top \
run-top \
test-top:
	target=`echo $@ | sed s/-top//` ; \
	   (cd $(top_srcdir) && $(MAKE) $$target)

# We cannot depend on $(MAKEFAILURE): if it is not needed by the package, it
# need not be in the path.
failure.h.stamp: $(SOURCES) $(HEADERS)
ifneq ($(MAKEFAILURE),)
	-$(MAKEFAILURE) \
          --err-subsystem=$(ERR_SUBSYSTEM) $(MAKEFAILURE_OPTIONS) \
          --prefix=$(LIB_GLOBAL_PREFIX) \
          --internal-ifdef='IN_LIB$(PROGNAME_UC)_COMPILE' \
          $(SOURCES) $(HEADERS) > $(FAILURE_H).new
	$(MOVE) $(FAILURE_H)
endif
	echo > failure.h.stamp
	echo '#include "$(INCLUDE_SUBDIR)/failure.h"' > $(FAILURE_H_LOCAL).new
	$(MOVE) $(FAILURE_H_LOCAL)
	-rm -f failure.dummy

$(FAILURE_H): failure.h.stamp

#
# .SECONDARY: # NONONO!  This breaks the dependencies under Solaris (probably a bug in
#                        GNU Make v3.78.1 we use there.

.PRECIOUS: $(FAILURE_H_LOCAL) $(FAILURE_H) $(SYMBOL_H_LOCAL)

%_parser.$(CXX_EXT): %.y
	$(BISON) -v -p $*_ -b $* -d -t $<
	$(MOVE) $*.tab.c $@
	$(MOVE) $*.tab.h $*_parser.h

%_parser.h: %_parser.$(CXX_EXT)

# Note: The following rule is a bit complicated, since the final name of
#       the C file must be the same as the one we gave to Flex since
#       otherwise, some of the the #line directives are wrong.
%_scanner.$(CXX_EXT): %.l
	( mv $@ $@.old || true) 2> /dev/null
	$(FLEX) -P$*_ -o$@ $<
	echo "#define YY_NEVER_INTERACTIVE 1" > $@.new # some flex is broken under Win
	echo '#line 1 "$@"' >> $@.new
	cat $@ >> $@.new
	-rm -f $@
	( mv $@.old $@ || true )2> /dev/null
	$(MOVE) $@

.PRECIOUS: %_scanner.$(CXX_EXT)
.PRECIOUS: %_parser.$(CXX_EXT)
.PRECIOUS: %_parser.h

# This is not really correct and maybe it breaks parallel compilation for more than
# one scanner/parser.  But I don't know how to write a correct rule.
ifneq ($(LMODULES),)
$(addsuffix _scanner.o, $(LMODULES)): $(addsuffix _parser.h, $(YMODULES)) \
                                      $(addsuffix _parser.$(CXX_EXT), $(YMODULES))
endif

ifneq ($(YMODULES),)
$(addsuffix _parser.h, $(YMODULES)):  $(addsuffix _parser.$(CXX_EXT), $(YMODULES))
endif

# symbols
ifneq ($(USE_SYMBOL),)

# Erwin might be missing:
ifneq ($(MAKESYMBOL),)
$(PATH_SYMBOL).inc: $(SOURCES) $(HEADERS)
	-$(MAKESYMBOL) --output=$(PATH_SYMBOL).inc.new \
                  --library-prefix=$(PREFIX_SYMBOL) \
                  --library-prefix-uc=$(PROGNAME_UC) \
                  --prefix=$(USE_SYMBOL) $(SOURCES) $(HEADERS)
	$(MOVE) $(PATH_SYMBOL).inc
endif

ifneq ($(PATH_SYMBOL).inc,$(wildcard $(PATH_SYMBOL).inc))
Makefile: $(PATH_SYMBOL).inc
endif

ifneq ($(GPERFMODULES),)
ifneq ($(addsuffix .inc,$(GPERFMODULES)),$(wildcard $(addsuffix .inc,$(GPERFMODULES))))
Makefile: $(addsuffix .inc,$(GPERFMODULES))
endif
endif

ifeq ($(NO_SYMBOL_C),)

ifneq ($(PATH_SYMBOL).h,$(wildcard $(PATH_SYMBOL).h))
Makefile: $(PATH_SYMBOL).h.stamp
endif

$(FILE_SYMBOL).$(CXX_EXT): make/symbol.c
	cat $(top_srcdir)/make/symbol.c \
       | sed 's@_UPREFIX_SYMBOL_DYNAMIC_TABLE_DEFAULT@$(DYN_SYMBOL)@g' \
       | sed 's@_EDPREFIX_@$(SUBDIR_SYMBOL)@g' \
       | sed 's@_EPREFIX_@$(ERWIN_FILE_PREFIX)@g' \
       | sed 's@_PREFIX_@$(ERWIN_NAME_PREFIX)@g' \
       | sed 's@_UPREFIX_@$(ERWIN_NAME_PREFIX_UC)@g' \
       | sed 's@_ULPREFIX_@$(PROGNAME_UC)@g' \
       | sed 's@_AUTO_MSG_@Automatically generated, do not edit.@g' \
       > $(FILE_SYMBOL).$(CXX_EXT).new
	$(MOVE) $(FILE_SYMBOL).$(CXX_EXT)

# Manual deps for the implementation, since it is deleted by DEP_FILTER
# for all files.  However, for *this* file, we need it:
$(FILE_SYMBOL).o: $(FILE_SYMBOL).$(CXX_EXT) $(PATH_SYMBOL).h $(PATH_SYMBOL).inc

$(PATH_SYMBOL).h.stamp: make/symbol.h
	cat $(top_srcdir)/make/symbol.h \
       | sed 's@_UPREFIX_SYMBOL_DYNAMIC_TABLE_DEFAULT@$(DYN_SYMBOL)@g' \
       | sed 's@_EDPREFIX_@$(SUBDIR_SYMBOL)@g' \
       | sed 's@_EPREFIX_@$(ERWIN_FILE_PREFIX)@g' \
       | sed 's@_PREFIX_@$(ERWIN_NAME_PREFIX)@g' \
       | sed 's@_UPREFIX_@$(ERWIN_NAME_PREFIX_UC)@g' \
       | sed 's@_ULPREFIX_@$(PROGNAME_UC)@g' \
       | sed 's@_AUTO_MSG_@Automatically generated, do not edit.@g' \
       > $(PATH_SYMBOL).h.new
	$(MOVE) $(PATH_SYMBOL).h
	echo '#include "$(SUBDIR_SYMBOL)symbol.h"' > $(SYMBOL_H_LOCAL)
	>$(PATH_SYMBOL).h.stamp

$(PATH_SYMBOL).h: $(PATH_SYMBOL).h.stamp

endif

endif

EXTRA_OPTIONS_GXX_CMD= \
     grep -- '--extra-options-gcc:' | sed 's@.*--extra-options-gcc:@@' | sed 's@\*\/ *$$@@'
EXTRA_OPTIONS_NO_GXX_CMD=  #  :
EXTRA_OPTIONS_CXX_CMD= $(EXTRA_OPTIONS_GXX_CMD) \
                       $(EXTRA_OPTIONS_NO_GXX_CMD)

EXTRA_OPTIONS_GCC_CMD= \
     grep -- '--extra-options-gcc:' | sed 's@.*--extra-options-gcc:@@' | sed 's@\*\/ *$$@@'
EXTRA_OPTIONS_NO_GCC_CMD=  #  :
EXTRA_OPTIONS_C_CMD= $(EXTRA_OPTIONS_GCC_CMD) \
                     $(EXTRA_OPTIONS_NO_GCC_CMD)

# The DEP_FILTER removes dependencies to generated files that are derived
# from the source files and thus may change without the source files needing
# new compilation.  Since very often, virtually the whole project depends
# on these, it's worth removing the deps.
DEP_FILTER=sed -e 's@$$@ @' | \
           sed -e 's@ \($(FAILURE_H)\|$(FAILURE_H_LOCAL)\) @ @g' | \
           sed -e 's@ \($(PATH_SYMBOL).h\|$(PATH_SYMBOL).inc\|$(SYMBOL_H_LOCAL)\) @ @g' | \
           sed -e 's@ *$$@@'

%_moc.$(CXX_EXT): %.h
	$(QTDIR)/bin/moc -o $@ $<

%.s: %.cc
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) `cat $< | $(EXTRA_OPTIONS_CXX_CMD)` -S $< -o $@

%.ii: %.cc
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -E $< -o $@

%.s: %.cpp
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) `cat $< | $(EXTRA_OPTIONS_CXX_CMD)` -S $< -o $@

%.ii: %.cpp
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -E $< -o $@

%.s: %.c
	$(CC) $(CPPFLAGS) $(CFLAGS) `cat $< | $(EXTRA_OPTIONS_C_CMD)` -S $< -o $@

%.i: %.c
	$(CC) $(CPPFLAGS) $(CFLAGS) -E $< -o $@

%.o: %.c
	$(CC) $(CPPFLAGS) $(CFLAGS) `cat $< | $(EXTRA_OPTIONS_C_CMD)`  -Wp,-MD,.deps/$(*F).pp -c $< -o $@
	@-sed -e 's@^\([^:]*\)\.o[      ]*:@$@:@' < .deps/$(*F).pp | \
      sed -e 's/^\([^:]*\)\.o[      ]*:/\1.so \1.lo \1.o:/' | \
      $(DEP_FILTER) > .deps/$(*F).P; \
	tr ' ' '\012' < .deps/$(*F).pp \
		| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
		>> .deps/$(*F).P; \
	rm .deps/$(*F).pp

%.so: %.c
	$(CC) $(CPPFLAGS) $(CFLAGS) `cat $< | $(EXTRA_OPTIONS_C_CMD)` -Wl,-shared -Wp,-MD,.deps/$(*F).pp $< -o $@
	chmod 0755 $@
	@-sed -e 's@^\([^:]*\)\.o[      ]*:@$@:@' < .deps/$(*F).pp | \
      sed -e 's/^\([^:]*\)\.so[      ]*:/\1.so \1.lo \1.o:/' | \
      $(DEP_FILTER) > .deps/$(*F).P; \
	tr ' ' '\012' < .deps/$(*F).pp \
		| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
		>> .deps/$(*F).P; \
	rm -f .deps/$(*F).pp

%.o: %.cc
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) `cat $< | $(EXTRA_OPTIONS_CXX_CMD)`  -Wp,-MD,.deps/$(*F).pp -c $<
	@-sed -e 's@^\([^:]*\)\.o[      ]*:@$@:@' < .deps/$(*F).pp | \
      sed -e 's/^\([^:]*\)\.o[      ]*:/\1.so \1.lo \1.o:/' | \
      $(DEP_FILTER) > .deps/$(*F).P; \
	tr ' ' '\012' < .deps/$(*F).pp \
		| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
		>> .deps/$(*F).P; \
	rm .deps/$(*F).pp

%.so: %.cc
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) `cat $< | $(EXTRA_OPTIONS_CXX_CMD)` -Wl,-shared -Wp,-MD,.deps/$(*F).pp $< -o $@
	chmod 0755 $@
	@-sed -e 's@^\([^:]*\)\.o[      ]*:@$@:@' < .deps/$(*F).pp | \
      sed -e 's/^\([^:]*\)\.so[      ]*:/\1.so \1.lo \1.o:/' | \
      $(DEP_FILTER) > .deps/$(*F).P; \
	tr ' ' '\012' < .deps/$(*F).pp \
		| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
		>> .deps/$(*F).P; \
	rm -f .deps/$(*F).pp

%.o: %.cpp
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) `cat $< | $(EXTRA_OPTIONS_CXX_CMD)`  -Wp,-MD,.deps/$(*F).pp -c $<
	@-sed -e 's@^\([^:]*\)\.o[      ]*:@$@:@' < .deps/$(*F).pp | \
      sed -e 's/^\([^:]*\)\.o[      ]*:/\1.so \1.lo \1.o:/' | \
      $(DEP_FILTER) > .deps/$(*F).P; \
	tr ' ' '\012' < .deps/$(*F).pp \
		| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
		>> .deps/$(*F).P; \
	rm .deps/$(*F).pp

%.so: %.cpp
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) `cat $< | $(EXTRA_OPTIONS_CXX_CMD)` -Wl,-shared -Wp,-MD,.deps/$(*F).pp $< -o $@
	chmod 0755 $@
	@-sed -e 's@^\([^:]*\)\.o[      ]*:@$@:@' < .deps/$(*F).pp | \
      sed -e 's/^\([^:]*\)\.so[      ]*:/\1.so \1.lo \1.o:/' | \
      $(DEP_FILTER) > .deps/$(*F).P; \
	tr ' ' '\012' < .deps/$(*F).pp \
		| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
		>> .deps/$(*F).P; \
	rm -f .deps/$(*F).pp


.PRECIOUS: $(addsuffix .$(CXX_EXT),$(PCCMODULES))
# don't you bl**dy dare to delete the .cc files!

.PHONY: clean-pcc
clean-pcc:
	rm -f $(addsuffix .cc,  $(PCCMODULES))
	rm -f $(addsuffix .cpp, $(PCCMODULES))

%.$(CXX_EXT): %.pcc # $(PCC2CC)    # no, with this, all .pcc controllers are compiled after config.status
	$(PCC2CC) $<

$(PCC2CC): $(PCC2CC).in
	cd $(top_srcdir) && ./config.status

.PHONY: erwinsub
erwinsub:

# Using ERWIN_MANUAL_FLAGS is deprecated!
ifeq ($(USE_ERWIN),)

LIBERWIN:=

else

LIBERWIN:= erwin/lib/lib$(ERWIN_LIB_INFIX)erwin.a

.PHONE: erwin-make

$(LIBERWIN): erwin-make dummy

erwinsub: $(LIBERWIN)

erwin-make: dummy
ifeq ($(ERWIN_MANUAL_FLAGS),1)
	cd erwin && $(MAKE) MORE_CPPFLAGS="$(ERWIN_MORE_CPPFLAGS)" \
                        LESS_CPPFLAGS="$(ERWIN_LESS_CPPFLAGS)" \
                        MORE_CFLAGS="$(ERWIN_MORE_CFLAGS)" \
                        LESS_CFLAGS="$(ERWIN_LESS_CFLAGS)" \
                        MORE_CXXFLAGS="$(ERWIN_MORE_CXXFLAGS)" \
                        LESS_CXXFLAGS="$(ERWIN_LESS_CXXFLAGS)"
else
	cd erwin && $(MAKE) MORE_CPPFLAGS="$(CPPFLAGS)" \
                        MORE_CFLAGS="$(CFLAGS)" \
                        MORE_CXXFLAGS="$(CXXFLAGS)"
endif
endif

PHONY: erwin-lib
erwin-lib: erwinsub

# how to build a PAG analyzer
ifneq ($(USE_PAG),)
ifneq ($(PAG_ANALYSIS),)

ifneq ($(PAG_OPTLA_USE_M4),)
$(PAG_SPECDIR)/${PAG_ANALYSIS}.optla: $(PAG_SPECDIR)/${PAG_ANALYSIS}.optla.m4
	$(M4) $< > $@
endif

.pag_timestamp: $(PAG_SPECDIR)/${PAG_ANALYSIS}.optla $(PAG_SPECDIR)/${PAG_ANALYSIS}.set
	-$(top_srcdir)/make/mkinstalldirs ./$(PAG_MAKEDIR)
	${PAGPATH}/bin/pag $(PAG_FRONTEND) $(PAG_ITERATOR) \
                       $(PAG_SPECDIR)/${PAG_ANALYSIS} ./$(PAG_MAKEDIR)
	echo > .pag_timestamp

CFLAGS_NO_UNUSED=$(CFLAGS)  -Wno-unused

./$(PAG_MAKEDIR)/src/${PAG_ANALYSIS}.a: .pag_timestamp
	cd ./$(PAG_MAKEDIR)/src && \
       $(MAKE) CC="$(CC)" CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS_NO_UNUSED)"

PAG_LIB_USER:=./$(PAG_MAKEDIR)/src/${PAG_ANALYSIS}.a
PAG_TARGET:=./$(PAG_MAKEDIR)/src/${PAG_ANALYSIS}.a
else
PAG_LIB_USER:=
PAG_TARGET:=
endif

ifneq ($(PAG_FRONTEND),)
PAG_LIB := -l$(PAG_FRONTEND)f
endif
endif


# how to build a program:
ifneq ($(PROG),)

ifneq ($(CPPMODULES),)
LINK_CXX:=1
endif

ifeq ($(LINK_CXX),0)
DO_LINK= $(LD) $(OBJS) $(LDFLAGS) $(CFLAGS) $(PAG_LIB_USER) $(PAG_LIB) $(LOADLIBES) $(PAG_LIB_USER) -o $(PROG_EXE)
else
DO_LINK= $(LDXX) $(OBJS) $(LDFLAGS) $(CXXFLAGS) $(PAG_LIB_USER) $(PAG_LIB) $(LOADLIBES) $(PAG_LIB_USER) -o $(PROG_EXE)
endif

.PHONY:link

ifeq ($(USE_ERWIN),)

link:
	$(MAKE) version
	$(MAKE) version.o
	$(DO_LINK)
	$(MAKE) prog-aliases

$(PROG_EXE): $(PAG_TARGET) $(OBJS) $(SUBLIBS)
	$(MAKE) link

else

$(PROG_EXE): $(PAG_TARGET) $(OBJS) $(SUBLIBS) $(LIBERWIN) dummy
	$(MAKE) $(PROG_EXE).stamp

$(PROG_EXE).stamp: $(PAG_TARGET) $(OBJS) $(SUBLIBS) $(LIBERWIN)
	$(MAKE) link

link:
	$(MAKE) version
	$(MAKE) version.o
	$(DO_LINK)
	echo > $(PROG_EXE).stamp
	$(MAKE) prog-aliases

endif

.PHONY: prog-aliases
prog-aliases: $(PROG_ALIASES)

$(PROG_ALIASES): $(PROG_EXE)
	rm -f $@ && $(LN_S) $< $@

endif

# how to build a library:
ifneq ($(LIBRARY),)

all: lib$(LIBRARY).a

ifeq ($(USE_ERWIN),)

lib$(LIBRARY).a: $(OBJS)
	$(MAKE) link

link:
	$(MAKE) version
	$(MAKE) version.o
	$(AR) r lib$(LIBRARY).a $(OBJS)
	$(RANLIB) lib$(LIBRARY).a

else

lib$(LIBRARY).a: $(OBJS) $(LIBERWIN) dummy
	$(MAKE) lib$(LIBRARY).a.stamp

lib$(LIBRARY).a.stamp: $(OBJS) $(LIBERWIN)
	$(MAKE) link

link:
	$(MAKE) version
	$(MAKE) version.o
	cd erwin && $(MAKE) FILE_PREFIX=erwin/ linkobjs
	$(AR) r lib$(LIBRARY).a $(OBJS) `cat erwin/linkobjs`
	$(RANLIB) lib$(LIBRARY).a
	echo > lib$(LIBRARY).a.stamp

endif

endif

# flex scanners need a bison generated header file:
%_scanner.o: %_parser.h

#NO: every object depends in failure.h:
#NO: $(OBJS): $(FAILURE_H)

ifneq ($(PATTERN),)

%_pat.$(CXX_EXT): %.pat
	$(PATTERN) $< $@

%_pat.h: %.pat
	$(PATTERN) -proto=extern $< $@

endif


# auto-regenerate Makefile and others:
Makefile: $(top_srcdir)/Makefile.in \
          $(top_srcdir)/make/Rules.in \
          $(top_srcdir)/make/Defs.in \
          $(top_srcdir)/config.status
	cd $(top_srcdir) && CONFIG_HEADERS= ./config.status 1>&2
    # Note: It is quite impossible to re-generate sub-directory Makefiles
    #       correctly by a more specific rule that also involves
    #       CONFIG_FILES.  config.status is only in $(top_srcdir),
    #       but how to tell it in which sub-dir we want the Makefile
    #       to be regenerated.
    #       (It is easy for Rules and Defs, though.)

make/Rules: Makefile
	:

make/Defs: Makefile
	:

# #################################################################### #

.PHONY: count
count: list-sources
	wc `cat .list/sources`

# #################################################################### #
# #################################################################### #
# Standard Things for Version control

version.o: version.$(CXX_EXT) $(VERSION_H)

.PHONY: sub-version
sub-version: repair-version
	if test -d CVS; then                                        \
	    (expr $(SUB_VERSION) + 1 > $(SUB_VERSION_FILE).new) ||  \
	       (rm -f $(SUB_VERSION_FILE) &&                        \
	        cvs update $(SUB_VERSION_FILE) &&                   \
	        expr $(SUB_VERSION) + 0 > $(SUB_VERSION_FILE).new); \
	    $(MOVE) $(SUB_VERSION_FILE).new $(SUB_VERSION_FILE);    \
    fi

version.h.stamp: repair-version
	VERSION=$(VERSION_NUMERIC) \
	 PREFIX=$(GLOBAL_PREFIX) \
	 PREFIX_UC=$(GLOBAL_PREFIX_UC) \
	 PROGNAME_UC=$(PROGNAME_UC) \
	     $(SHELL) ${top_srcdir}/make/mkversion_h.sh > $(VERSION_H).new
	$(MOVE) $(VERSION_H)
	echo '#include "$(INC_VERSION_H)"' > $(VERSION_H_LOCAL).new
	$(MOVE) $(VERSION_H_LOCAL)
	-rm -f version.dummy
	echo > version.h.stamp

$(VERSION_H): version.h.stamp

$(VERSION_H_LOCAL): version.h.stamp

# When changing this, edit the Windows version.cpp, too!
.PHONY: version
version: version-script
	$(MAKE) sub-version
	echo '/* Automatically generated */' > version.$(CXX_EXT)
	@echo '#include "$(INC_VERSION_H)"' >> version.$(CXX_EXT)
	@echo 'char const *$(GLOBAL_PREFIX)version="'$(VERSION)'";' >> version.$(CXX_EXT)
	@echo 'char const *$(GLOBAL_PREFIX)branch_id="@branch:'"$(BRANCH)"'@";' >> version.$(CXX_EXT)
	@echo 'char const *$(GLOBAL_PREFIX)config_prog_docdir=         "$(mydocdir)";'         >> version.$(CXX_EXT)
	@echo 'char const *$(GLOBAL_PREFIX)config_prog_sysconfdir=     "$(mysysconfdir)";'     >> version.$(CXX_EXT)
	@echo 'char const *$(GLOBAL_PREFIX)config_prog_datadir=        "$(mydatadir)";'        >> version.$(CXX_EXT)
	@echo 'char const *$(GLOBAL_PREFIX)config_prog_libexecdir=     "$(mylibexecdir)";'     >> version.$(CXX_EXT)
	@echo 'char const *$(GLOBAL_PREFIX)config_prog_localstatedir=  "$(mylocalstatedir)";'  >> version.$(CXX_EXT)
	@echo 'char const *$(GLOBAL_PREFIX)config_prog_sharedstatedir= "$(mysharedstatedir)";' >> version.$(CXX_EXT)

# The following first checks for a major version change, which will reset
# the sub-version counter, the tries to repair the sub-version file, and
# then increments the sub-version.
.PHONY: repair-version
repair-version: dummy
	echo ${BASE_VERSION} > $(BASE_VERSION_FILE).new
	if test -f $(BASE_VERSION_FILE); then :; else \
	    echo ${BASE_VERSION} > $(BASE_VERSION_FILE) ; \
	fi
	if diff $(BASE_VERSION_FILE) $(BASE_VERSION_FILE).new >/dev/null 2>&1 ; then :; else \
	    ${VERSION_TOOL} --read $(BASE_VERSION_FILE) > $(BASE_VERSION_FILE).repaired && \
        $(MOVE) $(BASE_VERSION_FILE).repaired $(BASE_VERSION_FILE); \
	fi
	if diff $(BASE_VERSION_FILE) $(BASE_VERSION_FILE).new >/dev/null 2>&1 ; then :; else \
	  	$(MOVE) $(BASE_VERSION_FILE) && \
	    echo "0" > $(SUB_VERSION_FILE) ; \
	fi
	-rm -f $(BASE_VERSION_FILE).new
	-$(PERL) -ne 'BEGIN { $$version=0; } \
	              END { print "$$version\n"; } \
	              $$version= $$1 if /^(\d+)$$/ && $$1 > $$version' $(SUB_VERSION_FILE) \
                  > $(SUB_VERSION_FILE).new
	$(MOVE) $(SUB_VERSION_FILE)

.PHONY: version-script

ifeq ($(LIBRARY),)

version-script:
	:

else

version-script: repair-version
	-cat lib$(LIBRARY)-version.in | \
	    sed 's@^prefix=.*@prefix='$(prefix)'@g' | \
	    sed 's@^exec_prefix=.*@exec_prefix='$(exec_prefix)'@g' | \
	    sed 's@^includedir=.*@includedir='$(includedir)'@g' | \
	    sed 's@^libdir=.*@libdir='$(libdir)'@g' | \
	    sed 's@^datadir=.*@datadir='$(datadir)'@g' | \
	    sed 's@^docdir=.*@docdir='$(docdir)'@g' | \
	    sed 's@--VERSION--@'$(VERSION)'@g' | \
	    sed 's@--ERWIN-VERSION--@'"`cat erwin/version`"'@g' \
	    > lib$(LIBRARY)-version.sh
	-chmod a+x lib$(LIBRARY)-version.sh

endif

version.$(CXX_EXT):
	$(MAKE) version

# #################################################################### #
# #################################################################### #

.PHONY: installdirs
installdirs:
ifneq ($(LIBRARY),)
	$(MKINSTALLDIRS) \
        "$(DESTDIR)$(libdir)" \
        "$(DESTDIR)$(includedir)"
	if test -d include/$(INCLUDE_SUBDIR); then $(MKINSTALLDIRS) \
        "$(DESTDIR)$(includedir)/$(INCLUDE_SUBDIR)" ; \
    fi
ifneq ($(USE_ERWIN),)
ifneq ($(INSTALL_ERWIN),0)
	if test -d erwin/include/$(INCLUDE_SUBDIR); then $(MKINSTALLDIRS) \
        "$(DESTDIR)$(includedir)/$(INCLUDE_SUBDIR)" \
        "$(DESTDIR)$(includedir)/$(INCLUDE_SUBDIR)/erwin" ; \
    fi
endif
endif
endif
ifneq ($(TOP_DOC_FILES),)
	$(MKINSTALLDIRS) \
        "$(DESTDIR)$(datadir)" \
        "$(DESTDIR)$(mydocdir)"
	for i in . `echo $(TOP_DOC_FILES)`; do \
		if test "x$$i" != "x." && \
           test "x`dirname $$i`" != "x" && \
           test "x`dirname $$i`" != "x." ; then \
			$(MKINSTALLDIRS) "$(DESTDIR)$(mydocdir)/`dirname $$i`"; \
		fi \
	done
endif
ifneq ($(DOC_FILES),)
	$(MKINSTALLDIRS) \
        "$(DESTDIR)$(datadir)" \
        "$(DESTDIR)$(mydocdir)"
	for i in . `cd doc && echo $(DOC_FILES)`; do \
		if test "x$$i" != "x." && \
           test "x`dirname $$i`" != "x" && \
           test "x`dirname $$i`" != "x." ; then \
			$(MKINSTALLDIRS) "$(DESTDIR)$(mydocdir)/`dirname $$i`"; \
		fi \
	done
endif
ifneq ($(GEN_DOC_FILES),)
	$(MKINSTALLDIRS) \
        "$(DESTDIR)$(datadir)" \
        "$(DESTDIR)$(mydocdir)"
	for i in . `cd doc && echo $(GEN_DOC_FILES)`; do \
		if test "x$$i" != "x." && \
           test "x`dirname $$i`" != "x" && \
           test "x`dirname $$i`" != "x." ; then \
			$(MKINSTALLDIRS) "$(DESTDIR)$(mydocdir)/`dirname $$i`"; \
		fi \
	done
endif
ifneq ($(SHARE_FILES),)
	$(MKINSTALLDIRS) \
        $(DESTDIR)$(datadir) \
        $(DESTDIR)$(mydatadir)
	for i in . $(SHARE_FILES); do \
		if test "x$$i" != "x." && \
           test "x`dirname $$i`" != "x" && \
           test "x`dirname $$i`" != "x." ; then \
			$(MKINSTALLDIRS) "$(DESTDIR)$(mydatadir)/`dirname $$i`"; \
		fi \
	done
endif
ifneq ($(GEN_SHARE_FILES),)
	$(MKINSTALLDIRS) \
        $(DESTDIR)$(datadir) \
        $(DESTDIR)$(mydatadir)
	for i in . $(GEN_SHARE_FILES); do \
		if test "x$$i" != "x." && \
           test "x`dirname $$i`" != "x" && \
           test "x`dirname $$i`" != "x." ; then \
			$(MKINSTALLDIRS) "$(DESTDIR)$(mydatadir)/`dirname $$i`"; \
		fi \
	done
endif
	$(MKINSTALLDIRS) \
        "$(DESTDIR)$(bindir)"

.PHONY: install-subdirs
install-subdirs: dummy

.PHONY: install-local
install-local: dummy

.PHONY: install-all-local
install-all-local: installdirs
ifneq ($(LIBRARY),)
	if test -f "include/$(PROGNAME).h"; then \
        $(INSTALL_DATA) "include/$(PROGNAME).h" "$(DESTDIR)$(includedir)/$(PROGNAME).h"; \
    fi
	if test -f "include/lib$(LIBRARY).h"; then \
        $(INSTALL_DATA) "include/lib$(LIBRARY).h" "$(DESTDIR)$(includedir)/lib$(LIBRARY).h"; \
    fi
	if test -f "include/$(INCLUDE_SUBDIR).h"; then \
        $(INSTALL_DATA) "include/$(INCLUDE_SUBDIR).h" "$(DESTDIR)$(includedir)/$(INCLUDE_SUBDIR).h"; \
    fi
	if test -d include/$(INCLUDE_SUBDIR); then \
	    for dir_i in include/$(INCLUDE_SUBDIR)/*.h \
                     include/$(INCLUDE_SUBDIR)/*.hpp \
                     include/$(INCLUDE_SUBDIR)/*.inc; do \
            i="`basename $$dir_i`"; \
            case "$$i" in \**) ;; \
                *) $(INSTALL_DATA) "include/$(INCLUDE_SUBDIR)/$$i" \
                                   "$(DESTDIR)$(includedir)/$(INCLUDE_SUBDIR)/$$i" ;; \
            esac; \
        done; \
    fi
ifneq ($(USE_ERWIN),)
ifneq ($(INSTALL_ERWIN),0)
	if test -d erwin/include/$(INCLUDE_SUBDIR); then \
        for dir_i in erwin/include/$(INCLUDE_SUBDIR)/*.hpp \
                     erwin/include/$(INCLUDE_SUBDIR)/*.h ; do \
            i="`basename $$dir_i`"; \
            case "$$i" in \**) ;; \
                *) $(INSTALL_DATA) "erwin/include/$(INCLUDE_SUBDIR)/$$i" \
                                   "$(DESTDIR)$(includedir)/$(INCLUDE_SUBDIR)/$$i" ;; \
            esac; \
        done; \
    fi
	if test -d erwin/include/$(INCLUDE_SUBDIR); then \
	    for i in `cd erwin/include/$(INCLUDE_SUBDIR)/erwin && echo *.h`; do \
		    $(INSTALL_DATA) "erwin/include/$(INCLUDE_SUBDIR)/erwin/$$i" "$(DESTDIR)$(includedir)/$(INCLUDE_SUBDIR)/erwin/$$i"; \
        done; \
    fi
endif
endif
	$(INSTALL_DATA) "lib$(LIBRARY).a" "$(DESTDIR)$(libdir)/`echo lib$(LIBRARY).a | sed '$(transform)'`"
	if test x"`uname`" = xDarwin; then \
        $(RANLIB) "$(DESTDIR)$(libdir)/`echo lib$(LIBRARY).a | sed '$(transform)'`"; \
    fi
	$(INSTALL_SCRIPT) "lib$(LIBRARY)-version.sh" "$(DESTDIR)$(bindir)/lib$(LIBRARY)-version"
endif
ifneq ($(PROG),)
	$(INSTALL_PROGRAM) "$(PROG_EXE)" "$(DESTDIR)$(bindir)/`echo $(PROG_EXE) | sed '$(transform)'`"
	for i in . $(PROG_ALIASES); do \
	    if test "x$$i" != "x."; then \
	        rm -f "$(DESTDIR)$(bindir)/`echo $$i | sed '$(transform)'`" ; \
	        (cd "$(DESTDIR)$(bindir)" && \
	            $(LN_S) "`echo $(PROG_EXE) | sed '$(transform)'`" \
	                    "`echo $$i | sed '$(transform)'`" \
            ) ; \
	    fi \
	done
endif
	for i in . $(EXTRA_PROG); do \
		if test "x$$i" != "x."; then \
			$(INSTALL_PROGRAM) "$$i" "$(DESTDIR)$(bindir)/`echo $$i|sed '$(transform)'`"; \
		fi \
	done
	for i in . $(EXTRA_SCRIPT); do \
		if test "x$$i" != "x."; then \
			$(INSTALL_SCRIPT) "$$i" "$(DESTDIR)$(bindir)/`echo $$i|sed '$(transform)'`"; \
		fi \
	done
	for i in . `echo $(TOP_DOC_FILES)`; do \
		if test "x$$i" != "x."; then \
			$(INSTALL_DATA) "$$i" "$(DESTDIR)$(mydocdir)/$$i"; \
		fi \
	done
	for i in . `cd doc && echo $(DOC_FILES)`; do \
		if test "x$$i" != "x."; then \
			$(INSTALL_DATA) "doc/$$i" "$(DESTDIR)$(mydocdir)/$$i"; \
		fi \
	done
	for i in . `cd doc && echo $(GEN_DOC_FILES)`; do \
		if test "x$$i" != "x."; then \
			$(INSTALL_DATA) "doc/$$i" "$(DESTDIR)$(mydocdir)/$$i"; \
		fi \
	done
	for i in . $(SHARE_FILES); do \
		if test "x$$i" != "x."; then \
			$(INSTALL_DATA) "share/$$i" "$(DESTDIR)$(mydatadir)/$$i"; \
		fi \
	done
	for i in . $(GEN_SHARE_FILES); do \
		if test "x$$i" != "x."; then \
			$(INSTALL_DATA) "share/$$i" "$(DESTDIR)$(mydatadir)/$$i"; \
		fi \
	done
	$(MAKE) install-local
	$(MAKE) install-subdirs

.PHONY: install-no-strip
install-no-strip:
	$(MAKE) install-all-local

.PHONY: install-strip
install-strip:
	$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install-all-local

.PHONY: install
ifeq ($(RELEASE),1)
install: install-strip
else
install: install-no-strip
endif

.PHONY: uninstall-subdirs
uninstall-subdirs: dummy

.PHONY: uninstall-local
uninstall-local: dummy

.PHONY: uninstall
uninstall:
	$(MAKE) uninstall-subdirs
	$(MAKE) uninstall-local
	$(MAKE) uninstall-all-local

.PHONY: uninstall-all-local
uninstall-all-local:
ifneq ($(LIBRARY),)
	-rm -f  "$(DESTDIR)$(bindir)/lib$(LIBRARY)-version"
	-if test -d include/$(INCLUDE_SUBDIR);  then rm -rf "$(DESTDIR)$(includedir)/$(INCLUDE_SUBDIR)"; fi
	-if test -f "include/$(PROGNAME).h"; then \
        rm -f  "$(DESTDIR)$(includedir)/$(PROGNAME).h"; \
    fi
	-if test -f "include/lib$(LIBRARY).h"; then \
        rm -f  "$(DESTDIR)$(includedir)/lib$(LIBRARY).h"; \
    fi
	-if test -f "include/$(INCLUDE_SUBDIR).h"; then \
        rm -f  "$(DESTDIR)$(includedir)/$(INCLUDE_SUBDIR).h"; \
    fi
	-rm -f  "$(DESTDIR)$(libdir)/lib$(LIBRARY).a"
endif
ifneq ($(PROG),)
	-rm -f "$(DESTDIR)$(bindir)/`echo $(PROG_EXE) | sed '$(transform)'`"
	for i in . $(PROG_ALIASES); do \
		if test "x$$i" != "x."; then \
			rm -f "$(DESTDIR)$(bindir)/`echo $$i|sed '$(transform)'`"; \
		fi \
	done
endif
	for i in . $(EXTRA_PROG); do \
		if test "x$$i" != "x."; then \
			rm -f "$(DESTDIR)$(bindir)/`echo $$i|sed '$(transform)'`"; \
		fi \
	done
ifneq ($(TOP_DOC_FILES),)
	-rm -rf "$(DESTDIR)$(mydocdir)"
endif
ifneq ($(DOC_FILES),)
	-rm -rf "$(DESTDIR)$(mydocdir)"
endif
ifneq ($(GEN_DOC_FILES),)
	-rm -rf "$(DESTDIR)$(mydocdir)"
endif
ifneq ($(SHARE_FILES),)
	-rm -rf "$(DESTDIR)$(mydatadir)"
endif
ifneq ($(GEN_SHARE_FILES),)
	-rm -rf "$(DESTDIR)$(mydatadir)"
endif

# dummy as usual
.PHONY: dummy
dummy:

######################################################################
# nmakefile creation

ifeq ($(PAG_FRONTEND),crl2)
WIN_PAG_INCLUDE=$$(prefix)\pag2\include
WIN_PAG_LIB=$$(prefix)\pag2\lib
else
WIN_PAG_INCLUDE=$$(includedir)
WIN_PAG_LIB=$$(libdir)
endif

N=$(srcdir)/nmakefile
$(N): Makefile dummy
	echo > $(N)
	echo 'CC=cl' >> $(N)
	echo 'CXX=cl' >> $(N)
	echo 'LD=link' >> $(N)
	echo 'AR=lib' >> $(N)
	echo 'NMAKE=nmake /f nmakefile' >> $(N)
	echo '' >> $(N)
	echo 'WINCXXFLAGS=$(ALLWINCXXFLAGS) $(EXTRA_WINCXXFLAGS)' >> $(N)
	echo 'WINCFLAGS=$(ALLWINCFLAGS) $(EXTRA_WINCFLAGS)' >> $(N)
	echo 'WINCPPFLAGS=$(ALLWINCPPFLAGS) $(EXTRA_WINCPPFLAGS)' >> $(N)
	echo 'WINLDFLAGS=$(ALLWINLDFLAGS) $(EXTRA_WINLDFLAGS)' >> $(N)
	echo '' >> $(N)
	echo 'WINPREFIX=$(WINPREFIX)' >> $(N)
	echo 'prefix=$$(WINPREFIX)' >> $(N)
	echo 'exec_prefix=$$(prefix)' >> $(N)
	echo 'includedir=$$(prefix)\include' >> $(N)
	echo 'bindir=$$(exec_prefix)\bin' >> $(N)
	echo 'libdir=$$(exec_prefix)\lib' >> $(N)
	echo 'datadir=$$(prefix)\share' >> $(N)
	echo 'sharedir=$$(datadir)\$(PROGNAME)' >> $(N)
	echo 'docdir=$$(datadir)\doc\packages\$(PROGNAME)' >> $(N)
	echo '' >> $(N)
	echo 'MORE_CPPFLAGS=/DERWIN_DOS=1 /DWINDOWS=1 /DERWIN_MSVC=1 /DMSDOS=1 /DDOS=1 '"\\"  >> $(N)
	echo '      /D_POSIX_ '"\\" >> $(N)
ifneq ($(ERROR_SUBSYSTEM),) # under Windows, we always use liberror if we have a subsystem. Under Unix, this is decided by configure.in
	echo '      /DHAVE_LIBERROR '"\\" >> $(N)
endif
	echo '      /DPROGNAME_TOKEN=$(PROGNAME) '"\\" >> $(N)
ifneq ($(EXTRA_WIN_DEFS),)
	echo '      $(EXTRA_WIN_DEFS) '"\\" >> $(N)
endif
	echo '      /I. /Ierwin\include /Iinclude '"\\" >> $(N)
ifneq ($(USE_PAG),)
	echo '      /I$(WIN_PAG_INCLUDE)\analyzer '"\\" >> $(N)
	echo '      /I$(WIN_PAG_INCLUDE)\frontend\$(PAG_FRONTEND) '"\\" >> $(N)
	echo '      /I$(WIN_PAG_INCLUDE) '"\\" >> $(N)
endif
	echo '      /I$$(includedir) ' >> $(N)
	echo 'LESS_CPPFLAGS=$$(WINCPPFLAGS)'  >> $(N)
	echo 'CPPFLAGS=$$(LESS_CPPFLAGS) $$(MORE_CPPFLAGS)'  >> $(N)
	echo 'COMMON_CFLAGS=/Zm1000' >> $(N)
	echo 'CXXFLAGS=$$(COMMON_CFLAGS) $$(WINCXXFLAGS)' >> $(N)
	echo 'CFLAGS=$$(COMMON_CLFAGS) $$(WINCFLAGS)' >> $(N)
ifneq ($(PROG),)
	echo 'LDFLAGS= $$(WINLDFLAGS) '"\\" >>$(N)
ifneq ($(USE_PAG),)
ifneq ($(PAG_ANALYSIS),)
	echo '      .\$(PAG_MAKEDIR)\src\${PAG_ANALYSIS}.lib '"\\" >> $(N)
endif
ifneq ($(PAG_FRONTEND),)
	echo '      $(WIN_PAG_LIB)\$(PAG_FRONTEND)f.lib '"\\" >> $(N)
endif
endif
	for i in . $(LESS_WIN_LIBS) $(WIN_LIBS) $(EXTRA_WIN_LIBS) $(MORE_WIN_LIBS); do \
		if test "x$$i" = "xpag" ; then \
			echo '      $(WIN_PAG_LIB)\pag.lib '"\\" >> $(N); \
		else \
		    if test "x$$i" != "x." ; then \
	            echo '      $$(libdir)'"\\`echo $$i | $(PERL) -pe 's@/@\\\\@'`"'.lib '"\\" >> $(N) ; \
		    fi ; \
		fi ; \
	done
	for i in . $(LESS_WIN_LIBS_SYSTEM) $(WIN_LIBS_SYSTEM) $(EXTRA_WIN_LIBS_SYSTEM) $(MORE_WIN_LIBS_SYSTEM); do \
		if test "x$$i" != "x." ; then \
			echo '      '"`echo $$i | $(PERL) -pe 's@/@\\\\@'`"'.lib '"\\" >> $(N) ; \
		fi ; \
	done
	echo '      /SUBSYSTEM:$(WINDOWS_SUBSYSTEM)' >> $(N)
endif
	echo '' >> $(N)
ifneq ($(USE_ERWIN),)
	cd erwin && $(MAKE) FILE_PREFIX=erwin/ linkobjs
	$(PERL) -ne                           \
		'BEGIN { print "ERWIN_OBJS=" }    \
         END { print "\n" }               \
         chomp;                           \
         s@/@\\@g;                        \
         s@\.o@.obj@;                     \
         print " $$_";' erwin/linkobjs >> $(N)
	echo '' >> $(N)
endif
	echo 'MKDIR=mkdir' >> $(N)
	echo 'RM=del' >> $(N)
	echo 'CP=copy' >> $(N)
	echo '' >> $(N)
	echo 'all: program library'  >> $(N)
	echo '' >> $(N)
ifneq ($(PAG_ANALYSIS),)
	echo '.\$(PAG_MAKEDIR)\src\${PAG_ANALYSIS}.lib: .\$(PAG_MAKEDIR)\src\${PAG_ANALYSIS}.c' >> $(N)
	echo '        cd .\$(PAG_MAKEDIR)\src' >> $(N)
	echo '        $$(NMAKE) @<<tmpmake' >> $(N)
	echo ' INCLDIR="$$(includedir)"' >> $(N)
	echo ' ANALYINCLDIR="$$(includedir)\analyzer"' >> $(N)
	echo ' FRONTDIR_H="$$(includedir)\frontend\${PAG_FRONTEND}"' >> $(N)
	echo ' FRONTDIR_C="$$(datadir)\frontend\${PAG_FRONTEND}"' >> $(N)
	echo ' DEBUGSRCDIR="$$(datadir)\debugger"' >> $(N)
	echo ' CFLAGS="$$(WINCFLAGS) $$(WINCPPFLAGS)"' >> $(N)
	echo ' CPPFLAGS="$(WINCPPFLAGS)"' >> $(N)
	echo '<<' >> $(N)
	echo '        cd ..' >> $(N)
	echo '' >> $(N)
endif
ifeq ($(PROG),)
	echo 'program:'  >> $(N)
else
	echo 'program: $(PROG_EXE).exe' $(addsuffix .exe,$(PROG_ALIASES)) >> $(N)
	for i in . $(PROG_ALIASES); do \
	    if test "x$$i" != "x."; then \
	        echo "$$i"'.exe: $(PROG_EXE).exe' >> $(N) ; \
	        echo '	$$(CP) $(PROG_EXE).exe '"$$i"'.exe' >> $(N) ; \
	    fi \
	done
	echo '' >> $(N)
ifneq ($(PAG_ANALYSIS),)
	echo '$(PROG_EXE).exe: $(WIN_OBJS) .\$(PAG_MAKEDIR)\src\${PAG_ANALYSIS}.lib erwin-lib' >> $(N)
else
	echo '$(PROG_EXE).exe: $(WIN_OBJS) erwin-lib' >> $(N)
endif
	echo '	$$(LD) @<<tmpmake' >> $(N)
	echo '/out:$(PROG_EXE).exe $(WIN_OBJS)' >> $(N)
ifneq ($(USE_ERWIN),)
	echo 'erwin/lib/$(ERWIN_LIB_INFIX)erwin.lib' >> $(N)
endif
	echo '$$(LDFLAGS) $$(LIBS)' >> $(N)
	echo '<<' >> $(N)
	echo '' >> $(N)
endif
	echo '' >> $(N)
	echo 'erwin-lib:' >> $(N)
ifneq ($(USE_ERWIN),)
	echo '	cd erwin' >> $(N)
	echo '	$$(NMAKE) @<<tmpmake' >> $(N)
	echo 'MORE_CXXFLAGS="$$(CXXFLAGS)"' >> $(N)
	echo 'MORE_CFLAGS="$$(CFLAGS)"' >> $(N)
	echo 'LESS_CPPFLAGS="$$(LESS_CPPFLAGS)"' >> $(N)
	echo 'MORE_CPPFLAGS="$$(MORE_CPPFLAGS)"' >> $(N)
	echo '<<' >> $(N)
	echo '	cd ..' >> $(N)
endif
	echo '' >> $(N)
ifeq ($(LIBRARY),)
	echo 'library:'  >> $(N)
else
	echo 'library: $(LIBRARY).lib' >> $(N)
	echo '' >> $(N)
	echo '$(LIBRARY).lib: $(WIN_OBJS) erwin-lib' >> $(N)
	echo '	$$(AR) @<<tmpmake' >> $(N)
	echo '/out:$(LIBRARY).lib $(WIN_OBJS)' >> $(N)
ifneq ($(USE_ERWIN),)
	echo '$$(ERWIN_OBJS)' >> $(N)
endif
	echo '<<' >> $(N)
endif
	echo '' >> $(N)
	for obj in . $(ALLCCMODULES); do \
		if test "x$$obj" != x. ; then \
		    echo "$$obj.obj: $$obj.cc" >> $(N) ; \
		    echo "  cp $$obj.cc $$obj.cpp" >> $(N) ; \
		    echo '	$$(CXX) @<<tmpmake' >> $(N) ; \
		    echo "$$obj"'.cpp $$(CPPFLAGS) /TP $$(CXXFLAGS) /c' >> $(N) ; \
		    echo '<<' >> $(N) ; \
		    echo '' >> $(N) ; \
		fi ; \
	done
	for obj in . $(ALLCPPMODULES); do \
		if test "x$$obj" != x. ; then \
		    echo "$$obj.obj: $$obj.cpp" >> $(N) ; \
		    echo '	$$(CXX) @<<tmpmake' >> $(N) ; \
		    echo "$$obj"'.cpp $$(CPPFLAGS) /TP $$(CXXFLAGS) /c' >> $(N) ; \
		    echo '<<' >> $(N) ; \
		    echo '' >> $(N) ; \
		fi ; \
	done
	for obj in . $(ALLCMODULES); do \
		if test "x$$obj" != x. ; then \
		    echo "$$obj.obj: $$obj.c" >> $(N) ; \
		    echo '	$$(CC) @<<tmpmake' >> $(N) ; \
		    echo "$$obj"'.c $$(CPPFLAGS) /TC $$(CFLAGS) /c' >> $(N) ; \
		    echo '<<' >> $(N) ; \
		    echo '' >> $(N) ; \
		fi ; \
	done
	echo '' >> $(N)
	echo 'clean:' >> $(N)
ifneq ($(USE_ERWIN),)
	echo '	cd erwin' >> $(N)
	echo '	- $$(NMAKE)  clean' >> $(N)
	echo '	cd ..' >> $(N)
endif
	echo '	- $$(RM) $(WIN_OBJS) $$(ERWIN_OBJS)' >> $(N)
ifneq ($(LIBRARY),)
	echo '	- $$(RM) $(LIBRARY).lib' >> $(N)
endif
ifneq ($(PROG),)
	echo '	- $$(RM) $(PROG_EXE).exe' >> $(N)
	for i in . $(PROG_ALIASES); do \
	    if test "x$$i" != "x."; then \
	        echo '	- $$(RM) '"$$i"'.exe' >> $(N) ; \
	    fi \
	done
endif
	echo '	- $$(RM) *.o' >> $(N)
	echo '	- $$(RM) *.lib' >> $(N)
	echo '	- $$(RM) *.ext' >> $(N)
	echo '' >> $(N)
	echo 'installdirs:' >> $(N)
ifneq ($(LIBRARY),)
	echo '	- $$(MKDIR) $$(WINPREFIX)' >> $(N)
	echo '	- $$(MKDIR) $$(includedir)' >> $(N)
	echo '	- $$(MKDIR) $$(includedir)\$(INCLUDE_SUBDIR)' >> $(N)
	echo '	- $$(MKDIR) $$(libdir)' >> $(N)
ifneq ($(USE_ERWIN),)
ifneq ($(INSTALL_ERWIN),0)
	echo '	- $$(MKDIR) $$(includedir)\$(INCLUDE_SUBDIR)\erwin' >> $(N)
endif
endif
endif
	echo '	- $$(MKDIR) $$(bindir)' >> $(N)
ifneq ($(TOP_DOC_FILES),)
	echo '	- $$(MKDIR) $$(datadir)' >> $(N)
	echo '	- $$(MKDIR) $$(datadir)\doc' >> $(N)
	echo '	- $$(MKDIR) $$(datadir)\doc\packages' >> $(N)
	echo '	- $$(MKDIR) $$(docdir)' >> $(N)
	for i in . `echo $(TOP_DOC_FILES)`; do \
		if test "x$$i" != "x." && \
           test "x`dirname $$i`" != "x" && \
           test "x`dirname $$i`" != "x." ; then \
			echo '	- $$(MKDIR) $$(docdir)'"\\`dirname $$i | sed 's@/@\\\\@g'`" >> $(N) ; \
		fi \
	done
endif
ifneq ($(DOC_FILES),)
	echo '	- $$(MKDIR) $$(datadir)' >> $(N)
	echo '	- $$(MKDIR) $$(datadir)\doc' >> $(N)
	echo '	- $$(MKDIR) $$(datadir)\doc\packages' >> $(N)
	echo '	- $$(MKDIR) $$(docdir)' >> $(N)
	for i in . `cd doc && echo $(DOC_FILES)`; do \
		if test "x$$i" != "x." && \
           test "x`dirname $$i`" != "x" && \
           test "x`dirname $$i`" != "x." ; then \
			echo '	- $$(MKDIR) $$(docdir)'"\\`dirname $$i | sed 's@/@\\\\@g'`" >> $(N) ; \
		fi \
	done
endif
ifneq ($(GEN_DOC_FILES),)
	echo '	- $$(MKDIR) $$(datadir)' >> $(N)
	echo '	- $$(MKDIR) $$(datadir)\doc' >> $(N)
	echo '	- $$(MKDIR) $$(datadir)\doc\packages' >> $(N)
	echo '	- $$(MKDIR) $$(docdir)' >> $(N)
	for i in . `cd doc && echo $(GEN_DOC_FILES)`; do \
		if test "x$$i" != "x." && \
           test "x`dirname $$i`" != "x" && \
           test "x`dirname $$i`" != "x." ; then \
			echo '	- $$(MKDIR) $$(docdir)'"\\`dirname $$i | sed 's@/@\\\\@g'`" >> $(N) ; \
		fi \
	done
endif
ifneq ($(SHARE_FILES),)
	echo '	- $$(MKDIR) $$(datadir)' >> $(N)
	echo '	- $$(MKDIR) $$(sharedir)' >> $(N)
	for i in . $(SHARE_FILES); do \
		if test "x$$i" != "x." && \
           test "x`dirname $$i`" != "x" && \
           test "x`dirname $$i`" != "x." ; then \
			echo '	- $$(MKDIR) $$(sharedir)'"\\`dirname $$i | 'sed s@/@\\\\@g'`" >> $(N) ; \
		fi \
	done
endif
ifneq ($(GEN_SHARE_FILES),)
	echo '	- $$(MKDIR) $$(datadir)' >> $(N)
	echo '	- $$(MKDIR) $$(sharedir)' >> $(N)
	for i in . $(GEN_SHARE_FILES); do \
		if test "x$$i" != "x." && \
           test "x`dirname $$i`" != "x" && \
           test "x`dirname $$i`" != "x." ; then \
			echo '	- $$(MKDIR) $$(sharedir)'"\\`dirname $$i | 'sed s@/@\\\\@g'`" >> $(N) ; \
		fi \
	done
endif
	echo '' >> $(N)
	echo 'install: installdirs' >> $(N)
ifneq ($(PROG),)
	echo '	- $$(CP) $(PROG_EXE).exe $$(bindir)' >> $(N)
	for i in . $(PROG_ALIASES); do \
	    if test "x$$i" != "x."; then \
	        echo '	- $$(CP) '"$$i"'.exe $$(bindir)' >> $(N) ; \
	    fi \
	done
endif
ifneq ($(LIBRARY),)
	echo '	- $$(CP) $(LIBRARY).lib $$(libdir)' >> $(N)
	if test -f "include/$(PROGNAME).h"; then \
	    echo '	- $$(CP) include\$(PROGNAME).h $$(includedir)' >> $(N) ; \
	fi
	if test -f "include/lib$(LIBRARY).h"; then \
	    echo '	- $$(CP) include\lib$(LIBRARY).h $$(includedir)' >> $(N) ; \
	fi
	if test -f "include/$(INCLUDE_SUBDIR).h"; then \
	    echo '	- $$(CP) include\$(INCLUDE_SUBDIR).h $$(includedir)' >> $(N) ; \
	fi
	echo '	- $$(CP) include\$(INCLUDE_SUBDIR)\*.h* $$(includedir)\$(INCLUDE_SUBDIR)' >> $(N)
	echo '	- $$(CP) include\$(INCLUDE_SUBDIR)\*.inc $$(includedir)\$(INCLUDE_SUBDIR)' >> $(N)
ifneq ($(USE_ERWIN),)
ifneq ($(INSTALL_ERWIN),0)
	echo '	- $$(CP) erwin\include\$(INCLUDE_SUBDIR)\*.h* $$(includedir)\$(INCLUDE_SUBDIR)' >> $(N)
	echo '	- $$(CP) erwin\include\$(INCLUDE_SUBDIR)\erwin\*.h* $$(includedir)\$(INCLUDE_SUBDIR)\erwin' >> $(N)
endif
endif
endif
	for i in . `echo $(TOP_DOC_FILES)`; do \
		if test "x$$i" != "x."; then \
			echo '	- $$(CP) '"`echo $$i | sed 's@/@\\\\@g'`"' $$(docdir)'"\\`echo $$i | sed 's@/@\\\\@g'`" >> $(N); \
		fi \
	done
	for i in . `cd doc && echo $(DOC_FILES)`; do \
		if test "x$$i" != "x."; then \
			echo '	- $$(CP) doc'"\\`echo $$i | sed 's@/@\\\\@g'`"' $$(docdir)'"\\`echo $$i | sed 's@/@\\\\@g'`" >> $(N); \
		fi \
	done
	for i in . `cd doc && echo $(GEN_DOC_FILES)`; do \
		if test "x$$i" != "x."; then \
			echo '	- $$(CP) doc'"\\`echo $$i | sed 's@/@\\\\@g'`"' $$(docdir)'"\\`echo $$i | sed 's@/@\\\\@g'`" >> $(N); \
		fi \
	done
	for i in . $(SHARE_FILES); do \
		if test "x$$i" != "x."; then \
			echo '	- $$(CP) share'"\\`echo $$i | sed 's@/@\\\\@g'`"' $$(sharedir)'"\\`echo $$i | sed 's@/@\\\\@g'`" >> $(N); \
		fi \
	done
	for i in . $(GEN_SHARE_FILES); do \
		if test "x$$i" != "x."; then \
			echo '	- $$(CP) share'"\\`echo $$i | sed 's@/@\\\\@g'`"' $$(sharedir)'"\\`echo $$i | sed 's@/@\\\\@g'`" >> $(N); \
		fi \
	done

######################################################################
# wincopy

.PHONY: wincopyall wincopyall-local # wincopyall-subdirs
wincopyall: wincopyall-local # wincopyall-subdirs

wincopyall-local: wincopy-local wincopy-erwin

.PHONY: wincopy-erwin
wincopy-erwin: wincopy-dir
ifneq ($(USE_ERWIN),)
	MAKEDIR="`cd $(top_srcdir)/make && pwd`" ; \
        cd erwin && \
            $(MAKE) TARGETDIR="$(WINDIR_PROGNAME)/erwin" \
                 INSTALL_DATA="cp" \
                 MKDIR="$${MAKEDIR}/mkinstalldirs" copy-files
	sync ; sync
	(sleep 1 && sync)&
endif

wincopy: wincopy-local # wincopy-subdirs

.PHONY: wincopy wincopy-local # wincopy-subdirs
wincopy-local: wincopy-sources wincopy-makefile wincopy-make.bat
	sync ; sync
	(sleep 1 && sync)&
	echo "**** I hope the project was compiled. ****"

.PHONY: wincopy-dir
wincopy-dir:
	$(MKINSTALLDIRS) \
		"$(WINDIR)" \
		"$(WINDIR_PROGNAME)/include" \
		"$(WINDIR_PROGNAME)/include/$(INCLUDE_SUBDIR)"
ifneq ($(USE_ERWIN),)
	$(MKINSTALLDIRS) \
		"$(WINDIR_PROGNAME)/erwin"
endif
ifneq ($(TOP_DOC_FILES),)
	for i in . `echo $(TOP_DOC_FILES)`; do \
		if test "x$$i" != "x." && \
           test "x`dirname $$i`" != "x" && \
           test "x`dirname $$i`" != "x." ; then \
			$(MKINSTALLDIRS) "$(WINDIR_PROGNAME)/`dirname $$i`"; \
		fi \
	done
endif
ifneq ($(DOC_FILES),)
	$(MKINSTALLDIRS) "$(WINDIR_PROGNAME)/doc"
	for i in . `cd doc && echo $(DOC_FILES)`; do \
		if test "x$$i" != "x." && \
           test "x`dirname $$i`" != "x" && \
           test "x`dirname $$i`" != "x." ; then \
			$(MKINSTALLDIRS) "$(WINDIR_PROGNAME)/doc/`dirname $$i`"; \
		fi \
	done
endif
ifneq ($(GEN_DOC_FILES),)
	$(MKINSTALLDIRS) "$(WINDIR_PROGNAME)/doc"
	for i in . `cd doc && echo $(GEN_DOC_FILES)`; do \
		if test "x$$i" != "x." && \
           test "x`dirname $$i`" != "x" && \
           test "x`dirname $$i`" != "x." ; then \
			$(MKINSTALLDIRS) "$(WINDIR_PROGNAME)/doc/`dirname $$i`"; \
		fi \
	done
endif
ifneq ($(SHARE_FILES),)
	$(MKINSTALLDIRS) "$(WINDIR_PROGNAME)/share"
	for i in . $(SHARE_FILES); do \
		if test "x$$i" != "x." && \
           test "x`dirname $$i`" != "x" && \
           test "x`dirname $$i`" != "x." ; then \
			$(MKINSTALLDIRS) "$(WINDIR_PROGNAME)/share/`dirname $$i`"; \
		fi \
	done
endif
ifneq ($(GEN_SHARE_FILES),)
	$(MKINSTALLDIRS) "$(WINDIR_PROGNAME)/share"
	for i in . $(GEN_SHARE_FILES); do \
		if test "x$$i" != "x." && \
           test "x`dirname $$i`" != "x" && \
           test "x`dirname $$i`" != "x." ; then \
			$(MKINSTALLDIRS) "$(WINDIR_PROGNAME)/share/`dirname $$i`"; \
		fi \
	done
endif

echo-cc: dummy
	@echo $(CC)

more-config.h.msvc: dummy
	-echo "" > $@
	-echo '#ifndef SUBSYSTEM' >> $@
	-echo '#define SUBSYSTEM "'"$(WINDOWS_SUBSYSTEM)"'"' >> $@
	-echo '#endif' >> $@
	-echo "" >> $@
	-echo '#ifndef SUBSYSTEM_'"`echo $(WINDOWS_SUBSYSTEM) | tr [a-z] [A-Z]`"'' >> $@
	-echo '#define SUBSYSTEM_'"`echo $(WINDOWS_SUBSYSTEM) | tr [a-z] [A-Z]`"' 1' >> $@
	-echo '#endif' >> $@
	-cat user-config.h.msvc >> $@

.PHONY: wincopy-sources
wincopy-sources: wincopy-dir more-config.h.msvc repair-version
	-cp $(addprefix  $(srcdir)/, $(addsuffix .cc, $(ALLCCMODULES)))  doesnotexist "$(WINDIR_PROGNAME)/"
	-cp $(addprefix  $(srcdir)/, $(addsuffix .cpp,$(ALLCPPMODULES))) doesnotexist "$(WINDIR_PROGNAME)/"
	-cp $(addprefix  $(srcdir)/, $(addsuffix .inc,$(ALLINCMODULES))) doesnotexist "$(WINDIR_PROGNAME)/"
	-cp $(addprefix  $(srcdir)/, $(addsuffix .c,  $(ALLCMODULES)))   doesnotexist "$(WINDIR_PROGNAME)/"
	-cp $(addprefix  $(srcdir)/, $(EXTRA_SOURCES))                   doesnotexist "$(WINDIR_PROGNAME)/"
	-cp $(addprefix  $(srcdir)/, $(EXTRA_HEADERS))                   doesnotexist "$(WINDIR_PROGNAME)/"
	-cp $(addprefix  $(srcdir)/, $(AUTO_EXTRA_SOURCES))              doesnotexist "$(WINDIR_PROGNAME)/"
	-cp $(srcdir)/*.hpp "$(WINDIR_PROGNAME)/"
	-cp $(srcdir)/*.h   "$(WINDIR_PROGNAME)/"
	if test -f config.h; then \
	    cp $(top_srcdir)/make/config.h.msvc "$(WINDIR_PROGNAME)/config.h"; \
	fi
	-cp $(srcdir)/$(PATH_SYMBOL).inc  "$(WINDIR_PROGNAME)/$(DIR_SYMBOL)"
	-cp $(srcdir)/include/*.hpp "$(WINDIR_PROGNAME)/include/"
	-cp $(srcdir)/include/*.h   "$(WINDIR_PROGNAME)/include/"
	-cp $(srcdir)/include/*.inc "$(WINDIR_PROGNAME)/include/"
	-cp $(srcdir)/include/$(INCLUDE_SUBDIR)/*.hpp "$(WINDIR_PROGNAME)/include/$(INCLUDE_SUBDIR)/"
	-cp $(srcdir)/include/$(INCLUDE_SUBDIR)/*.h   "$(WINDIR_PROGNAME)/include/$(INCLUDE_SUBDIR)/"
	if test -f $(srcdir)/include/$(INCLUDE_SUBDIR)/config.h; then \
	    cp $(top_srcdir)/make/config.h.msvc \
           "$(WINDIR_PROGNAME)/include/$(INCLUDE_SUBDIR)/config.h"; \
	fi
	-for i in . include include/$(INCLUDE_SUBDIR); do \
		cp $(srcdir)/$$i/config.h.msvc   "$(WINDIR_PROGNAME)/$$i/config.h" ; \
		cp $(srcdir)/$$i/config.hpp.msvc "$(WINDIR_PROGNAME)/$$i/config.hpp" ; \
	done
	-for i in . include include/$(INCLUDE_SUBDIR); do \
		test -f "$(WINDIR_PROGNAME)/$$i/config.h" && \
               cat more-config.h.msvc >> "$(WINDIR_PROGNAME)/$$i/config.h" ; \
		test -f "$(WINDIR_PROGNAME)/$$i/config.hpp" && \
               cat more-config.h.msvc >> "$(WINDIR_PROGNAME)/$$i/config.hpp" ; \
	done
	-perl -i -pe 's@unistd\.h@io\.h@' "$(WINDIR_PROGNAME)"/*_scanner*.$(CXX_EXT)
	for i in . $(SUBST_UNISTD_IO); do \
		if test "x$$i" != x. ; then \
			perl -i -pe 's@unistd\.h@io\.h@' "$(WINDIR_PROGNAME)"/$$i ; \
		fi ; \
	done
	-echo '#include "$(INC_VERSION_H)"' \
		> "$(WINDIR_PROGNAME)"/version.$(CXX_EXT)
	-@echo 'char const *$(GLOBAL_PREFIX)version="'$(VERSION)$(WIN_VERSION_SUFFIX)'";' >> "$(WINDIR_PROGNAME)"/version.$(CXX_EXT)
	-@echo 'char const *$(GLOBAL_PREFIX)branch_id="@branch:'"$(BRANCH)"'@";' >> "$(WINDIR_PROGNAME)"/version.$(CXX_EXT)
	-@echo 'char const *$(GLOBAL_PREFIX)config_prog_docdir=         0;'   >> "$(WINDIR_PROGNAME)"/version.$(CXX_EXT)
	-@echo 'char const *$(GLOBAL_PREFIX)config_prog_sysconfdir=     0;'   >> "$(WINDIR_PROGNAME)"/version.$(CXX_EXT)
	-@echo 'char const *$(GLOBAL_PREFIX)config_prog_datadir=        0;'   >> "$(WINDIR_PROGNAME)"/version.$(CXX_EXT)
	-@echo 'char const *$(GLOBAL_PREFIX)config_prog_libexecdir=     0;'   >> "$(WINDIR_PROGNAME)"/version.$(CXX_EXT)
	-@echo 'char const *$(GLOBAL_PREFIX)config_prog_localstatedir=  0;'   >> "$(WINDIR_PROGNAME)"/version.$(CXX_EXT)
	-@echo 'char const *$(GLOBAL_PREFIX)config_prog_sharedstatedir= 0;'   >> "$(WINDIR_PROGNAME)"/version.$(CXX_EXT)
ifneq ($(PAG_ANALYSIS),)
	-cp -r ./$(PAG_MAKEDIR)/src/ "$(WINDIR_PROGNAME)/"
endif
ifneq ($(EXTRA_FILES),)
	for i in . `echo $(EXTRA_FILES)`; do \
		if test "x$$i" != "x." ; then \
			cp "$$i" "$(WINDIR_PROGNAME)/$$i"; \
		fi \
	done
endif
ifneq ($(TOP_DOC_FILES),)
	for i in . `echo $(TOP_DOC_FILES)`; do \
		if test "x$$i" != "x." ; then \
			cp "$$i" "$(WINDIR_PROGNAME)/$$i"; \
		fi \
	done
endif
ifneq ($(DOC_FILES),)
	for i in . `cd doc && echo $(DOC_FILES)`; do \
		if test "x$$i" != "x." ; then \
			cp "doc/$$i" "$(WINDIR_PROGNAME)/doc/$$i"; \
		fi \
	done
endif
ifneq ($(GEN_DOC_FILES),)
	for i in . `cd doc && echo $(GEN_DOC_FILES)`; do \
		if test "x$$i" != "x." ; then \
			cp "doc/$$i" "$(WINDIR_PROGNAME)/doc/$$i"; \
		fi \
	done
endif
ifneq ($(SHARE_FILES),)
	for i in . $(SHARE_FILES); do \
		if test "x$$i" != "x." ; then \
			cp share/$$i "$(WINDIR_PROGNAME)/share/$$i"; \
		fi \
	done
endif
ifneq ($(GEN_SHARE_FILES),)
	for i in . $(GEN_SHARE_FILES); do \
		if test "x$$i" != "x." ; then \
			cp share/$$i "$(WINDIR_PROGNAME)/share/$$i"; \
		fi \
	done
endif

.PHONY: wincopy-makefile
wincopy-makefile: wincopy-dir nmakefile
	-cp $(srcdir)/nmakefile "$(WINDIR_PROGNAME)"

.PHONY: wincopy-make.bat
wincopy-make.bat: wincopy-dir
	echo "nmake /f nmakefile %1%" > "$(WINDIR_PROGNAME)/make.bat"

