make: clean out old stuff
[ci skip]
This commit is contained in:
		
							parent
							
								
									47f3ebf25a
								
							
						
					
					
						commit
						1ff2516a84
					
				
							
								
								
									
										508
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										508
									
								
								Makefile
									
									
									
									
									
								
							| @ -1,5 +1,6 @@ | ||||
| # One of two project scripts files (Makefile, Shake.hs).
 | ||||
| # This one is usually the simplest to use.
 | ||||
| # This one was a reboot of Makefile.old.
 | ||||
| # It is probably used by hledger developers/contributors but not end-users.
 | ||||
| # It requires GNU Make (https://www.gnu.org/software/make/).
 | ||||
| # Also, some rules require:
 | ||||
| # - stack (http://haskell-lang.org/get-started, installs libs and runs ghc)
 | ||||
| @ -10,53 +11,43 @@ | ||||
| # - hpack (hackage/stackage, generates cabal files from package.yaml files)
 | ||||
| # - site/hakyll-std/hakyll-std (generic site-building hakyll script)
 | ||||
| # - perl
 | ||||
| 
 | ||||
| # WARNING: don't edit this with IDEA, it rewrites CLEANUPCHANGES below
 | ||||
| 
 | ||||
| # This was a reboot of Makefile.old. The old rules were commented out below,
 | ||||
| # to be removed or updated over the next while.
 | ||||
| #
 | ||||
| # Target users: hledger developers, contributors, probably not end-users.
 | ||||
| #
 | ||||
| # Kinds of hledger builds:
 | ||||
| #
 | ||||
| # - stack build: built with stack
 | ||||
| #   (hledger/.stack-work/dist/ARCH/CABAL/build/hledger/hledger,
 | ||||
| #   .stack-work/install/ARCH/SNAPSHOT/GHC/bin/hledger, installs to ~/.local/bin)
 | ||||
| # - cabal build: built with cabal (and maybe a sandbox)
 | ||||
| # - cabal (v1) build: built with cabal (and maybe a sandbox)
 | ||||
| #   (hledger/dist/build/hledger/hledger, installs to ~/.cabal/bin)
 | ||||
| # - ghc build: built quickly with ghc only, unoptimised, with DEVELOPMENT flag
 | ||||
| #   (bin/hledgerdev)
 | ||||
| # - ghc-only build: built quickly with ghc only, unoptimised, with DEVELOPMENT flag
 | ||||
| #   (hledgerdev)
 | ||||
| #
 | ||||
| # This makefile mostly uses stack to get things done (slow but robust).
 | ||||
| # Secondarily it uses ghc directly to do some developer tasks (faster).
 | ||||
| # # Also if needed it uses cabal directly for a few tasks.
 | ||||
| # It may sometimes (still ?) use ghc only, or cabal, when easier.
 | ||||
| 
 | ||||
| # XXX do we need this ?
 | ||||
| #SHELL=/bin/bash
 | ||||
| #.SHELLFLAGS="-O extglob -c" # example
 | ||||
| 
 | ||||
| # help system
 | ||||
| # Every user-relevant rule in this makefile should use def-help to define
 | ||||
| # a help string. Use "make help" to see the available rules.
 | ||||
| ###############################################################################
 | ||||
| # MAKEFILE HELP SYSTEM
 | ||||
| 
 | ||||
| # def-help* functions for documenting make rules. See the file for usage.
 | ||||
| # This defines the def-help* functions for describing make rules
 | ||||
| # (see this file for usage details), and a default "help" rule.
 | ||||
| # Every user-relevant rule in this makefile should use def-help to
 | ||||
| # describe itself.
 | ||||
| -include help-system.mk | ||||
| 
 | ||||
| $(call def-help-heading,Main make rules in the hledger project.) | ||||
| $(call def-help-heading,(not always entirely up to date)) | ||||
| $(call def-help-heading,---------------------------------------) | ||||
| $(call def-help-heading, ) | ||||
| 
 | ||||
| add-to-help-1: $(call def-help,[help], list documented rules in this makefile ) | ||||
| 
 | ||||
| # Show all this makefile's rule descriptions on "make" or "make help";
 | ||||
| # or just  matching descriptions on "make help-SUBSTR" or "make SUBSTR-help".
 | ||||
| $(call def-help-heading,Main rules in the hledger project Makefile:) | ||||
| $(call def-help-subheading,HELP:) | ||||
| dummy1: $(call def-help,[help], list documented rules in this makefile ) | ||||
| help-%: $(call def-help,help-SECTION, list documented rules containing some string ) | ||||
| 	make help 2>&1 | grep -i $* | ||||
| 
 | ||||
| %-help: $(call def-help,SECTION-help, same but easier to type (can append "-help" to any "make RULE") ) | ||||
| 	@make help 2>&1 | grep -i $* | ||||
| 
 | ||||
| add-to-help-2: $(call def-help,RULE -n, show what RULE would do ) | ||||
| dummy2: $(call def-help,RULE -n, show what RULE would do ) | ||||
| 
 | ||||
| ###############################################################################
 | ||||
| # VARS
 | ||||
| @ -200,51 +191,17 @@ WARNINGS:=\ | ||||
| 	-fno-warn-orphans \
 | ||||
| 	-fno-warn-type-defaults \
 | ||||
| 
 | ||||
