aboutsummaryrefslogtreecommitdiff
path: root/tools/build/Makefile.in
blob: 7152691c47847589746eb87000c8b01939460277 (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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# Copyright (C) 2006-2019, The Perl Foundation.

MOAR_DIR     = moarvm
NQP_DIR      = nqp
RAKUDO_DIR   = rakudo
STAR_VERSION = 2019.03

# install location
PREFIX_DIR         = @prefix@
SDKROOT_DIR        = @sdkroot@
SYSROOT_DIR        = @sysroot@

STAR_BIN_DIR = $(PREFIX_DIR)/bin
SITE_BIN_DIR = $(PREFIX_DIR)/share/perl6/site/bin

EXE           = @exe@
BAT           = @bat@
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

PERL6_J_EXE      = perl6-j$(BAT)
PERL6_J_LANG_DIR = $(PREFIX_DIR)/share/perl6
PERL6_J_INSTALL  = $(STAR_BIN_DIR)/$(PERL6_J_EXE)

PERL6_M_EXE      = perl6-m$(BAT)
PERL6_M_LANG_DIR = $(PREFIX_DIR)/share/perl6
PERL6_M_INSTALL  = $(STAR_BIN_DIR)/$(PERL6_M_EXE)

PERL6_EXE        = perl6$(EXE)

MODULES          = modules/MODULES.txt

all: rakudo

rakudo: @backend_exes@

@backend_exes@:
	@echo "== Configuring and building Rakudo"
	cd $(RAKUDO_DIR) && $(PERL) Configure.pl @pass_rakudo_config@ --prefix="$(PREFIX_DIR)" --backends=@backends@ && $(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
	$(CP) $(DESTDIR)@default_backend_exe@ $(PERL6_EXE)
	$(CHMOD) 755 $(PERL6_EXE)

modules-install: @backend_modules_install@

modules-install-j: rakudo-install
	@echo "== Installing modules for JVM"
	cd modules/zef && @path@ $(DESTDIR)$(PERL6_J_INSTALL) -Ilib bin/zef install ."
	@path@ $(PERL) tools/build/module-install.pl $(PERL6_J_INSTALL) $(DESTDIR)$(SITE_BIN_DIR)/zef-j $(MODULES)"

modules-install-m: rakudo-install
	@echo "== Installing modules for MoarVM"
	cd modules/zef && @path@ $(DESTDIR)$(PERL6_M_INSTALL) -Ilib bin/zef install ."
	@path@ $(PERL) tools/build/module-install.pl $(PERL6_M_INSTALL) $(DESTDIR)$(SITE_BIN_DIR)/zef-m $(MODULES)"

modules-test: @backend_modules_test@
verbose-modules-test: @backend_modules_test@

modules-test-j: modules-install-j
	$(PERL) tools/build/modules-test.pl $(CURDIR) $(DESTDIR)$(PERL6_J_INSTALL) $(MODULES)
verbose-modules-test-j: modules-install-j
	$(PERL) tools/build/modules-test.pl --verbose $(CURDIR) $(DESTDIR)$(PERL6_J_INSTALL) $(MODULES)

modules-test-m: modules-install-m
	$(PERL) tools/build/modules-test.pl $(CURDIR) $(DESTDIR)$(PERL6_M_INSTALL) $(MODULES)
verbose-modules-test-m: modules-install-m
	$(PERL) tools/build/modules-test.pl --verbose $(CURDIR) $(DESTDIR)$(PERL6_M_INSTALL) $(MODULES)

install: rakudo-install modules-install welcome-message

welcome-message:
	@echo ""
	@echo "Rakudo Star has been built and installed successfully."
	@echo "Please make sure that the following directories are in PATH:"
	@echo "  $(STAR_BIN_DIR)"
	@echo "  $(SITE_BIN_DIR)"
	@echo ""

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 the modules' test suites, run '$(MAKE) modules-test'"
	@echo ""

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

distclean: realclean

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

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

configclean-j:

configclean-m:

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

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
	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