# # Build darcs # ifeq (,$(findstring clean,$(MAKECMDGOALS))) ifneq (config,$(MAKECMDGOALS)) include autoconf.mk endif endif GHCFLAGS += -Wall DARCS_FILES = Lcs.lhs SlurpDirectory.lhs DarcsCommands.lhs \ Init.lhs DarcsArguments.lhs Add.lhs Repository.lhs \ WhatsNew.lhs Diff.lhs Record.lhs PatchInfo.lhs Unrecord.lhs \ Check.lhs Patch.lhs Revert.lhs Get.lhs Pull.lhs PatchCheck.lhs \ RepoPrefs.lhs Test.lhs Dist.lhs Remove.lhs Mv.lhs \ Replace.lhs Tag.lhs TheCommands.lhs Push.lhs Apply.lhs \ Depends.lhs ArgumentDefaults.lhs RepoTypes.lhs \ FastPackedString.hs DiffCommand.lhs SetPref.lhs \ Resolution.lhs External.hs Lock.lhs Changes.lhs Autoconf.lhs \ Curl.hs PrintPatch.lhs PopulationData.lhs Population.lhs \ FileName.lhs UTF8.lhs Exec.lhs Zlib.lhs RegChars.lhs \ Unrevert.lhs PatchChoices.lhs SelectChanges.lhs \ IsoDate.lhs SHA1.lhs TrackDown.lhs Optimize.lhs \ Rerecord.lhs Context.lhs AntiMemo.hs \ Rollback.lhs SignalHandler.lhs Workaround.hs Annotate.lhs \ Repair.lhs DarcsUtils.lhs TouchesFiles.lhs DarcsURL.hs Printer.lhs \ PatchBundle.lhs DarcsFlags.lhs Resolve.lhs DateMatcher.lhs \ Send.lhs PatchMatch.lhs PatchMatchData.lhs Match.lhs CGI_FILES = Lcs.lhs SlurpDirectory.lhs \ Repository.lhs DarcsArguments.lhs \ Diff.lhs PatchInfo.lhs DateMatcher.lhs \ Patch.lhs PatchCheck.lhs \ RepoPrefs.lhs Test.lhs AntiMemo.hs \ Depends.lhs RepoTypes.lhs PatchChoices.lhs \ FastPackedString.hs SHA1.lhs IsoDate.lhs \ Resolution.lhs External.hs Lock.lhs Autoconf.lhs Workaround.hs \ Curl.hs PrintPatch.lhs Population.lhs PopulationData.lhs \ FileName.lhs UTF8.lhs Exec.lhs Zlib.lhs RegChars.lhs \ DarcsUtils.lhs DarcsURL.lhs Printer.lhs \ PatchBundle.lhs DarcsFlags.lhs \ PatchMatch.lhs PatchMatchData.lhs Match.lhs C_OBJS = compat.o fpstring.o zlib_helper.o c_context.o ifeq ($(SYS), windows) GHCFLAGS += -iwin32 -Iwin32 -threaded Lock.o: GHCFLAGS += -DOVERRIDE_RENAMEFILE -DWIN32 win32/Posix.o: GHCFLAGS += -fffi -fglasgow-exts win32/CtrlC.o: GHCFLAGS += -fffi DARCS_FILES += win32/Posix.hs win32/CtrlC.hs CGI_FILES += win32/Posix.hs C_OBJS += win32/CtrlC_stub.o Exec.o: GHCFLAGS += -DHELLOWIN32 -fffi else Lock.o: GHCFLAGS += -fffi Exec.o: GHCFLAGS += -fffi endif # SHA1 needs "forall s ." for runSTUArray until we can assume we have # the new libraries SHA1.o: GHCFLAGS += -fglasgow-exts ifeq ($(HAVE_CURSES),True) GHCFLAGS += -DHAVE_CURSES endif ifeq ($(HAVE_MAPI),True) C_OBJS += win32/send_email.o win32/send_email.o: CPPFLAGS += -Iwin32 GHCFLAGS += -lmapi32 endif Curl.o: GHCFLAGS += -fffi ifeq ($(HAVE_LIBCURL),True) C_OBJS += hscurl.o Curl.o: GHCFLAGS += -DHAVE_CURL endif CGI_OBJS = $(patsubst %.hs,%.o,$(patsubst %.lhs,%.o,$(CGI_FILES))) DARCS_OBJS = $(patsubst %.hs,%.o,$(patsubst %.lhs,%.o,$(DARCS_FILES))) GHCFLAGS += -package util SignalHandler.o: GHCFLAGS += -fglasgow-exts darcs_cgi.o darcs_cgi .depend: GHCFLAGS += -package net .PHONY: all clean distclean realclean dist deb test check install \ installserver installdocs installbin windowsinstaller config: configure autoconf.mk installbin: all $(INSTALL) -d $(DESTDIR)/$(bindir) $(INSTALL) darcs $(DESTDIR)/$(bindir) $(INSTALL) -d $(DESTDIR)/$(sysconfdir)/bash_completion.d/ $(INSTALL) -m 0644 darcs_completion $(DESTDIR)/$(sysconfdir)/bash_completion.d/darcs $(INSTALL) -d $(DESTDIR)/$(mandir)/man1 $(INSTALL) -m 0644 darcs.1 $(DESTDIR)/$(mandir)/man1/ installdocs: darcs.ps manual/index.html $(INSTALL) -d $(DESTDIR)/$(datadir)/doc/darcs/manual $(INSTALL) -m 0644 darcs.ps $(DESTDIR)/$(datadir)/doc/darcs $(INSTALL) -m 0644 manual/* $(DESTDIR)/$(datadir)/doc/darcs/manual $(INSTALL) -d $(DESTDIR)/$(datadir)/doc/darcs/examples $(INSTALL) -m 0644 zsh_completion_new $(DESTDIR)/$(datadir)/doc/darcs/examples/ $(INSTALL) -m 0644 zsh_completion_old $(DESTDIR)/$(datadir)/doc/darcs/examples/ installserver: darcs_cgi darcs-createrepo cgi/darcs.cgi $(INSTALL) -d $(DESTDIR)/$(libexecdir)/cgi-bin $(INSTALL) darcs_cgi $(DESTDIR)/$(libexecdir)/cgi-bin/darcs $(INSTALL) -d $(DESTDIR)/$(sbindir) $(INSTALL) darcs-createrepo $(DESTDIR)/$(sbindir) $(INSTALL) -d $(DESTDIR)/$(sysconfdir)/darcs test -e $(DESTDIR)/$(sysconfdir)/darcs/cgi.conf || \ $(INSTALL) -m 0644 cgi/cgi.conf $(DESTDIR)/$(sysconfdir)/darcs/cgi.conf $(INSTALL) cgi/darcs.cgi $(DESTDIR)/$(libexecdir)/cgi-bin/darcs.cgi $(INSTALL) -d $(DESTDIR)/$(datadir)/darcs $(INSTALL) -d $(DESTDIR)/$(datadir)/darcs/xslt $(INSTALL) -m 644 cgi/xslt/*.xslt $(DESTDIR)/$(datadir)/darcs/xslt/ $(INSTALL) -m 644 cgi/xslt/styles.css $(DESTDIR)/$(datadir)/darcs/xslt/styles.css # Debian policy doesn't allow symlinks as configuration files. # test -e $(DESTDIR)/$(sysconfdir)/darcs/styles.css || \ # ln -s $(datadir)/darcs/xslt/styles.css \ # $(DESTDIR)/$(sysconfdir)/darcs/styles.css $(INSTALL) -m 644 cgi/xslt/styles.css $(DESTDIR)/$(sysconfdir)/darcs/styles.css dist: darcs ./darcs dist --dist-name darcs-`./darcs --version` deb: darcs rm -rf /tmp/darcs-deb_temp && \ ./darcs dist --dist-name darcs-deb_temp && \ mv darcs-deb_temp.tar.gz /tmp && \ cd /tmp && tar zxf darcs-deb_temp.tar.gz && \ cd darcs-deb_temp && debuild && \ rm -rf /tmp/darcs-deb_temp windowsinstaller: darcs manual/index.html darcs.nsi echo "!define VERSION $(DARCS_VERSION)" > version.nsi "$(MAKENSIS)" version.nsi darcs.nsi rm -f version.nsi darcs: $(DARCS_OBJS) darcs.lhs $(C_OBJS) rts.o @echo Linking $@ ... @rm -f Main.o Main.hi @$(GHC) $(GHCFLAGS) $(OPTLLDFLAGS) -o $@ $^ External.o: GHCFLAGS += -fffi Context.o: GHCFLAGS += -fffi SlurpDirectory.o: GHCFLAGS += -fffi Zlib.o: GHCFLAGS += -fffi FastPackedString.o: GHCFLAGS += $(FPSTRINGSTUFF) SelectChanges.o: GHCFLAGS += -fffi darcsman: darcsman.hs $(C_OBJS) $(DARCS_OBJS) darcs_cgi: darcs_cgi.lhs rts.o $(C_OBJS) $(CGI_OBJS) darcs-createrepo: darcs-createrepo.lhs Autoconf.o rts.o unit: unit.lhs $(DARCS_OBJS) PatchCheck.o rts.o $(C_OBJS) preproc: GHCFLAGS += -package text preproc: preproc.hs $(C_OBJS) $(DARCS_OBJS) darcs.tex: preproc darcs.lhs darcs_cgi.lhs features.tex \ switching.tex configuring_darcs.tex \ darcs-createrepo.lhs $(DARCS_FILES) building_darcs.tex ./preproc darcs.lhs > darcs.tex manual/index.html: darcs.tex darcs_cgi.lhs gpl.tex $(MAKEMANUAL) manual/bigpage.html: darcs.tex darcs_cgi.lhs gpl.tex ln -s darcs.tex bigpage.tex latex2html -split 0 -external_file darcs -prefix big \ -no_auto_link -local_icons -dir manual bigpage.tex rm bigpage.tex index.html: index.html.in darcs manual/bigpage.html sed "s/VERSION/`./darcs --version`/" $< > $@ darcs.ps: darcs.tex darcs.1: darcsman ./darcsman > darcs.1 test check: darcs unit @(set -ev && cd tests && \ for TEST in `ls *.sh`; \ do \ echo Running $$TEST ...; \ sh $$TEST; \ done \ ) ./unit clean: rm -f *.o *.hi unit diff darcs darcs_cgi rm -f Context.hs c_context.c stringify rm -f darcs.tex darcs.dvi darcs.aux rm -f darcs-createrepo preproc darcsman rm -rf tests/temp* darcs.log darcs.toc rm -f conftest* .depend.bak rm -f win32/*.o win32/*.hi rm -f version.nsi distclean: clean rm -rf config.status config.log autoconf.mk config.cache autom4te.cache rm -f darcs.ps darcs.pdf Autoconf.lhs Workaround.hs realclean: distclean rm -f configure darcs.1 .depend configure: configure.ac aclocal.m4 autoconf autoconf.mk Autoconf.lhs cgi/darcs.cgi: config.status \ autoconf.mk.in Autoconf.lhs.in cgi/darcs.cgi.in sh config.status config.status: configure if test -f config.command; then sh ./config.command; \ else sh ./configure; fi .depend: $(wildcard *.lhs) $(wildcard *.hs) @echo Rebuild dependencies ... @$(GHC) $(GHCFLAGS) -package util -package text -M -optdep-f -optdep.depend $^ .depend: autoconf.mk ifeq (,$(findstring clean,$(MAKECMDGOALS))) ifneq (config,$(MAKECMDGOALS)) include .depend endif endif