| # # For ghc-only dev builds of hledger-web: enable the language
 | ||||
| # # extensions specified in hledger-web.cabal, except for some which are
 | ||||
| # # not compatible with hledger-lib and hledger, or little-used; those
 | ||||
| # # are enabled with source file pragmas instead. Note: compilation
 | ||||
| # # warnings and errors might differ between ghc-only and cabal builds.
 | ||||
| # WEBLANGEXTS:=\
 | ||||
| # 	-XCPP \
 | ||||
| # 	-XMultiParamTypeClasses \
 | ||||
| # 	-XQuasiQuotes \
 | ||||
| # 	-XRecordWildCards \
 | ||||
| # 	-XTemplateHaskell \
 | ||||
| # #	-XOverloadedStrings \
 | ||||
| # #	-XNoImplicitPrelude \
 | ||||
| # #	-XTypeFamilies \
 | ||||
| # #	-XGADTs \
 | ||||
| # #	-XGeneralizedNewtypeDeriving \
 | ||||
| # #	-XFlexibleContexts \
 | ||||
| # #	-XEmptyDataDecls \
 | ||||
| # #	-XNoMonomorphismRestriction
 | ||||
| # if you have need to try building in less memory
 | ||||
| # GHCLOWMEMFLAGS= #+RTS -M200m -RTS
 | ||||
| 
 | ||||
| # PREFERMACUSRLIBFLAGS=-L/usr/lib
 | ||||
| # GHCMEMFLAGS= #+RTS -M200m -RTS
 | ||||
| 
 | ||||
| # ghc builds need the macro definitions generated by cabal
 | ||||
| # from cabal's dist or dist-sandbox dir, hopefully there's just one
 | ||||
| # ghc-only builds need the macro definitions generated by cabal
 | ||||
| # from cabal's dist or dist-sandbox dir, hopefully there's just one:
 | ||||
| #CABALMACROSFLAGS=-optP-include -optP hledger/dist*/build/autogen/cabal_macros.h
 | ||||
| # from stack's dist dir, hopefully there's just one. If not (after cabal upgrade), will get warnings. Maybe obsolete ?
 | ||||
| # or from stack's dist dir:
 | ||||
| #CABALMACROSFLAGS=-optP-include -optP hledger/.stack-work/dist/*/*/build/autogen/cabal_macros.h
 | ||||
| 
 | ||||
| BUILDFLAGS1=-rtsopts $(WARNINGS) $(INCLUDEPATHS) $(PREFERMACUSRLIBFLAGS) $(GHCMEMFLAGS) $(CABALMACROSFLAGS) -DPATCHLEVEL=$(PATCHLEVEL) -DDEVELOPMENT | ||||
| BUILDFLAGS=$(BUILDFLAGS1) -DVERSION="\"$(VERSION)\"" | ||||
| BUILDFLAGS=-rtsopts $(WARNINGS) $(INCLUDEPATHS) $(GHCLOWMEMFLAGS) $(CABALMACROSFLAGS) -DPATCHLEVEL=$(PATCHLEVEL) -DDEVELOPMENT -DVERSION="\"$(VERSION)\"" | ||||
| # PROFBUILDFLAGS:=-prof -fprof-auto -osuf hs_p
 | ||||
| # # sp needs different quoting:
 | ||||
| # AUTOBUILDFLAGS:=$(BUILDFLAGS1) -DVERSION='\"$(VERSION)dev\"' # $(PROFBUILDFLAGS)
 | ||||
| # LINUXRELEASEBUILDFLAGS:=-DMAKE $(WARNINGS) $(INCLUDEPATHS) -O2 -static -optl-static -optl-pthread
 | ||||
| # MACRELEASEBUILDFLAGS:=-DMAKE $(WARNINGS) $(INCLUDEPATHS) $(PREFERMACUSRLIBFLAGS) -O2 # -optl-L/usr/lib
 | ||||
| # #WINDOWSRELEASEBUILDFLAGS:=-DMAKE $(WARNINGS) $(INCLUDEPATHS)
 | ||||
| 
 | ||||
| # AUTOBUILD=$(SP) --no-exts --no-default-map $(GHC)  -O0 $(GHCMEMFLAGS)
 | ||||
| 
 | ||||
| # # get an accurate binary filename for the current source and platform, slow but reliable. Avoid := here.
 | ||||
| # BINARYFILENAME=$(shell touch $(VERSIONSOURCEFILE); runhaskell -ihledger -ihledger-lib $(MAIN) --binary-filename)
 | ||||
| 
 | ||||
| # # some other thing for linux binary filenames
 | ||||
| # RELEASEBINARYSUFFIX=$(shell echo "-$(VERSION)-`uname`-`arch`" | tr '[:upper:]' '[:lower:]')
 | ||||
| 
 | ||||
| TIME=$(shell date +"%Y%m%d%H%M") | ||||
| MONTHYEAR=$(shell date +'%B %Y') | ||||
| @ -256,26 +213,6 @@ install: \ | ||||
| 	$(call def-help,install, download dependencies and install hledger executables to ~/.local/bin or equivalent (with stack)) | ||||
| 	$(STACK) install | ||||
| 
 | ||||
| # cabal-install: \
 | ||||
| # 	$(call def-help,cabal-install,\
 | ||||
| # 	cabal install the main hledger packages and all their dependencies\
 | ||||
| # 	in the sandbox if any; otherwise in the users package db\
 | ||||
| # 	)
 | ||||
| # 	$(CABALINSTALL) $(patsubst %,./%,$(PACKAGES)) $(EXTRAINSTALLARGS) --enable-tests
 | ||||
| 
 | ||||
| # cabal-install-deps: \
 | ||||
| # 	$(call def-help,cabal-install-deps,\
 | ||||
| # 	cabal install the dependencies for the main hledger packages, but not the hledger packages \
 | ||||
| # 	)
 | ||||
| # 	$(CABALINSTALL) $(patsubst %,./%,$(PACKAGES)) $(EXTRAINSTALLARGS) --enable-tests --only-dependencies
 | ||||
| 
 | ||||
| # # uninstall: \
 | ||||
| # # 	$(call def-help,uninstall,\
 | ||||
| # # 	unregister all packages, assuming they are defined lowest-dependency first\
 | ||||
| # # 	avoids some reinstall noise when repeatedly doing make install\
 | ||||
| # # 	)
 | ||||
| # # 	-for p in $(call reverse,$(PACKAGES)); do $(GHCPKG) unregister $$p; done
 | ||||
| 
 | ||||
| ###############################################################################
 | ||||
| $(call def-help-subheading,BUILDING:) | ||||
| 
 | ||||
| @ -293,23 +230,6 @@ build: \ | ||||
| # 	@($(SHELLTEST) checks \
 | ||||
| # 		&& echo $@ PASSED) || echo $@ FAILED
 | ||||
| 
 | ||||
| # auto: auto---version \
 | ||||
| # 	$(call def-help,auto,\
 | ||||
| # 	auto-recompile and run (something, eg --help or unit tests) whenever a module changes\
 | ||||
| # 	)
 | ||||
| 
 | ||||
| # auto-%: sp \
 | ||||
| # 	$(call def-help,auto-%,\
 | ||||
| # 	\
 | ||||
| # 	)
 | ||||
| # 	$(AUTOBUILD) $(MAIN) -o bin/hledgerdev $(AUTOBUILDFLAGS) --run $*
 | ||||
| 
 | ||||
| # autoweb: sp link-web-dirs \
 | ||||
| # 	$(call def-help,autoweb,\
 | ||||
| # 	\
 | ||||
| # 	)
 | ||||
| # 	$(AUTOBUILD) hledger-web/app/main.hs -o bin/hledger-webdev $(AUTOBUILDFLAGS) $(WEBLANGEXTS) --run -B --port 5001 --base-url http://localhost:5001 -f webtest.j
 | ||||
| 
 | ||||
| link-web-dirs: config messages static templates \ | ||||
| 	$(call def-help,link-web-dirs,\
 | ||||
| 	\
 | ||||
| @ -339,35 +259,8 @@ templates: \ | ||||
| 	) | ||||
| 	ln -sf hledger-web/$@ | ||||
| 
 | ||||
| # sp: \
 | ||||
| # 	$(call def-help,sp,\
 | ||||
| # 	check for sp and explain how to get it if not found.\
 | ||||
| # 	)
 | ||||
| # 	@/usr/bin/env which sp >/dev/null || \
 | ||||
| # 	  (echo '"sp" is required for auto-compilation. darcs get http://joyful.com/darcsden/simon/searchpath, make it (cabal install-ing any needed packages) and add it to your PATH'; exit 1)
 | ||||
| 
 | ||||
| # force a compile even if binary exists, since we don't specify dependencies for these
 | ||||
| .PHONY: bin/hledgerdev bin/hledgerprof # bin/hledger-webdev
 | ||||
| 
 | ||||
| # NB requires cabal macros generated by cabal build in hledger/
 | ||||
| bin/hledgerdev hledgerdev: \ | ||||
| 	$(call def-help,hledgerdev, build an unoptimised "bin/hledgerdev" executable quickly (with ghc) ) | ||||
| 	$(GHC) $(MAIN) -o bin/hledgerdev $(BUILDFLAGS) | ||||
| 
 | ||||
| # bin/hledgerdev.ghc-%: $(SOURCEFILES) \
 | ||||
| # 	$(call def-help,bin/hledgerdev.ghc-%,\
 | ||||
| # 	build a GHC-version-specific hledger binary without disturbing with other GHC version builds\
 | ||||
| # 	)
 | ||||
| # 	ghc-$*  $(MAIN) -o $@ $(BUILDFLAGS)  -outputdir .ghc-$*
 | ||||
| 
 | ||||
| # bin/hledgerdev.ghcall: \
 | ||||
| # 	bin/hledgerdev.ghc-7.6.1 \
 | ||||
| # 	bin/hledgerdev.ghc-7.4.1 \
 | ||||
| # 	bin/hledgerdev.ghc-7.2.2 \
 | ||||
| # 	bin/hledgerdev.ghc-7.0.4 \
 | ||||
| # 	$(call def-help,bin/hledgerdev.ghcall,\
 | ||||
| # 	build hledger with the main supported GHC versions\
 | ||||
| # 	)
 | ||||
| .PHONY: bin/hledgerprof bin/hledgercov | ||||
| 
 | ||||
