Skip to content

Instantly share code, notes, and snippets.

@masak
Created May 12, 2010 11:26
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save masak/398455 to your computer and use it in GitHub Desktop.
# Copyright (C) 2006-2010, The Perl Foundation.
# $Id$
PARROT_ARGS =
# values from parrot_config
PARROT_BIN_DIR = /usr/local/bin
PARROT_VERSION = /parrot/2.3.0-devel
PARROT_INCLUDE_DIR = /usr/local/include$(PARROT_VERSION)
PARROT_LIB_DIR = /usr/local/lib$(PARROT_VERSION)
PARROT_SRC_DIR = /usr/local/src$(PARROT_VERSION)
HAS_ICU = 1
CC = gcc-4.2
CFLAGS = -g -pipe -fno-common -I/usr/local/include -pipe -fno-common -I/opt/local/include -DHASATTRIBUTE_CONST -DHASATTRIBUTE_DEPRECATED -DHASATTRIBUTE_MALLOC -DHASATTRIBUTE_NONNULL -DHASATTRIBUTE_NORETURN -DHASATTRIBUTE_PURE -DHASATTRIBUTE_UNUSED -DHASATTRIBUTE_WARN_UNUSED_RESULT -DHAS_GETTEXT -g -falign-functions=16 -fvisibility=hidden -funit-at-a-time -maccumulate-outgoing-args -W -Wall -Waggregate-return -Wcast-align -Wcast-qual -Wchar-subscripts -Wcomment -Wdisabled-optimization -Wdiv-by-zero -Wendif-labels -Wextra -Wformat -Wformat-extra-args -Wformat-nonliteral -Wformat-security -Wformat-y2k -Wimplicit -Wimport -Winit-self -Winline -Winvalid-pch -Wmissing-braces -Wmissing-field-initializers -Wno-missing-format-attribute -Wmissing-include-dirs -Wmultichar -Wpacked -Wparentheses -Wpointer-arith -Wpointer-sign -Wreturn-type -Wsequence-point -Wsign-compare -Wstrict-aliasing -Wstrict-aliasing=2 -Wswitch -Wswitch-default -Wtrigraphs -Wundef -Wno-unused -Wunknown-pragmas -Wvariadic-macros -Wwrite-strings -Wbad-function-cast -Wc++-compat -Wdeclaration-after-statement -Werror=declaration-after-statement -Wimplicit-function-declaration -Wimplicit-int -Wmain -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wnonnull -Wold-style-definition -Wstrict-prototypes
EXE =
LD = c++
LDFLAGS = -L/usr/local/lib -L/Users/masak/work/hobbies/parrot/blib/lib -L/opt/local/lib
LD_LOAD_FLAGS = -undefined dynamic_lookup -bundle
LIBPARROT =
O = .o
LOAD_EXT = .bundle
PERL = perl
CP = $(PERL) -MExtUtils::Command -e cp
MV = $(PERL) -MExtUtils::Command -e mv
RM_F = $(PERL) -MExtUtils::Command -e rm_f
MKPATH = $(PERL) -MExtUtils::Command -e mkpath
CHMOD = $(PERL) -MExtUtils::Command -e chmod
POD2MAN =
# locations of parrot resources
PARROT = $(PARROT_BIN_DIR)/parrot$(EXE)
NQP_EXE = $(PARROT_BIN_DIR)/parrot-nqp$(EXE)
PBC_TO_EXE = $(PARROT_BIN_DIR)/pbc_to_exe$(EXE)
PARROT_TOOLS_DIR = $(PARROT_LIB_DIR)/tools
PARROT_PERL_LIB = $(PARROT_TOOLS_DIR)/lib
OPS2C = $(PERL) $(PARROT_TOOLS_DIR)/build/ops2c.pl
PMC2C = $(PERL) $(PARROT_TOOLS_DIR)/build/pmc2c.pl
PMC2C_INCLUDES = --include src/pmc --include $(PARROT_SRC_DIR) --include $(PARROT_SRC_DIR)/pmc
CINCLUDES = -I$(PARROT_INCLUDE_DIR) -I$(PARROT_INCLUDE_DIR)/pmc
LINKARGS = $(LDFLAGS) $(LD_LOAD_FLAGS) $(LIBPARROT) -lm -lutil -lgmp -lreadline -lintl -lpthread -lm -L/opt/local/lib -licuuc -licudata -lpthread -lm
# rakudo directories
DYNEXT_DIR = dynext
PMC_DIR = src/pmc
OPS_DIR = src/ops
PERL6_LANG_DIR = $(PARROT_LIB_DIR)/languages/perl6
MANDIR = /usr/local/man
DOCDIR = /Users/masak/work/hobbies/parrot/share/doc
# files we create
PERL6_PBC = perl6.pbc
PERL6_EXE = perl6$(EXE)
PERL6_G = src/gen/perl6-grammar.pir
PERL6_A = src/gen/perl6-actions.pir
S1_PERL6_PBC = src/gen/$(PERL6_PBC)
CORE_PIR = src/gen/core.pir
GROUP = perl6_group
OPS = perl6_ops
DYNEXT_TARGET = $(DYNEXT_DIR)/$(GROUP)$(LOAD_EXT)
DYNPMC = $(PMC_DIR)/$(GROUP)$(LOAD_EXT)
DYNOPS = \
$(OPS_DIR)/$(OPS)$(LOAD_EXT)
SOURCES = \
src/Perl6/Compiler.pir \
src/gen/builtins.pir \
src/gen/cheats.pir \
src/gen/signature_pm.pir \
src/gen/parameter_pm.pir \
src/gen/package_pm.pir \
src/gen/module_pm.pir \
src/gen/role_pm.pir \
src/gen/locator_pm.pir \
src/gen/versiondetectionactions_pm.pir \
src/gen/loader_pm.pir \
$(PERL6_G) \
$(PERL6_A) \
$(DYNEXT_TARGET)
BUILTINS_PIR = \
src/glue/contextuals.pir \
src/glue/dispatch.pir \
src/glue/enum.pir \
src/glue/phasers.pir \
src/glue/role.pir \
src/glue/run.pir \
src/glue/types.pir \
src/builtins/Mu.pir \
src/gen/Attribute.pir \
src/metamodel/ClassHOW.pir \
src/metamodel/RoleHOW.pir \
src/gen/RoleToRoleApplier.pir \
src/gen/RoleToClassApplier.pir \
src/gen/RoleToInstanceApplier.pir \
src/metamodel/GrammarHOW.pir \
src/builtins/Any.pir \
src/builtins/Cool.pir \
src/builtins/Role.pir \
src/builtins/ConcreteRole.pir \
src/builtins/Abstraction.pir \
src/builtins/Positional.pir \
src/builtins/Iterable.pir \
src/builtins/Iterator.pir \
src/builtins/EMPTY.pir \
src/builtins/ParrotIter.pir \
src/builtins/List.pir \
src/builtins/Parcel.pir \
src/builtins/Bool.pir \
src/builtins/Int.pir \
src/builtins/Num.pir \
src/builtins/Str.pir \
src/builtins/Enum.pir \
src/builtins/Pair.pir \
src/builtins/Callable.pir \
src/builtins/Code.pir \
src/builtins/Multi.pir \
src/builtins/Block.pir \
src/builtins/Routine.pir \
src/builtins/Sub.pir \
src/builtins/Method.pir \
src/builtins/Submethod.pir \
src/builtins/Regex.pir \
src/builtins/Associative.pir \
src/builtins/Seq.pir \
src/builtins/SeqIter.pir \
src/builtins/Array.pir \
src/builtins/Proxy.pir \
src/builtins/ContainerDeclarand.pir \
src/builtins/Exception.pir \
src/builtins/Failure.pir \
src/builtins/Signature.pir \
src/builtins/Junction.pir \
src/builtins/Capture.pir \
src/builtins/assign.pir \
src/builtins/metaops.pir \
src/builtins/control.pir \
# Make sure parrot cheats are last in this list.
# First parrot cheat must be attriter.pir (to get .HLL),
# last cheat must be register.pir (to register Parrot
# classes).
CHEATS_PIR = \
src/cheats/constants.pir \
src/cheats/perl6-compiler.pir \
src/cheats/autoincrement.pir \
src/cheats/fail.pir \
src/cheats/object.pir \
src/cheats/int-ops.pir \
src/cheats/num-ops.pir \
src/cheats/str-ops.pir \
src/cheats/relops.pir \
src/cheats/mapiterator.pir \
src/cheats/gatheriterator.pir \
src/cheats/only_infix_redispatcher.pir \
src/cheats/import.pir \
src/cheats/want-caller-side-callsig.pir \
src/cheats/parrot-role-quirks.pir \
src/cheats/parrot/attriter.pir \
src/cheats/parrot/Protoobject.pir \
src/cheats/parrot/P6role.pir \
src/gen/uprop-cheats.pir \
src/cheats/parrot/register.pir \
CORE_SOURCES = \
src/core/traits.pm \
src/core/operators.pm \
src/glue/subset.pm \
src/cheats/trait-export.pm \
src/cheats/num.pm \
src/cheats/eval.pm \
src/core/Associative.pm \
src/core/Mu.pm \
src/core/Bool.pm \
src/core/Parcel.pm \
src/core/Any.pm \
src/core/Any-list.pm \
src/core/Cool-num.pm \
src/core/Cool-str.pm \
src/core/Seq.pm \
src/core/Set.pm \
src/core/Array.pm \
src/core/Numeric.pm \
src/core/Real.pm \
src/core/Int.pm \
src/core/Iterable.pm \
src/core/Iterator.pm \
src/core/Num.pm \
src/core/Rat.pm \
src/core/Complex.pm \
src/core/Str.pm \
src/core/Whatever.pm \
src/core/Pair.pm \
src/core/Range.pm \
src/core/RangeIter.pm \
src/core/metaops.pm \
src/core/EnumMap.pm \
src/core/Hash.pm \
src/core/Enum.pm \
src/core/IO.pm \
src/core/IO/Socket.pm \
src/core/IO/Socket/INET.pm \
src/core/Parameter.pm \
src/core/Signature.pm \
src/core/Block.pm \
src/core/Regex.pm \
src/core/Junction.pm \
src/core/Grammar.pm \
src/core/Substitution.pm \
src/core/system.pm \
src/cheats/match-bool.pm \
src/cheats/setup-io.pm \
src/core/Date.pm \
src/core/Temporal.pm \
src/core/YOU_ARE_HERE.pm \
# SETTING = \
# src/setting/traits.pm \
# src/setting/Any-list.pm \
# src/setting/Any-num.pm \
# src/setting/Any-str.pm \
# src/setting/Array.pm \
# src/setting/Attribute.pm \
# src/setting/Block.pm \
# src/setting/Bool.pm \
# src/setting/Buf.pm \
# src/setting/Code.pm \
# src/setting/Complex.pm \
# src/setting/Hash.pm \
# src/setting/Rat.pm \
# src/setting/Int.pm \
# src/setting/IO.pm \
# src/setting/IO/Socket.pm \
# src/setting/IO/Socket/INET.pm \
# src/setting/Junction.pm \
# src/setting/List.pm \
# src/setting/Mapping.pm \
# src/setting/Match.pm \
# src/setting/Num.pm \
# src/setting/NYI.pm \
# src/setting/Object.pm \
# src/setting/Operators.pm \
# src/setting/Pair.pm \
# src/setting/Parameter.pm \
# src/setting/Range.pm \
# src/setting/Signature.pm \
# src/setting/Str.pm \
# src/setting/Temporal.pm \
# src/setting/Whatever.pm \
PMC_SOURCES = \
$(PMC_DIR)/perl6str.pmc $(PMC_DIR)/objectref.pmc \
$(PMC_DIR)/perl6scalar.pmc $(PMC_DIR)/mutablevar.pmc \
$(PMC_DIR)/perl6multisub.pmc $(PMC_DIR)/p6invocation.pmc \
$(PMC_DIR)/p6opaque.pmc $(PMC_DIR)/p6role.pmc \
$(PMC_DIR)/p6lowlevelsig.pmc
OPS_SOURCE = perl6.ops
DOCS = README CREDITS LICENSE docs/*
CLEANUPS = \
*.manifest \
*.pdb \
$(PERL6_PBC) \
$(PERL6_EXE) \
perl6.c \
perl6$(O) \
Test.pir \
$(DYNEXT_DIR)/*$(LOAD_EXT) \
src/gen/core.pm \
src/gen/*.pir \
src/gen/*.pbc \
src/gen/*.pm \
$(PMC_DIR)/pmc_*.h \
$(PMC_DIR)/*.c \
$(PMC_DIR)/*.dump \
$(PMC_DIR)/*$(O) \
$(PMC_DIR)/*$(LOAD_EXT) \
$(PMC_DIR)/*.exp \
$(PMC_DIR)/*.ilk \
$(PMC_DIR)/*.manifest \
$(PMC_DIR)/*.pdb \
$(PMC_DIR)/*.lib \
$(PMC_DIR)/objectref.pmc \
$(OPS_DIR)/*.h \
$(OPS_DIR)/*.c \
$(OPS_DIR)/*$(O) \
$(OPS_DIR)/*$(LOAD_EXT) \
binder/*$(O) \
# NOTE: eventually, we should remove --keep-exit-code and --fudge
# as the goal is that all tests must pass without fudge
HARNESS_WITH_FUDGE = $(PERL) t/harness --fudge --keep-exit-code --icu=$(HAS_ICU)
HARNESS_WITH_FUDGE_JOBS = $(HARNESS_WITH_FUDGE) --jobs
STAGESTATS =
# the default target
all: $(PERL6_EXE) Test.pir
# the install target
install: all
$(MKPATH) $(DESTDIR)$(PERL6_LANG_DIR)/lib
$(CP) perl6.pbc $(DESTDIR)$(PERL6_LANG_DIR)
$(CP) Test.pm $(DESTDIR)$(PERL6_LANG_DIR)/lib
$(CP) Test.pir $(DESTDIR)$(PERL6_LANG_DIR)/lib
$(CP) lib/*.pm $(DESTDIR)$(PERL6_LANG_DIR)/lib
$(MKPATH) $(DESTDIR)$(PARROT_LIB_DIR)/dynext
$(CP) $(DYNPMC) $(DYNOPS) $(DESTDIR)$(PARROT_LIB_DIR)/dynext
$(MKPATH) $(DESTDIR)$(PARROT_BIN_DIR)
$(CP) $(PERL6_EXE) $(DESTDIR)$(PARROT_BIN_DIR)
$(CHMOD) 755 $(DESTDIR)$(PARROT_BIN_DIR)/$(PERL6_EXE)
$(MKPATH) $(DESTDIR)$(DOCDIR)/rakudo
$(CP) $(DOCS) $(DESTDIR)$(DOCDIR)/rakudo
$(MKPATH) $(DESTDIR)$(MANDIR)/man1
$(POD2MAN) docs/running.pod > $(DESTDIR)$(MANDIR)/man1/perl6.1
$(POD2MAN) docs/running.pod > $(DESTDIR)$(MANDIR)/man1/rakudo.1
xmas: $(PERL6_EXE)
## targets for building a standalone perl6.
$(PERL6_EXE): $(PERL6_PBC)
$(PBC_TO_EXE) $(PERL6_PBC)
# the complete compiler, including core/setting
$(PERL6_PBC): $(S1_PERL6_PBC) src/gen/core.pm
$(PARROT) $(PARROT_ARGS) $(S1_PERL6_PBC) --target=pir $(STAGESTATS) \
src/gen/core.pm > $(CORE_PIR)
$(PARROT) $(PARROT_ARGS) -o $(PERL6_PBC) src/Perl6/Compiler.pir
# the stage-1 compiler
$(S1_PERL6_PBC): $(PARROT) $(SOURCES)
$(PERL) -e "" > $(CORE_PIR)
$(PARROT) $(PARROT_ARGS) -o $(S1_PERL6_PBC) src/Perl6/Compiler.pir
$(PERL6_G): $(NQP_EXE) src/Perl6/Grammar.pm
$(NQP_EXE) --target=pir --output=$(PERL6_G) --encoding=utf8 \
src/Perl6/Grammar.pm
$(PERL6_A): $(NQP_EXE) src/Perl6/Actions.pm
$(NQP_EXE) --target=pir --output=$(PERL6_A) --encoding=utf8 \
src/Perl6/Actions.pm
src/gen/signature_pm.pir: $(PARROT) $(NQP_PBC) src/Perl6/Compiler/Signature.pm
$(NQP_EXE) --output=src/gen/signature_pm.pir --encoding=utf8 \
--target=pir src/Perl6/Compiler/Signature.pm
src/gen/parameter_pm.pir: $(PARROT) $(NQP_PBC) src/Perl6/Compiler/Parameter.pm
$(NQP_EXE) --output=src/gen/parameter_pm.pir --encoding=utf8 \
--target=pir src/Perl6/Compiler/Parameter.pm
src/gen/package_pm.pir: $(PARROT) $(NQP_PBC) src/Perl6/Compiler/Package.pm
$(NQP_EXE) --output=src/gen/package_pm.pir --encoding=utf8 \
--target=pir src/Perl6/Compiler/Package.pm
src/gen/module_pm.pir: $(PARROT) $(NQP_PBC) src/Perl6/Compiler/Module.pm
$(NQP_EXE) --output=src/gen/module_pm.pir --encoding=utf8 \
--target=pir src/Perl6/Compiler/Module.pm
src/gen/role_pm.pir: $(PARROT) $(NQP_PBC) src/Perl6/Compiler/Role.pm
$(NQP_EXE) --output=src/gen/role_pm.pir --encoding=utf8 \
--target=pir src/Perl6/Compiler/Role.pm
src/gen/RoleToClassApplier.pir: $(PARROT) $(NQP_PBC) src/metamodel/RoleToClassApplier.nqp
$(NQP_EXE) --output=src/gen/RoleToClassApplier.pir --encoding=utf8 \
--target=pir src/metamodel/RoleToClassApplier.nqp
src/gen/RoleToRoleApplier.pir: $(PARROT) $(NQP_PBC) src/metamodel/RoleToRoleApplier.nqp
$(NQP_EXE) --output=src/gen/RoleToRoleApplier.pir --encoding=utf8 \
--target=pir src/metamodel/RoleToRoleApplier.nqp
src/gen/RoleToInstanceApplier.pir: $(PARROT) $(NQP_PBC) src/metamodel/RoleToInstanceApplier.nqp
$(NQP_EXE) --output=src/gen/RoleToInstanceApplier.pir --encoding=utf8 \
--target=pir src/metamodel/RoleToInstanceApplier.nqp
src/gen/Attribute.pir: $(PARROT) $(NQP_PBC) src/metamodel/Attribute.nqp
$(NQP_EXE) --output=src/gen/Attribute.pir --encoding=utf8 \
--target=pir src/metamodel/Attribute.nqp
src/gen/locator_pm.pir: $(PARROT) $(NQP_PBC) src/Perl6/Module/Locator.pm
$(NQP_EXE) --output=src/gen/locator_pm.pir --encoding=utf8 \
--target=pir src/Perl6/Module/Locator.pm
src/gen/versiondetectionactions_pm.pir: $(PARROT) $(NQP_PBC) src/Perl6/Module/VersionDetectionActions.pm
$(NQP_EXE) --output=src/gen/versiondetectionactions_pm.pir --encoding=utf8 \
--target=pir src/Perl6/Module/VersionDetectionActions.pm
src/gen/loader_pm.pir: $(PARROT) $(NQP_PBC) src/Perl6/Module/Loader.pm
$(NQP_EXE) --output=src/gen/loader_pm.pir --encoding=utf8 \
--target=pir src/Perl6/Module/Loader.pm
src/gen/builtins.pir: build/gen_builtins_pir.pl $(BUILTINS_PIR)
$(PERL) build/gen_builtins_pir.pl $(BUILTINS_PIR) > src/gen/builtins.pir
src/gen/cheats.pir: build/gen_cheats_pir.pl $(CHEATS_PIR)
$(PERL) build/gen_cheats_pir.pl $(CHEATS_PIR) > src/gen/cheats.pir
src/gen/core.pm: build/gen_core_pm.pl $(CORE_SOURCES)
$(PERL) build/gen_core_pm.pl $(CORE_SOURCES) > src/gen/core.pm
src/gen/uprop-cheats.pir: build/gen_uprop_pir.pl
$(PERL) build/gen_uprop_pir.pl > src/gen/uprop-cheats.pir
#src/gen_metaop.pir: build/gen_metaop_pir.pl
# $(PERL) build/gen_metaop_pir.pl > src/gen_metaop.pir
#
#src/gen_junction.pir: build/gen_junction_pir.pl
# $(PERL) build/gen_junction_pir.pl > src/gen_junction.pir
#
#src/gen_whatever.pir: build/gen_whatever_pir.pl
# $(PERL) build/gen_whatever_pir.pl > src/gen_whatever.pir
#
#src/gen_setting.pm: build/gen_setting_pm.pl $(SETTING)
# $(PERL) build/gen_setting_pm.pl $(SETTING) > src/gen_setting.pm
$(PMC_DIR)/objectref.pmc : $(PMC_DIR)/objectref_pmc.template build/gen_objectref_pmc.pl
$(PERL) -I$(PARROT_PERL_LIB) build/gen_objectref_pmc.pl $(PMC_DIR)/objectref_pmc.template \
$(PMC_DIR)/objectref.pmc
## testing targets
Test.pir: Test.pm perl6.pbc
$(PARROT) $(PARROT_ARGS) perl6.pbc $(STAGESTATS) --target=pir --output=Test.pir Test.pm
test : coretest
fulltest: coretest spectest
coretest: Test.pir $(PERL6_EXE)
$(PERL) t/harness t/00-parrot t/01-sanity
# Run the spectests that we know work.
spectest_regression: spectest
spectest: testable t/spectest.data
$(HARNESS_WITH_FUDGE_JOBS) --tests-from-file=t/spectest.data
spectest_full: testable
$(HARNESS_WITH_FUDGE_JOBS) t/spec
spectest_checkout : t/spec
t/spec :
svn co "http://svn.pugscode.org/pugs/t/spec" t/spec
spectest_update :
-cd t/spec && svn up
rakudo_test_run.tar.gz: testable t/spectest.data
- $(HARNESS_WITH_FUDGE_JOBS) --tests-from-file=t/spectest.data --archive rakudo_test_run.tar.gz --parrot_revision 46529
spectest_smolder: rakudo_test_run.tar.gz
curl -F architecture=i386 -F platform=darwin -F revision=`git log -1 --pretty=format:%H` -F report_file=@rakudo_test_run.tar.gz http://smolder.plusthree.com/app/public_projects/process_add_report/18
testable : $(PERL6_EXE) Test.pir spectest_checkout spectest_update
t/localtest.data:
$(PERL) -MExtUtils::Command -e test_f $@
# Run the tests in t/localtest.data
localtest: all Test.pir spectest_checkout t/localtest.data
@$(HARNESS_WITH_FUDGE_JOBS) --tests-from-file=t/localtest.data
# Run the tests in t/localtest.data with a higher verbosity
localtest_loud: all Test.pir spectest_checkout t/localtest.data
@$(HARNESS_WITH_FUDGE) --tests-from-file=t/localtest.data --verbosity=1
# Run many tests of your choise.
# make sometests TESTFILES=t/foo/bar
sometests: all
@$(HARNESS_WITH_FUDGE_JOBS) $(TESTFILES)
# Run a single test
t/*.t t/*/*.t t/*/*/*.t: all Test.pir spectest_checkout
@$(HARNESS_WITH_FUDGE) --verbosity=1 $@
## cleaning
clean:
$(RM_F) $(CLEANUPS)
distclean: realclean
realclean: clean
$(RM_F) Makefile
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 " all: perl6.pbc"
@echo " This is the default."
@echo " $(PERL6_EXE): Some want a pony, others are satisfied with an executable."
@echo " xmas: Christmas is when Perl 6 is released. Alias of perl6$(EXE)."
@echo ""
@echo "Testing:"
@echo " test: Run Rakudo's sanity tests."
@echo " spectest: Run the tests of the official test suite that are expected to pass."
@echo " fulltest: Run sanity tests and spectests."
@echo " spectest_full: Run all tests of the official test suite."
@echo " localtest: Run the official tests given in t/localtest.data."
@echo " spectest_checkout: Performs svn checkout of official test suite."
@echo " spectest_update: Performs svn update of official test suite."
@echo " testable: Create the perl6 executable, compile the Test library,"
@echo " and update official test suite."
@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 ""
# Makefile: build/Makefile.in build/PARROT_REVISION $(PARROT) Configure.pl
# @echo ""
# @echo "warning: Makefile is out of date... re-run Configure.pl"
# @echo ""
#
config:
$(PERL) Configure.pl
$(PARROT):
CRITIC_FILES=Configure.pl t/harness build/ tools/
perlcritic:
perlcritic -1 --profile tools/util/perlcritic.conf $(CRITIC_FILES)
manifest:
echo MANIFEST >MANIFEST
git ls-files | $(PERL) -ne '/^\./ || print' >>MANIFEST
rm -rf t/spec
svn export "http://svn.pugscode.org/pugs/t/spec" t/spec
find t/spec -type f >>MANIFEST
sort -u -o MANIFEST MANIFEST
release: manifest
[ -n "$(VERSION)" ] || ( echo "\nTry 'make release VERSION=yyyymm'\n\n"; exit 1 )
[ -d rakudo-$(VERSION) ] || ln -s . rakudo-$(VERSION)
$(PERL) -ne 'print "rakudo-$(VERSION)/$$_"' MANIFEST | \
tar -zcv -T - -f rakudo-$(VERSION).tar.gz
rm rakudo-$(VERSION)
$(DYNEXT_TARGET): $(DYNPMC) $(DYNOPS)
$(CP) $(DYNPMC) $(DYNOPS) $(DYNEXT_DIR)
$(CHMOD) 755 $(DYNEXT_TARGET)
$(CHMOD) 755 $(DYNEXT_DIR)/$(OPS)$(LOAD_EXT)
# (at)cc_o_out(at) and (at)ld_out(at) below cannot be assigned to
# makefile macros, because some make utilities drop the trailing
# spaces and some compilers/linkers forbid a (forced) space.
# See RT #66558 and TT #700.
$(DYNPMC): $(PMC_SOURCES) src/binder/bind.c src/binder/bind.h
$(PMC2C) --no-lines --dump $(PMC2C_INCLUDES) src/pmc/objectref.pmc
$(PMC2C) --no-lines --dump $(PMC2C_INCLUDES) $(PMC_SOURCES)
$(PMC2C) --no-lines --c $(PMC2C_INCLUDES) $(PMC_SOURCES)
$(PMC2C) --no-lines --library $(GROUP) --c $(PMC_SOURCES)
$(CC) -c -o $(GROUP)$(O) -I$(PMC_DIR) $(CINCLUDES) $(CFLAGS) $(GROUP).c
cd $(PMC_DIR) && $(CC) -c $(CINCLUDES) $(CFLAGS) *.c
cd src/binder && $(CC) -c -o bind$(O) -I../../$(PMC_DIR) $(CINCLUDES) $(CFLAGS) bind.c
$(LD) -o $(DYNPMC) $(GROUP)$(O) src/pmc/*$(O) src/binder/bind$(O) $(LINKARGS)
$(OPS_DIR)/$(OPS)$(LOAD_EXT): $(OPS_DIR)/$(OPS_SOURCE) src/binder/bind.h $(DYNPMC)
cd $(OPS_DIR) && $(OPS2C) C --dynamic $(OPS_SOURCE)
cd $(OPS_DIR) && $(CC) -c -o $(OPS)$(O) $(CINCLUDES) $(CFLAGS) $(OPS).c
cd $(OPS_DIR) && $(LD) -o $(OPS)$(LOAD_EXT) $(OPS)$(O) $(LINKARGS)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment