File: Makefile

package info (click to toggle)
hat 2.02-12
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 8,296 kB
  • ctags: 668
  • sloc: haskell: 64,394; ansic: 6,112; sh: 888; makefile: 451
file content (127 lines) | stat: -rw-r--r-- 4,400 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# Default definitions filled in by config script, included from Makefile.inc
include Makefile.inc
.SUFFIXES: 		# To remove default rules like .cpp -> C++

BASIC = Makefile.inc Makefile README INSTALL COPYRIGHT configure

HATSCRIPT = script/harch script/hat-trans.inst script/hat-template.inst \
		script/echo.c script/confhat script/confhc-hat script/fixghc \
		script/hat-graph script/pkgdirlist \
		src/Makefile.inc include/art.h
HATLIB  = src/hatlib/Makefile* src/hatlib/*.[ch] \
	  src/hatlib/*.hs      src/hatlib/*.hx \
	  src/hatlib/Hat/*.hs  src/hatlib/hat-package.conf \
          src/hatlib/Data/*.h[sx]        src/hatlib/Hat/Data/*.hs \
          src/hatlib/Control/*.hs        src/hatlib/Control/Monad/*.hs \
          src/hatlib/System/*.hs         src/hatlib/System/IO/*.hs \
          src/hatlib/System/Console/*.hs src/hatlib/Debug/*.hs \
          src/hatlib/Text/*.hs           src/hatlib/Text/PrettyPrint/*.hs \
          src/hatlib/Text/ParserCombinators/*.hs \
          src/hatlib/Text/ParserCombinators/Parsec/*.hs \
          src/hatlib/Foreign/*.h[sx]     src/hatlib/Hat/Foreign/*.hs \
          src/hatlib/Foreign/Marshal/*.hs #src/hat/lib/Foreign/C/*.hs
HATUI	= src/hattools/Makefile* src/hattools/*.[ch] src/hattools/*.hs
HATTRANS= src/hattrans/Makefile* \
	$(shell hmake -package lang -M HatTrans.hs \
		-Isrc/hattrans -Isrc/compiler98 \
		| cut -d':' -f1 | sed -e 's/\.o$$/.hs/' | sed -e '/^. /d' )
DOC = docs/*
MAN = man/*.1.in
HATTOOLSET= hat-stack hat-check hat-detect hat-observe hat-trail hat-view 
HATTOOLS= $(patsubst %, lib/$(MACHINE)/%, $(HATTOOLSET))

TARGDIR= targets
TARGETS= hat-trans-ghc hat-trans-nhc \
	 hat-lib-nhc hat-lib-ghc \
	 hat-tools-ghc hat-tools-nhc

.PHONY: default all hat help config install hat-trans hat-lib hat-tools


##### build + install scripts

default: hat
hat:     hat-$(BUILDCOMP)
all:     hat-$(BUILDCOMP) hat-lib-ghc hat-lib-nhc
hat-$(BUILDCOMP): hat-trans-$(BUILDCOMP) hat-lib-$(BUILDCOMP) \
			hat-tools-$(BUILDCOMP)
hat-trans: hat-trans-${BUILDCOMP}
hat-lib:   hat-lib-${BUILDCOMP}
hat-tools: hat-tools-${BUILDCOMP}
help:
	@echo "Default target is:     hat"
	@echo "Main targets include:  hat hat-trans hat-lib hat-tools "
	@echo "                       all (= for ghc + nhc98)"
	@echo "                       config install clean realclean"
	@echo "For a specific build-compiler: hat-ghc hat-nhc"

config:
	./configure --config
install:
	./configure --install
install-noinc:
	./configure --install -inc
install-nolibbinmanincx:
	./configure --install -lib -bin -man -incx



$(TARGETS): % : $(TARGDIR)/$(MACHINE)/%

$(TARGDIR)/$(MACHINE)/hat-trans-nhc: $(HATTRANS)
	cd src/hattrans;     $(MAKE) HC=$(BUILDWITH) all
	touch $(TARGDIR)/$(MACHINE)/hat-trans-nhc
$(TARGDIR)/$(MACHINE)/hat-trans-ghc: $(HATTRANS)
	cd src/hattrans;     $(MAKE) HC=$(BUILDWITH) all
	touch $(TARGDIR)/$(MACHINE)/hat-trans-ghc

$(TARGDIR)/$(MACHINE)/hat-lib-nhc: $(HATLIB)
	cd src/hatlib;	       $(MAKE) HC=$(BUILDWITH) all
	touch $(TARGDIR)/$(MACHINE)/hat-lib-nhc
$(TARGDIR)/$(MACHINE)/hat-lib-ghc: $(HATLIB)
	cd src/hatlib;	       $(MAKE) HC=$(BUILDWITH) all
	touch $(TARGDIR)/$(MACHINE)/hat-lib-ghc

$(TARGDIR)/$(MACHINE)/hat-tools-nhc: $(HATUI)
	cd src/hattools;      $(MAKE) HC=$(BUILDWITH) install
	touch $(TARGDIR)/$(MACHINE)/hat-tools-nhc
$(TARGDIR)/$(MACHINE)/hat-tools-ghc: $(HATUI)
	cd src/hattools;      $(MAKE) HC=$(BUILDWITH) install
	touch $(TARGDIR)/$(MACHINE)/hat-tools-ghc



##### scripts for packaging various distribution formats

binDist:


srcDist:
	rm -f hat-$(HATVERSION).tar hat-$(HATVERSION).tar.gz
	tar cf hat-$(HATVERSION).tar $(BASIC)
	tar rf hat-$(HATVERSION).tar $(HATSCRIPT)
	tar rf hat-$(HATVERSION).tar $(HATTRANS)
	tar rf hat-$(HATVERSION).tar $(HATLIB)
	tar rf hat-$(HATVERSION).tar $(HATUI)
	tar rf hat-$(HATVERSION).tar $(MAN)
	tar rf hat-$(HATVERSION).tar $(DOC)
	mkdir hat-$(HATVERSION)
	cd hat-$(HATVERSION); tar xf ../hat-$(HATVERSION).tar
	tar cf hat-$(HATVERSION).tar hat-$(HATVERSION)
	rm -r hat-$(HATVERSION)
	gzip hat-$(HATVERSION).tar


##### cleanup

clean:
	cd src/hattrans;       $(MAKE) clean
	cd src/hatlib;         $(MAKE) clean
	cd src/hattools;       $(MAKE) clean
	rm -rf $(BUILDDIR)/obj*			# all object files

realclean: clean
	cd src/hattrans;          $(MAKE) realclean
	cd $(TARGDIR)/$(MACHINE);  rm -f $(TARGETS)
	cd $(TARGDIR)/$(MACHINE);  rm -f config.cache
	rm -rf $(LIBDIR)/$(MACHINE)