| hledgerprof: \ | ||||
| 	$(call def-help,hledgerprof, build "hledgerprof" for profiling (with stack) ) | ||||
| @ -375,19 +268,6 @@ hledgerprof: \ | ||||
| 	cp `$(STACK) exec which hledger`{,prof} | ||||
| 	@echo to profile, use $(STACK) exec -- hledgerprof ... | ||||
| 
 | ||||
| # bin/hledgerprof: \
 | ||||
| # 	$(call def-help,bin/hledgerprof,\
 | ||||
| # 	build the "production" cabal build with profiling enabled.\
 | ||||
| # 	)
 | ||||
| # 	rm -f bin/hledgerprof
 | ||||
| # 	cabal install --enable-profiling --ghc-options=-fprof-auto ./hledger-lib ./hledger \
 | ||||
| # 		&& mv  $(CABALINSTALLDIR)/bin/hledger bin/hledgerprof
 | ||||
| 
 | ||||
| # # build the dev build with profiling enabled.
 | ||||
| # # not working with cabal sandbox
 | ||||
| # # bin/hledgerdev-prof:
 | ||||
| # # 	$(GHC) $(BUILDFLAGS) $(PROFBUILDFLAGS) $(MAIN) -o $@
 | ||||
| 
 | ||||
| hledgercov: \ | ||||
| 	$(call def-help,hledgercov, build "bin/hledgercov" for coverage reports (with ghc) ) | ||||
| 	$(GHC) $(MAIN) -fhpc -o bin/hledgercov -outputdir .hledgercovobjs $(BUILDFLAGS) | ||||
| @ -397,14 +277,6 @@ dev: dev.hs $(SOURCEFILES) \ | ||||
| 	$(call def-help,dev, build the dev.hs script for quick experiments (with ghc) ) | ||||
| 	$(STACK) ghc -- $(CABALMACROSFLAGS) -ihledger-lib dev.hs \
 | ||||
| 
 | ||||
| # dev0: dev.hs $(SOURCEFILES) \
 | ||||
| # 	$(call def-help,dev, build the dev.hs script for quick experiments (with ghc -O0) )
 | ||||
| # 	$(STACK) ghc -- -O0 $(CABALMACROSFLAGS) -ihledger-lib dev.hs -o dev0 \
 | ||||
| 
 | ||||
| # dev2: dev.hs $(SOURCEFILES) \
 | ||||
| # 	$(call def-help,dev, build the dev.hs script for quick experiments (with ghc -O2) )
 | ||||
| # 	$(STACK) ghc -- -O2 $(CABALMACROSFLAGS) -ihledger-lib dev.hs -o dev2 \
 | ||||
| 
 | ||||
| # to get profiling deps installed, first do something like:
 | ||||
| # stack build --library-profiling hledger-lib timeit criterion
 | ||||
| devprof: dev.hs $(SOURCEFILES) \ | ||||
| @ -426,130 +298,6 @@ dev-heap-upload: | ||||
| 	curl -F "file=@devprof-hc.hp" -F "title='hledger parser'" http://heap.ezyang.com/upload | ||||
| 	curl -F "file=@devprof-hr.hp" -F "title='hledger parser'" http://heap.ezyang.com/upload | ||||
| 
 | ||||
| # # build other executables quickly
 | ||||
| 
 | ||||
| # bin/hledger-webdev: link-web-dirs \
 | ||||
| # 	$(call def-help,bin/hledger-webdev,\
 | ||||
| # 	\
 | ||||
| # 	)
 | ||||
| # 	$(GHC) -o $@ $(BUILDFLAGS) $(WEBLANGEXTS) hledger-web/app/main.hs
 | ||||
| 
 | ||||
| # bin/hledger-web-production: \
 | ||||
| # 	$(call def-help,bin/hledger-web-production,\
 | ||||
| # 	\
 | ||||
| # 	)
 | ||||
| # 	$(GHC) -o $@ $(BUILDFLAGS) $(WEBLANGEXTS) hledger-web/app/main.hs
 | ||||
| 
 | ||||
| # linuxbinaries: 	linuxbinary-hledger \
 | ||||
| # 		linuxbinary-hledger-web \
 | ||||
| # 	$(call def-help,linuxbinaries,\
 | ||||
| # 	build portable releaseable binaries for gnu/linux\
 | ||||
| # 	)
 | ||||
| # 	@echo 'Please check the binaries look portable, then make compressbinaries:'
 | ||||
| # 	-file bin/*`arch`
 | ||||
| 
 | ||||
| # linuxbinary-hledger: \
 | ||||
| # 	$(call def-help,linuxbinary-hledger,\
 | ||||
| # 	work around for inconsistently-named (why ?) hledger/app/hledger-cli.hs\
 | ||||
| # 	)
 | ||||
| # 	$(GHC) hledger/app/hledger-cli.hs -o bin/$*$(RELEASEBINARYSUFFIX) $(LINUXRELEASEBUILDFLAGS)
 | ||||
| 
 | ||||
| # linuxbinary-%: \
 | ||||
| # 	$(call def-help,linuxbinary-%,\
 | ||||
| # 	\
 | ||||
| # 	)
 | ||||
| # 	$(GHC) $*/$*.hs -o bin/$*$(RELEASEBINARYSUFFIX) $(LINUXRELEASEBUILDFLAGS)
 | ||||
| 
 | ||||
| # macbinaries:    macbinary-hledger \
 | ||||
| # 		macbinary-hledger-web \
 | ||||
| # 	$(call def-help,macbinaries,\
 | ||||
| # 	\
 | ||||
| # 	)
 | ||||
| # 	@echo 'Please check the binaries are portable, then make compressbinaries'
 | ||||
| # 	otool -L bin/*`arch`
 | ||||
| 
 | ||||
| # macbinary-%: \
 | ||||
| # 	$(call def-help,macbinary-%,\
 | ||||
| # 	build a deployable mac binary for the specified hledger package, munging\
 | ||||
| # 	the link command to use only standard osx libs.  Specifically we link\
 | ||||
| # 	without the non-standard GMP framework, which causes no apparent harm.\
 | ||||
| # 	Clunky, does the link twice.\
 | ||||
| # 	)
 | ||||
| # 	BINARY=`echo $(BINARYFILENAME) | sed -e 's/hledger/$*/'` ; \
 | ||||
| # 	LINKCMD=`$(GHC) -v  $*/$*.hs $(MACRELEASEBUILDFLAGS) -o bin/$$BINARY 2>&1 | egrep "bin/gcc.*bin/$$BINARY"` ; \
 | ||||
| # 	PORTABLELINKCMD=`echo $$LINKCMD | sed -e 's/ -framework GMP//'` ; \
 | ||||
| # 	echo $$PORTABLELINKCMD; $$PORTABLELINKCMD
 | ||||
| 
 | ||||
| # windowsbinaries: install \
 | ||||
| # 	$(call def-help,windowsbinaries,\
 | ||||
| # 	Run this on a windows machine or in a wine session, and probably in a\
 | ||||
| # 	separate copy of the repo (hledger-win).\
 | ||||
| # 	Builds and gather deployable binaries for windows, if cygwin tools are\
 | ||||
| # 	present and all packages are buildable. Otherwise, cabal install each\
 | ||||
| # 	package and gather the binaries by hand.\
 | ||||
| # 	)
 | ||||
| # 	cp ~/.cabal/bin/hledger.exe bin/`echo $(BINARYFILENAME) | dos2unix`
 | ||||
| # 	-cp ~/.cabal/bin/hledger-web.exe bin/`echo $(BINARYFILENAME) | sed -e 's/hledger/hledger-web/' | dos2unix`
 | ||||
| # 	@echo 'Please check the binaries are portable, then make compressbinaries'
 | ||||
| # 	ls -l bin/*`arch`
 | ||||
| 
 | ||||
| # wine-cmd: \
 | ||||
| # 	$(call def-help,wine-cmd,\
 | ||||
| # 	various ways of getting a wine shell\
 | ||||
| # 	command-line windows command prompt. Works eg in an emacs shell buffer.\
 | ||||
| # 	)
 | ||||
| # 	wine cmd
 | ||||
| 
 | ||||
| # wine-cmd2: \
 | ||||
| # 	$(call def-help,wine-cmd2,\
 | ||||
| # 	as above but try to cd somewhere useful (doesnt work), also ctrl-d exits quickly\
 | ||||
| # 	)
 | ||||
| # 	(echo c:; echo cd \\mingw\\msys\\1.0; cat) | wine cmd
 | ||||
| 
 | ||||
| # wine-cmd-window: \
 | ||||
| # 	$(call def-help,wine-cmd-window,\
 | ||||
| # 	windows command prompt in a new window\
 | ||||
| # 	)
 | ||||
| # 	wineconsole cmd &
 | ||||
| 
 | ||||
| # wine-mintty: \
 | ||||
| # 	$(call def-help,wine-mintty,\
 | ||||
| # 	msys bash shell in a mintty window\
 | ||||
| # 	)
 | ||||
| # 	wine c:/mingw/msys/1.0/bin/mintty - &
 | ||||
| 
 | ||||
| # compressbinaries: \
 | ||||
| # 	$(call def-help,compressbinaries,\
 | ||||
| # 	\
 | ||||
| # 	)
 | ||||
| # 	cd bin; for f in *-windows-*.exe ; do echo zipping $$f; rm -f $$f.zip; zip $$f.zip $$f; done
 | ||||
| # #	for f in bin/*-{linux,mac-}* ; do echo gzipping $$f; gzip -q $$f >$$f.gz; done
 | ||||
| # #	gzip bin/*`arch`
 | ||||
| 
 | ||||
| # tools/unittest: tools/unittest.hs \
 | ||||
| # 	$(call def-help,tools/unittest,\
 | ||||
| # 	build the standalone unit test runner. Requires test-framework, which\
 | ||||
| # 	may not work on windows.\
 | ||||
| # 	)
 | ||||
| # 	$(GHC) -threaded -O2 tools/unittest.hs
 | ||||
| 
 | ||||
| # tools/doctest: tools/doctest.hs \
 | ||||
| # 	$(call def-help,tools/doctest,\
 | ||||
| # 	build the doctest runner\
 | ||||
| # 	)
 | ||||
| # 	$(GHC) tools/doctest.hs
 | ||||
| 
 | ||||
| # tools/criterionbench: tools/criterionbench.hs \
 | ||||
| # 	$(call def-help,tools/criterionbench,\
 | ||||
| # 	build the criterion-based benchmark runner. Requires criterion.\
 | ||||
| # 	)
 | ||||
| # 	$(GHC) tools/criterionbench.hs
 | ||||
| 
 | ||||
