GHC new build system megapatch
[ghc-hetmet.git] / rules / build-perl.mk
1
2 # Build a perl script.  Invoke like this:
3 #
4 # driver/mangler_PERL_SRC = ghc-asm.lprl
5 # driver/mangler_dist_PROG = ghc-asm
6 #
7 # $(eval $(call build-perl,driver/mangler,dist))
8
9 define build-perl
10 # $1 = dir
11 # $2 = distdir
12
13 ifeq "$$($1_$2_LIBEXEC)" "YES"
14 $1_$2_INPLACE = $(INPLACE_LIB)/$$($1_$2_PROG)
15 else
16 $1_$2_INPLACE = $(INPLACE_BIN)/$$($1_$2_PROG)
17 endif
18
19 $(call all-target,$$($1_$2_INPLACE))
20
21 $(call clean-target,$1,$2,$1/$2 $$($1_$2_INPLACE))
22 .PHONY: clean_$1
23 clean_$1 : clean_$1_$2
24
25 ifneq "$$(BINDIST)" "YES"
26 $1/$2/$$($1_$2_PROG).prl: $1/$$($1_PERL_SRC) $$(UNLIT)
27         $$(MKDIRHIER) $1/$2
28         $$(RM) -f $$@
29         $$(UNLIT) $$(UNLIT_OPTS) $$< $$@
30
31 $1/$2/$$($1_$2_PROG): $1/$2/$$($1_$2_PROG).prl
32         $$(RM) -f $$@
33         echo '#!$$(PERL)'                                  >> $$@
34         echo '$$$$TARGETPLATFORM  = "$$(TARGETPLATFORM)";' >> $$@
35         cat $$<                                            >> $$@
36         $$(EXECUTABLE_FILE) $$@
37
38 $$($1_$2_INPLACE): $1/$2/$$($1_$2_PROG)
39         $$(MKDIRHIER) $$(dir $$@)
40         $$(RM) -f $$@
41         $$(CP) $$< $$@
42         $$(EXECUTABLE_FILE) $$@
43 endif
44
45 endef