aboutsummaryrefslogtreecommitdiff
path: root/tools/build/Makefile.in
blob: 5633b0e1dcc25d00ed4fc92f38238ea1fc53fbdd (plain)
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
# Copyright (C) 2006-2012, The Perl Foundation.
# $Id$

PARROT_DIR = parrot
NQP_DIR    = nqp
RAKUDO_DIR = rakudo
STAR_VERSION = 2014.01

# values from parrot_config
PREFIX_DIR         = @prefix@
PARROT_BIN_DIR     = @bindir@
PARROT_VERSION     = @versiondir@
PARROT_LIB_DIR     = @libdir@$(PARROT_VERSION)

EXE           = @exe@
PERL          = @perl@
CP            = $(PERL) -MExtUtils::Command -e cp
RM_F          = $(PERL) -MExtUtils::Command -e rm_f
MKPATH        = $(PERL) -MExtUtils::Command -e mkpath
CHMOD         = $(PERL) -MExtUtils::Command -e chmod

# locations of parrot resources
PARROT_EXE       = $(PARROT_BIN_DIR)/parrot$(EXE)
P_NQP_EXE        = $(PARROT_BIN_DIR)/nqp-p$(EXE)
PBC_TO_EXE       = $(PARROT_BIN_DIR)/pbc_to_exe$(EXE)

PERL6_EXE      = perl6-p$(EXE)
PERL6_LANG_DIR = $(PARROT_LIB_DIR)/languages/perl6
PERL6_INSTALL  = $(PARROT_BIN_DIR)/$(PERL6_EXE)

MODULES = modules/MODULES.txt

all: rakudo

rakudo: $(RAKUDO_DIR)/$(PERL6_EXE)
$(RAKUDO_DIR)/$(PERL6_EXE):
	@echo "== Configuring and building Rakudo"
	cd $(RAKUDO_DIR) && $(PERL) Configure.pl --prefix=$(PREFIX_DIR) && $(MAKE)
rakudo-test: rakudo
	cd $(RAKUDO_DIR) && $(MAKE) test
rakudo-spectest: rakudo
	cd $(RAKUDO_DIR) && $(MAKE) spectest
rakudo-install: rakudo
	cd $(RAKUDO_DIR) && $(MAKE) install
	@win32_libparrot_copy@
	$(CP) $(DESTDIR)$(PERL6_INSTALL) $(PERL6_EXE)
	$(CHMOD) 755 $(PERL6_EXE)

modules-install: rakudo-install
	@echo "== Installing modules"
	$(PERL) tools/build/module-install.pl $(DESTDIR)$(PERL6_INSTALL) $(DESTDIR)$(PERL6_LANG_DIR)/lib $(MODULES)
	@echo "== Installing binaries"
	$(PERL) tools/build/bin-install.pl $(PERL6_INSTALL) $(DESTDIR)$(PARROT_BIN_DIR) modules/ufo/bin/ufo modules/panda/bin/panda modules/doc/bin/p6doc

modules-test:
	$(PERL) tools/build/modules-test.pl $(CURDIR) $(DESTDIR)$(PERL6_INSTALL) modules/MODULES.txt

install: rakudo-install modules-install

test:
	@echo ""
	@echo "To run the Rakudo compiler tests, use '$(MAKE) rakudo-test'"
	@echo "To run the Perl 6 spectests, use '$(MAKE) rakudo-spectest'"
	@echo ""
	@echo "To run tests for individual modules, try:"
	@echo "  prove -e ./perl6 -r modules/<name>/t"
	@echo ""

##  cleaning
clean:
	$(RM_F) $(CLEANUPS)
	cd $(RAKUDO_DIR) && $(MAKE) clean
	cd $(NQP_DIR) && $(MAKE) clean
	cd $(PARROT_DIR) && $(MAKE) clean

distclean: realclean

realclean: clean
	$(RM_F) Makefile
	cd $(RAKUDO_DIR) && $(MAKE) realclean
	cd $(NQP_DIR) && $(MAKE) realclean
	cd $(PARROT_DIR) && $(MAKE) realclean

configclean:
	$(RM_F) $(CLEANUPS)
	cd $(NQP_DIR) && $(MAKE) clean
	cd $(PARROT_DIR) && $(MAKE) clean

testclean:


##  miscellaneous targets
# a listing of all targets meant to be called by users
help:
	@echo ""
	@echo "Following targets are available for the user:"
	@echo ""
	@echo "Maintenance:"
	@echo "  perlcritic:        Run Perl::Critic on all the Perl 5 code."
	@echo ""
	@echo "Cleaning:"
	@echo "  clean:             Basic cleaning up."
	@echo "  distclean:         Removes also anything built, in theory."
	@echo "  realclean:         Removes also files generated by 'Configure.pl'."
	@echo "  testclean:         Clean up test results."
	@echo ""
	@echo "Misc:"
	@echo "  help:              Print this help message."
	@echo ""

config:
	$(PERL) Configure.pl

$(PARROT_EXE):

CRITIC_FILES=Configure.pl tools/build/

perlcritic:
	perlcritic -1 --profile tools/util/perlcritic.conf $(CRITIC_FILES)

msi:
	-$(CP) c:/strawberry/c/bin/libgcc_s_sjlj-1.dll $(PARROT_BIN_DIR)
	cmd /c heat dir $(PREFIX_DIR) -gg -sfrag -cg RakudoStar -dr INSTALLROOT -srd -out star-files.wxs
	cmd /c candle star-files.wxs
	cmd /c candle -dSTARVERSION=$(STAR_VERSION) tools/build/star-product.wxs
	cmd /c light -b $(PREFIX_DIR) -ext WixUIExtension star-files.wixobj star-product.wixobj -o rakudo-star-$(STAR_VERSION).msi