| # tools/progressionbench: tools/progressionbench.hs \
 | ||||
| # 	$(call def-help,tools/progressionbench,\
 | ||||
| # 	build the progression-based benchmark runner. Requires progression.\
 | ||||
| # 	)
 | ||||
| # 	$(GHC) tools/progressionbench.hs
 | ||||
| 
 | ||||
| tools/generatejournal: tools/generatejournal.hs \ | ||||
| 		$(call def-help,tools/generatejournal, build the generatejournal tool ) | ||||
| @ -880,150 +628,14 @@ quickheap-%: hledgerprof samplejournals \ | ||||
| # 	)
 | ||||
| # 	$(VIEWHTML) doc/profs/coverage/index.html
 | ||||
| 
 | ||||
| # # XXX with a sandbox, use sandbox-repl-* instead
 | ||||
| # repl-lib:\
 | ||||
| # 	$(call def-help,repl-lib, start a cabal REPL and load the hledger-lib package)
 | ||||
| # 	(cd hledger-lib; cabal repl)
 | ||||
| 
 | ||||
| # repl-cli:\
 | ||||
| # 	$(call def-help,repl-cli, start a cabal REPL and load the hledger package)
 | ||||
| # 	(cd hledger; cabal repl exe:hledger)
 | ||||
| 
 | ||||
| # repl-web:\
 | ||||
| # 	$(call def-help,repl-web, start a cabal REPL and load the hledger-web package)
 | ||||
| # 	(cd hledger-web; cabal repl exe:hledger-web)
 | ||||
| 
 | ||||
| ###############################################################################
 | ||||
| $(call def-help-subheading,DOCUMENTATION:) | ||||
| 
 | ||||
| # docs: site codedocs \
 | ||||
| # 	$(call def-help,docs,\
 | ||||
| # 	rebuild all docs\
 | ||||
| # 	)
 | ||||
| 
 | ||||
| # cleandocs: site-clean \
 | ||||
| # 	$(call def-help,cleandocs,\
 | ||||
| # 	\
 | ||||
| # 	)
 | ||||
| 
 | ||||
| hakyll-std site/hakyll-std/hakyll-std: \ | ||||
| 	site/hakyll-std/hakyll-std.hs \
 | ||||
| 	site/hakyll-std/TableOfContents.hs \
 | ||||
| 		$(call def-help,hakyll-std, build a generic hakyll site builder script ) | ||||
| 	cd site/hakyll-std; ./hakyll-std.hs | ||||
| 
 | ||||
| site-build: site/hakyll-std/hakyll-std site/manual.md \ | ||||
| 	$(call def-help,site-build, generate the hledger.org website with hakyll-std ) | ||||
| 	-cd site; hakyll-std/hakyll-std build | ||||
| 
 | ||||
| site/index.md: wiki/_Sidebar.md \ | ||||
| 	$(call def-help,site/index.md, update home page with ./wiki/_Sidebar content ) | ||||
| 	(sed -ne '1,/<!-- WIKICONTENT -->/ p'     site/index.md     ; \
 | ||||
| 	 sed -ne '/^#.*Cookbook/,$$ p'            wiki/_Sidebar.md \
 | ||||
| 	 | perl -p \
 | ||||
| 			-e 's/\[\[([^\|]*)\|([^\]]*)\]\]/[\1](https:\/\/github.com\/simonmichael\/hledger\/wiki\/\2)/g;' \
 | ||||
| 		  -e 's/\[\[([^\]]*)\]\]/[\1](https:\/\/github.com\/simonmichael\/hledger\/wiki\/\1)/g;' \
 | ||||
| 		  -e 's/^# >/##/;' \
 | ||||
| 	 ; \
 | ||||
| 	 sed -ne '/<!-- ENDWIKICONTENT -->/,$$ p' site/index.md     ) \
 | ||||
| 	> site/_index.md.$$$$ && \
 | ||||
| 	mv site/_index.md.$$$$ site/index.md | ||||
| 
 | ||||
| site/index.md-push: \ | ||||
| 	$(call def-help,site/index.md-push, update home page with ./wiki/_Sidebar content and commit and do a git push if changed ) | ||||
| 	git diff --quiet site/index.md && \
 | ||||
| 	make -s site/index.md && \
 | ||||
| 	( git diff --quiet site/index.md || (git commit -q -m 'site: home: update from wiki' -m '[ci skip]' site/index.md && git push) ) | ||||
| 
 | ||||
| site-clean: site/hakyll-std/hakyll-std \ | ||||
| 	$(call def-help,site-clean, remove hakyll-generated files (& take down the website) ) #cleanolddocs | ||||
| 	-cd site; hakyll-std/hakyll-std clean | ||||
| #	rm -rf site/_site/*
 | ||||
| 
 | ||||
| # regenerate html whenever markdown files change (and serve it on port 8000)
 | ||||
| # XXX hakyll preview/watch often fail to notice changes in large files
 | ||||
| # XXX can get confused when docs are generated concurrently by a Shake command
 | ||||
| # XXX individual file updates loses the stylesheets for some reason
 | ||||
| #     more robust: "ls site/*.md | entr ./Shake website" and reload file:///Users/simon/src/hledger/site/_site/docs.html
 | ||||
| site-preview: site/hakyll-std/hakyll-std \ | ||||
| 	$(call def-help,site-preview, run a hakyll server to preview the website  ) #site/site | ||||
| 	-cd site; hakyll-std/hakyll-std watch # -h hledger.org | ||||
| $(call def-help-subheading,DOCUMENTATION: (see also Shake.hs)) | ||||
| 
 | ||||
| site-livereload: \ | ||||
| 	$(call def-help,site-livereload, open a browser on the latest site html and reload the page whenever it is saved  ) | ||||
| 	(sleep 1; open http://localhost:8001) & | ||||
| 	livereloadx -p 8001 --static site/_site | ||||
| 
 | ||||
| # site-view: site \
 | ||||
| # 	$(call def-help,site-view,\
 | ||||
| # 	\
 | ||||
| # 	)
 | ||||
| # 	$(VIEWHTML) site/_site/index.html
 | ||||
| 
 | ||||
| # # site-auto:
 | ||||
| # # 	cd site; $(AUTOBUILD) site.hs -o site $(PREFERMACUSRLIBFLAGS) --run preview
 | ||||
| 
 | ||||
| # # ensure some old doc versions are in place:
 | ||||
| 
 | ||||
| # #olddocs: doc/0.22 doc/0.21
 | ||||
| 
 | ||||
| # #doc/0.23:
 | ||||
| # #	(cd doc; git archive --prefix doc/0.23/ tags/0.23 'doc/MANUAL.md') | tar xf -
 | ||||
| 
 | ||||
| # # doc/0.22:
 | ||||
| # # 	git archive --prefix doc/0.22/ tags/0.22 'MANUAL.md' | tar xf -
 | ||||
| 
 | ||||
| # # doc/0.21:
 | ||||
| # # 	git archive --prefix doc/0.21/ tags/0.21.3 'MANUAL.md' | tar xf -
 | ||||
| 
 | ||||
| # # cleanolddocs:
 | ||||
| # # 	cd doc; rm -rf 0.22 0.21
 | ||||
| 
 | ||||
| 
 | ||||
| # pdf: codepdf \
 | ||||
| # 	$(call def-help,pdf,\
 | ||||
| # 	\
 | ||||
| # 	) #docspdf
 | ||||
| 
 | ||||
| # # generate pdf versions of main docs
 | ||||
| # # docspdf:
 | ||||
| # # 	-for d in $(DOCFILES); do (cd site && ln -sf ../$$d && pandoc $$d -w pdf && rm -f $$d); done
 | ||||
| 
 | ||||
| # # # format all code as a pdf for offline reading
 | ||||
| # # ENSCRIPT=enscript -q --header='$$n|$$D{%+}|Page $$% of $$=' --highlight=haskell --line-numbers --font=Courier6 --color -o-
 | ||||
| # # codepdf:
 | ||||
| # # 	$(ENSCRIPT) --pretty-print=makefile hledger.cabal >cabal.ps
 | ||||
| # # 	$(ENSCRIPT) --pretty-print=makefile Makefile >make.ps
 | ||||
| # # 	$(ENSCRIPT) --pretty-print=haskell $(SOURCEFILES) >haskell.ps
 | ||||
| # # 	cat cabal.ps make.ps haskell.ps | ps2pdf - >code.pdf
 | ||||
| 
 | ||||
| # # # view all docs and code as pdf
 | ||||
| # # PDFS=site/{README,README2,MANUAL,CHANGES,CONTRIBUTORS}.pdf code.pdf
 | ||||
| # # viewall: pdf
 | ||||
| # # 	$(VIEWPDF) $(PDFS)
 | ||||
| 
 | ||||
| # # # print all docs and code for offline reading
 | ||||
| # # printall: pdf
 | ||||
| # # 	$(PRINT) $(PDFS)
 | ||||
| 
 | ||||
| # pushdocs: push \
 | ||||
| # 	$(call def-help,pushdocs,\
 | ||||
| # 	push latest docs etc. and update the hledger.org site\
 | ||||
| # 	)
 | ||||
| # 	ssh simon@joyful.com 'make -C/repos/hledger docs'
 | ||||
| 
 | ||||
| # EXES=hledger hledger-vty hledger-web
 | ||||
| # savehelp: \
 | ||||
| # 	$(call def-help,savehelp,\
 | ||||
| # 	dump all executables command line help into files for review\
 | ||||
| # 	)
 | ||||
| # 	for e in $(EXES); do $$e --help >.HELP_$$e; done
 | ||||
| 
 | ||||
| # codedocs: haddock hscolour coverage \
 | ||||
| # 	$(call def-help,codedocs,\
 | ||||
| # 	generate api & other code docs\
 | ||||
| # 	) #sourcegraph #hoogle
 | ||||
| 
 | ||||
| # cf http://www.haskell.org/haddock/doc/html/invoking.html
 | ||||
| # --ghc-options=-optP-P is a workaround for http://trac.haskell.org/haddock/ticket/284
 | ||||
| HADDOCKFLAGS= \
 | ||||
| @ -1041,43 +653,12 @@ haddock: \ | ||||
| # 	)
 | ||||
| # 	$(VIEWHTML) hledger/dist/doc/html/hledger/index.html
 | ||||
| 
 | ||||
| # # http://www.cs.york.ac.uk/fp/darcs/hscolour/
 | ||||
| # HSCOLOUR=HsColour -css
 | ||||
| # hscolour: site/api/src site/api/src/hscolour.css \
 | ||||
| # 	$(call def-help,hscolour,\
 | ||||
| # 	\
 | ||||
| # 	)
 | ||||
| # 	for f in $(HADDOCKSOURCEFILES); do \
 | ||||
| # 		$(HSCOLOUR) -anchor $$f -osite/api/src/`echo $$f | sed -e's%[^/]*/%%' | sed -e's%/%-%g' | sed -e's%\.hs$$%.html%'` ; \
 | ||||
| # 	done
 | ||||
| 
 | ||||
| # site/api/src/hscolour.css: site/api/src \
 | ||||
| # 	$(call def-help,site/api/src/hscolour.css,\
 | ||||
| # 	\
 | ||||
| # 	)
 | ||||
| # 	$(HSCOLOUR) -print-css >site/api/src/hscolour.css
 | ||||
| 
 | ||||
| # site/api/src: \
 | ||||
| # 	$(call def-help,site/api/src,\
 | ||||
| # 	\
 | ||||
| # 	)
 | ||||
| # 	mkdir -p site/api/src
 | ||||
| 
 | ||||
| # sourcegraph: \
 | ||||
| # 	$(call def-help,sourcegraph,\
 | ||||
| # 	\
 | ||||
| # 	)
 | ||||
| # 	for p in $(PACKAGES); do (cd $$p; SourceGraph $$p.cabal); done
 | ||||
| 
 | ||||
| # # # generate external api docs for each package
 | ||||
| # # allhaddock: cabalhaddock\ --hyperlink-source\ --executables
 | ||||
| 
 | ||||
| # # # generate internal code docs for each package
 | ||||
| # # allhaddockinternal: cabalhaddock\ --hyperlink-source\ --executables\ --internal
 | ||||
| 
 | ||||
| # # # generate hoogle indices for each package
 | ||||
| # # allhoogle: cabalhaddock\ --hoogle\ --executables
 | ||||
| 
 | ||||
| # #set up the hoogle web interface
 | ||||
| # ## We munge haddock and hoogle into a rough but useful framed layout.
 | ||||
| # ## For this to work the hoogle cgi must be built with base target "main".
 | ||||
| @ -1263,39 +844,6 @@ hackageupload: \ | ||||
| 	$(call def-help,hackageupload, upload all packages to hackage	) | ||||
| 	for p in $(PACKAGES); do stack upload $$p; done | ||||
| 
 | ||||
| # RSYNC=rsync
 | ||||
| 
 | ||||
| # pushprofs: \
 | ||||
| # 	$(call def-help,pushprofs,\
 | ||||
| # 	push any new profiles and benchmark results to the public site\
 | ||||
| # 	beware, results will vary depending on which machine generated them\
 | ||||
| # 	)
 | ||||
| # 	$(RSYNC) -azP doc/profs/ simon@joyful.com:/repos/hledger/doc/profs/
 | ||||
| 
 | ||||
| # pullprofs: \
 | ||||
| # 	$(call def-help,pullprofs,\
 | ||||
| # 	fetch any new profiles and benchmark results from the public site\
 | ||||
| # 	)
 | ||||
| # 	$(RSYNC) -azP simon@joyful.com:/repos/hledger/doc/profs/ doc/profs/
 | ||||
| 
 | ||||
| # compressbinary: \
 | ||||
| # 	$(call def-help,compressbinary,\
 | ||||
| # 	compress the just-built platform binary. make hledgerPLATFORM first. Use\
 | ||||
| # 	the win variant on windows.\
 | ||||
| # 	)
 | ||||
| # 	gzip -9 bin/$(BINARYFILENAME)
 | ||||
| 
 | ||||
| # compressbinarywin: \
 | ||||
| # 	$(call def-help,compressbinarywin,\
 | ||||
| # 	\
 | ||||
| # 	)
 | ||||
| # 	cd bin; zip -9 $(BINARYFILENAME).zip $(BINARYFILENAME)
 | ||||
| 
 | ||||
| # # push the last-updated platform binary to the public download directory
 | ||||
| # # pushlatestbinary:
 | ||||
| # # 	cd bin; $(RSYNC) -aP `ls -t | head -2` simon@joyful.com:/repos/hledger/site/download/
 | ||||
| 
 | ||||
| 
 | ||||
| # showreleasestats stats: \
 | ||||
| # 	showreleasedays \
 | ||||
| # 	showunreleasedchangecount \
 | ||||
| @ -1484,10 +1032,6 @@ cleanghco: \ | ||||
| 	$(call def-help-hide,cleanghc, remove ghc build leftovers ) | ||||
| 	rm -rf `find . -name "*.o" -o -name "*.hi" -o -name "*.dyn_o" -o -name "*.dyn_hi" -o -name "*~" | grep -vE '\.(stack-work|cabal-sandbox|virthualenv)'` | ||||
| 
 | ||||
| cleanghc: cleanghco \ | ||||
| 	$(call def-help-hide,cleanghc, remove ghc builds ) | ||||
| 	rm -f bin/hledgerdev bin/hledgerdev.ghc* | ||||
| 
 | ||||
| clean: cleanghco \ | ||||
| 	$(call def-help,clean, default cleanup (ghc build leftovers) ) | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										1344
									
								
								Makefile.old
									
									
									
									
									
								
							
							
						
						
									
										1344
									
								
								Makefile.old
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user