diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2019-05-19 09:15:43 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-05-19 09:15:43 +0100 |
| commit | 52fea1445bc68fa8d04c9ba706f4e4d552bee82f (patch) | |
| tree | 955822dc10a73c3f8044efbe09e830479474d312 | |
| parent | c1c48ca16cf0dea89e84c34ae69929cfbc420009 (diff) | |
| parent | 14526d111693bd2edda7120763e3e8957c7196c8 (diff) | |
| download | perlweeklychallenge-club-52fea1445bc68fa8d04c9ba706f4e4d552bee82f.tar.gz perlweeklychallenge-club-52fea1445bc68fa8d04c9ba706f4e4d552bee82f.tar.bz2 perlweeklychallenge-club-52fea1445bc68fa8d04c9ba706f4e4d552bee82f.zip | |
Merge pull request #159 from adamcrussell/challenge-008
Challenge 008
31 files changed, 3767 insertions, 0 deletions
diff --git a/challenge-008/adam-russell/blog.txt b/challenge-008/adam-russell/blog.txt new file mode 100644 index 0000000000..851cfcef8b --- /dev/null +++ b/challenge-008/adam-russell/blog.txt @@ -0,0 +1 @@ +https://adamcrussell.livejournal.com/2607.html diff --git a/challenge-008/adam-russell/perl5/ch-1.pl b/challenge-008/adam-russell/perl5/ch-1.pl new file mode 100644 index 0000000000..31c954ab9e --- /dev/null +++ b/challenge-008/adam-russell/perl5/ch-1.pl @@ -0,0 +1,31 @@ +use strict; +use warnings; +## +# Write a script that computes the first five perfect numbers. +# A perfect number is an integer that is the sum of its positive +# proper divisors (all divisors except itself). +## +use constant PERFECT_COUNT => 5; + +sub factor{ + my($n) = @_; + my @factors = (1); + foreach my $j (2..sqrt($n)){ + push @factors, $j if $n % $j == 0; + push @factors, ($n / $j) if $n % $j == 0 && $j ** 2 != $n; + } + return @factors; +} + +my $i = 2; +my $count = 0; +do{ + my @factors = factor($i); + my $sum = unpack("%32I*", pack("I*", @factors)); + if($sum == $i){ + print "$i "; + $count++; + } + $i++; +}while($count < PERFECT_COUNT); +print "\n"; diff --git a/challenge-008/adam-russell/perl5/ch-1t.pl b/challenge-008/adam-russell/perl5/ch-1t.pl new file mode 100644 index 0000000000..a3913366c9 --- /dev/null +++ b/challenge-008/adam-russell/perl5/ch-1t.pl @@ -0,0 +1,61 @@ +use strict; +use warnings; +## +# Write a script that computes the first five perfect numbers. +# A perfect number is an integer that is the sum of its positive +# proper divisors (all divisors except itself). +## +use Thread; + +use constant THREAD_COUNT => 4; +use constant PERFECT_COUNT => 5; +use constant RANGE_SIZE => 100_000; +sub factor{ + my($n) = @_; + my @factors = (1); + foreach my $j (2..sqrt($n)){ + push @factors, $j if $n % $j == 0; + push @factors, ($n / $j) if $n % $j == 0 && $j ** 2 != $n; + } + return @factors; +} + +sub is_perfect{ + my @numbers = @_; + my @perfects = (); + foreach my $n (@numbers){ + my @factors = factor($n); + my $sum = unpack("%32I*", pack("I*", @factors)); + if($sum == $n){ + push @perfects, $n; + } + } + return \@perfects; +} + +## +# Main +## +my @threads; +my $count = 0; +my $lower = 2; +my $upper = RANGE_SIZE; +do{ + for(0..(THREAD_COUNT - 1)){ + my $t = Thread->new(\&is_perfect, ($lower..$upper)); + push @threads, $t; + $lower = $upper + 1; + $upper = $lower + RANGE_SIZE; + } + foreach my $t (@threads){ + my $perfects = $t->join(); + foreach my $p (@{$perfects}){ + print "$p "; + $count++; + } + } + @threads = (); +}while($count < PERFECT_COUNT); +print "\n"; + + diff --git a/challenge-008/adam-russell/perl5/ch-1x.pl b/challenge-008/adam-russell/perl5/ch-1x.pl new file mode 100644 index 0000000000..8bf6e76687 --- /dev/null +++ b/challenge-008/adam-russell/perl5/ch-1x.pl @@ -0,0 +1,21 @@ +use strict; +use warnings; +## +# Write a script that computes the first five perfect numbers. +# A perfect number is an integer that is the sum of its positive +# proper divisors (all divisors except itself). +## +use Perfect; +use constant PERFECT_COUNT => 5; + +my $i = 2; +my $count = 0; +my $p = new Perfect::Perfect(); +do{ + if($p->isPerfect($i)){ + print "$i "; + $count++; + } + $i++; +}while($count < PERFECT_COUNT); +print "\n"; diff --git a/challenge-008/adam-russell/perl5/ch-1xt.pl b/challenge-008/adam-russell/perl5/ch-1xt.pl new file mode 100644 index 0000000000..543978b56d --- /dev/null +++ b/challenge-008/adam-russell/perl5/ch-1xt.pl @@ -0,0 +1,51 @@ +use strict; +use warnings; +## +# Write a script that computes the first five perfect numbers. +# A perfect number is an integer that is the sum of its positive +# proper divisors (all divisors except itself). +## +use Thread; +use Perfect; + +use constant THREAD_COUNT => 4; +use constant PERFECT_COUNT => 5; +use constant RANGE_SIZE => 100_000; + +my $p = new Perfect::Perfect(); + +sub is_perfect{ + my @numbers = @_; + my @perfects = (); + foreach my $n (@numbers){ + if($p->isPerfect($n)){ + push @perfects, $n; + } + } + return \@perfects; +} + +## +# Main +## +my @threads; +my $count = 0; +my $lower = 2; +my $upper = RANGE_SIZE; +do{ + for(0..(THREAD_COUNT - 1)){ + my $t = Thread->new(\&is_perfect, ($lower..$upper)); + push @threads, $t; + $lower = $upper + 1; + $upper = $lower + RANGE_SIZE; + } + foreach my $t (@threads){ + my $perfects = $t->join(); + foreach my $p (@{$perfects}){ + print "$p "; + $count++; + } + } + @threads = (); +}while($count < PERFECT_COUNT); +print "\n"; diff --git a/challenge-008/adam-russell/perl5/ch-2.pl b/challenge-008/adam-russell/perl5/ch-2.pl new file mode 100644 index 0000000000..97db2d1bcb --- /dev/null +++ b/challenge-008/adam-russell/perl5/ch-2.pl @@ -0,0 +1,49 @@ +use strict; +use warnings; +## +# Write a function, "center", whose argument is a list of strings, which +# will be lines of text. The function should insert spaces at the beginning +# of the lines of text so that if they were printed, the text would be +# centered, and return the modified lines. +## +sub center{ + my @words = @_; + my @padded_words; + my %line_length; + my $max_length = -1; + my $center; + my $i = 0; + foreach my $line (@words){ + $line_length{$i} = do{ + $line =~ tr/ [a-z][A-Z]//; + }; + $max_length = $line_length{$i} if $line_length{$i} > $max_length; + $i++; + } + $center = int($max_length / 2); + for(my $i = 0; $i < @words; $i++){ + my $middle = int($line_length{$i} / 2); + my $padding = $center - $middle; + $padded_words[$i] = " " x $padding . $words[$i]; + } + return @padded_words; +} + +## +# Main +## +my @words; +do{ + local $/; + @words = split(/\n/, <DATA>); +}; +my @centered = center(@words); +foreach my $w (@centered){ + print "$w\n"; +} + +__DATA__ +This +is +a test of the +center function diff --git a/challenge-008/adam-russell/perl5/ext/MYMETA.json b/challenge-008/adam-russell/perl5/ext/MYMETA.json new file mode 100644 index 0000000000..41819df740 --- /dev/null +++ b/challenge-008/adam-russell/perl5/ext/MYMETA.json @@ -0,0 +1,37 @@ +{ + "abstract" : "unknown", + "author" : [ + "unknown" + ], + "dynamic_config" : 0, + "generated_by" : "ExtUtils::MakeMaker version 7.34, CPAN::Meta::Converter version 2.150010", + "license" : [ + "unknown" + ], + "meta-spec" : { + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", + "version" : 2 + }, + "name" : "Perfect", + "no_index" : { + "directory" : [ + "t", + "inc" + ] + }, + "prereqs" : { + "build" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "configure" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + } + }, + "release_status" : "stable", + "version" : "", + "x_serialization_backend" : "JSON::PP version 2.97001" +} diff --git a/challenge-008/adam-russell/perl5/ext/MYMETA.yml b/challenge-008/adam-russell/perl5/ext/MYMETA.yml new file mode 100644 index 0000000000..aa27a91c8f --- /dev/null +++ b/challenge-008/adam-russell/perl5/ext/MYMETA.yml @@ -0,0 +1,21 @@ +--- +abstract: unknown +author: + - unknown +build_requires: + ExtUtils::MakeMaker: '0' +configure_requires: + ExtUtils::MakeMaker: '0' +dynamic_config: 0 +generated_by: 'ExtUtils::MakeMaker version 7.34, CPAN::Meta::Converter version 2.150010' +license: unknown +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: '1.4' +name: Perfect +no_index: + directory: + - t + - inc +version: '' +x_serialization_backend: 'CPAN::Meta::YAML version 0.018' diff --git a/challenge-008/adam-russell/perl5/ext/Makefile b/challenge-008/adam-russell/perl5/ext/Makefile new file mode 100644 index 0000000000..3a8291aab3 --- /dev/null +++ b/challenge-008/adam-russell/perl5/ext/Makefile @@ -0,0 +1,1058 @@ +# This Makefile is for the Perfect extension to perl. +# +# It was generated automatically by MakeMaker version +# 7.34 (Revision: 73400) from the contents of +# Makefile.PL. Don't edit this file, edit Makefile.PL instead. +# +# ANY CHANGES MADE HERE WILL BE LOST! +# +# MakeMaker ARGV: () +# + +# MakeMaker Parameters: + +# BUILD_REQUIRES => { } +# CONFIGURE_REQUIRES => { } +# NAME => q[Perfect] +# OBJECT => q[perfect.o perfect_wrap.o] +# PREREQ_PM => { } +# TEST_REQUIRES => { } + +# --- MakeMaker post_initialize section: + + +# --- MakeMaker const_config section: + +# These definitions are from config.sh (via /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0/darwin-thread-multi-2level/Config.pm). +# They may have been overridden via Makefile.PL or on the command line. +AR = ar +CC = cc +CCCDLFLAGS = +CCDLFLAGS = +DLEXT = bundle +DLSRC = dl_dlopen.xs +EXE_EXT = +FULL_AR = /usr/bin/ar +LD = cc +LDDLFLAGS = -mmacosx-version-min=10.14 -bundle -undefined dynamic_lookup -L/usr/local/lib -L/opt/local/lib -fstack-protector-strong +LDFLAGS = -mmacosx-version-min=10.14 -fstack-protector-strong -L/usr/local/lib -L/opt/local/lib +LIBC = +LIB_EXT = .a +OBJ_EXT = .o +OSNAME = darwin +OSVERS = 18.2.0 +RANLIB = ranlib +SITELIBEXP = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/lib/site_perl/5.28.0 +SITEARCHEXP = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/lib/site_perl/5.28.0/darwin-thread-multi-2level +SO = dylib +VENDORARCHEXP = +VENDORLIBEXP = + + +# --- MakeMaker constants section: +AR_STATIC_ARGS = cr +DIRFILESEP = / +DFSEP = $(DIRFILESEP) +NAME = Perfect +NAME_SYM = Perfect +VERSION = +VERSION_MACRO = VERSION +VERSION_SYM = +DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\" +XS_VERSION = +XS_VERSION_MACRO = XS_VERSION +XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\" +INST_ARCHLIB = blib/arch +INST_SCRIPT = blib/script +INST_BIN = blib/bin +INST_LIB = blib/lib +INST_MAN1DIR = blib/man1 +INST_MAN3DIR = blib/man3 +MAN1EXT = 1 +MAN3EXT = 3 +INSTALLDIRS = site +DESTDIR = +PREFIX = $(SITEPREFIX) +PERLPREFIX = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0 +SITEPREFIX = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0 +VENDORPREFIX = +INSTALLPRIVLIB = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0 +DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB) +INSTALLSITELIB = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/lib/site_perl/5.28.0 +DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB) +INSTALLVENDORLIB = +DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB) +INSTALLARCHLIB = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0/darwin-thread-multi-2level +DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB) +INSTALLSITEARCH = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/lib/site_perl/5.28.0/darwin-thread-multi-2level +DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH) +INSTALLVENDORARCH = +DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH) +INSTALLBIN = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/bin +DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN) +INSTALLSITEBIN = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/bin +DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN) +INSTALLVENDORBIN = +DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN) +INSTALLSCRIPT = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/bin +DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT) +INSTALLSITESCRIPT = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/bin +DESTINSTALLSITESCRIPT = $(DESTDIR)$(INSTALLSITESCRIPT) +INSTALLVENDORSCRIPT = +DESTINSTALLVENDORSCRIPT = $(DESTDIR)$(INSTALLVENDORSCRIPT) +INSTALLMAN1DIR = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/man/man1 +DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR) +INSTALLSITEMAN1DIR = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/man/man1 +DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR) +INSTALLVENDORMAN1DIR = +DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR) +INSTALLMAN3DIR = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/man/man3 +DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR) +INSTALLSITEMAN3DIR = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/man/man3 +DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR) +INSTALLVENDORMAN3DIR = +DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR) +PERL_LIB = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0 +PERL_ARCHLIB = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0/darwin-thread-multi-2level +PERL_ARCHLIBDEP = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0/darwin-thread-multi-2level +LIBPERL_A = libperl.a +FIRST_MAKEFILE = Makefile +MAKEFILE_OLD = Makefile.old +MAKE_APERL_FILE = Makefile.aperl +PERLMAINCC = $(CC) +PERL_INC = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0/darwin-thread-multi-2level/CORE +PERL_INCDEP = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0/darwin-thread-multi-2level/CORE +PERL = "/Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/bin/perl" +FULLPERL = "/Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/bin/perl" +ABSPERL = $(PERL) +PERLRUN = $(PERL) +FULLPERLRUN = $(FULLPERL) +ABSPERLRUN = $(ABSPERL) +PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +PERL_CORE = 0 +PERM_DIR = 755 +PERM_RW = 644 +PERM_RWX = 755 + +MAKEMAKER = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0/ExtUtils/MakeMaker.pm +MM_VERSION = 7.34 +MM_REVISION = 73400 + +# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle). +# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle) +# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar) +# DLBASE = Basename part of dynamic library. May be just equal BASEEXT. +MAKE = make +FULLEXT = Perfect +BASEEXT = Perfect +PARENT_NAME = +DLBASE = $(BASEEXT) +VERSION_FROM = +OBJECT = perfect$(OBJ_EXT) perfect_wrap$(OBJ_EXT) +LDFROM = $(OBJECT) +LINKTYPE = dynamic +BOOTDEP = + +# Handy lists of source code files: +XS_FILES = +C_FILES = perfect.cxx \ + perfect_wrap.cxx +O_FILES = perfect.o \ + perfect_wrap.o +H_FILES = perfect.h +MAN1PODS = +MAN3PODS = + +# Where is the Config information that we are using/depend on +CONFIGDEP = $(PERL_ARCHLIBDEP)$(DFSEP)Config.pm $(PERL_INCDEP)$(DFSEP)config.h + +# Where to build things +INST_LIBDIR = $(INST_LIB) +INST_ARCHLIBDIR = $(INST_ARCHLIB) + +INST_AUTODIR = $(INST_LIB)/auto/$(FULLEXT) +INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT) + +INST_STATIC = $(INST_ARCHAUTODIR)/$(BASEEXT)$(LIB_EXT) +INST_DYNAMIC = $(INST_ARCHAUTODIR)/$(DLBASE).$(DLEXT) +INST_BOOT = $(INST_ARCHAUTODIR)/$(BASEEXT).bs + +# Extra linker info +EXPORT_LIST = +PERL_ARCHIVE = +PERL_ARCHIVEDEP = +PERL_ARCHIVE_AFTER = + + +TO_INST_PM = Makefile.pl \ + perfect.pm \ + temp.pl + + +# --- MakeMaker platform_constants section: +MM_Unix_VERSION = 7.34 +PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc + + +# --- MakeMaker tool_autosplit section: +# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto +AUTOSPLITFILE = $(ABSPERLRUN) -e 'use AutoSplit; autosplit($$$$ARGV[0], $$$$ARGV[1], 0, 1, 1)' -- + + + +# --- MakeMaker tool_xsubpp section: + +XSUBPPDIR = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0/ExtUtils +XSUBPP = "$(XSUBPPDIR)$(DFSEP)xsubpp" +XSUBPPRUN = $(PERLRUN) $(XSUBPP) +XSPROTOARG = +XSUBPPDEPS = /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0/ExtUtils/typemap /Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0/ExtUtils$(DFSEP)xsubpp +XSUBPPARGS = -typemap '/Users/adamcrussell/perl5/perlbrew/perls/perl-5.28.0/lib/5.28.0/ExtUtils/typemap' +XSUBPP_EXTRA_ARGS = + + +# --- MakeMaker tools_other section: +SHELL = /bin/sh +CHMOD = chmod +CP = cp +MV = mv +NOOP = $(TRUE) +NOECHO = @ +RM_F = rm -f +RM_RF = rm -rf +TEST_F = test -f +TOUCH = touch +UMASK_NULL = umask 0 +DEV_NULL = > /dev/null 2>&1 +MKPATH = $(ABSPERLRUN) -MExtUtils::Command -e 'mkpath' -- +EQUALIZE_TIMESTAMP = $(ABSPERLRUN) -MExtUtils::Command -e 'eqtime' -- +FALSE = false +TRUE = true +ECHO = echo +ECHO_N = echo -n +UNINST = 0 +VERBINST = 0 +MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install([ from_to => {@ARGV}, verbose => '\''$(VERBINST)'\'', uninstall_shadows => '\''$(UNINST)'\'', dir_mode => '\''$(PERM_DIR)'\'' ]);' -- +DOC_INSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'perllocal_install' -- +UNINSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'uninstall' -- +WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'warn_if_old_packlist' -- +MACROSTART = +MACROEND = +USEMAKEFILE = -f +FIXIN = $(ABSPERLRUN) -MExtUtils::MY -e 'MY->fixin(shift)' -- +CP_NONEMPTY = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'cp_nonempty' -- + + +# --- MakeMaker makemakerdflt section: +makemakerdflt : all + $(NOECHO) $(NOOP) + + +# --- MakeMaker dist section: +TAR = COPY_EXTENDED_ATTRIBUTES_DISABLE=1 COPYFILE_DISABLE=1 tar +TARFLAGS = cvf +ZIP = zip +ZIPFLAGS = -r +COMPRESS = gzip --best +SUFFIX = .gz +SHAR = shar +PREOP = $(NOECHO) $(NOOP) +POSTOP = $(NOECHO) $(NOOP) +TO_UNIX = $(NOECHO) $(NOOP) +CI = ci -u +RCS_LABEL = rcs -Nv$(VERSION_SYM): -q +DIST_CP = best +DIST_DEFAULT = tardist +DISTNAME = Perfect +DISTVNAME = Perfect- + + +# --- MakeMaker macro section: + + +# --- MakeMaker depend section: + + +# --- MakeMaker cflags section: + +CCFLAGS = -fno-common -DPERL_DARWIN -mmacosx-version-min=10.14 -fno-strict-aliasing -pipe -fstack-protector-strong -I/opt/local/include -DPERL_USE_SAFE_PUTENV +OPTIMIZE = -O3 +PERLTYPE = +MPOLLUTE = + + +# --- MakeMaker const_loadlibs section: + +# Perfect might depend on some other libraries: +# See ExtUtils::Liblist for details +# + + +# --- MakeMaker const_cccmd section: +CCCMD = $(CC) -c $(PASTHRU_INC) $(INC) \ + $(CCFLAGS) $(OPTIMIZE) \ + $(PERLTYPE) $(MPOLLUTE) $(DEFINE_VERSION) \ + $(XS_DEFINE_VERSION) + +# --- MakeMaker post_constants section: + + +# --- MakeMaker pasthru section: + +PASTHRU = LIBPERL_A="$(LIBPERL_A)"\ + LINKTYPE="$(LINKTYPE)"\ + OPTIMIZE="$(OPTIMIZE)"\ + PREFIX="$(PREFIX)"\ + PASTHRU_DEFINE='$(DEFINE) $(PASTHRU_DEFINE)'\ + PASTHRU_INC='$(INC) $(PASTHRU_INC)' + + +# --- MakeMaker special_targets section: +.SUFFIXES : .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT) + +.PHONY: all config static dynamic test linkext manifest blibdirs clean realclean disttest distdir pure_all subdirs clean_subdirs makemakerdflt manifypods realclean_subdirs subdirs_dynamic subdirs_pure_nolink subdirs_static subdirs-test_dynamic subdirs-test_static test_dynamic test_static + + + +# --- MakeMaker c_o section: + +.c.i: + cc -E -c $(PASTHRU_INC) $(INC) \ + $(CCFLAGS) $(OPTIMIZE) \ + $(PERLTYPE) $(MPOLLUTE) $(DEFINE_VERSION) \ + $(XS_DEFINE_VERSION) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c > $*.i + +.c.s : + $(CCCMD) -S $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c + +.c$(OBJ_EXT) : + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c + +.cpp$(OBJ_EXT) : + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cpp + +.cxx$(OBJ_EXT) : + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cxx + +.cc$(OBJ_EXT) : + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cc + +.C$(OBJ_EXT) : + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.C + + +# --- MakeMaker xs_c section: + +.xs.c: + $(XSUBPPRUN) $(XSPROTOARG) $(XSUBPPARGS) $(XSUBPP_EXTRA_ARGS) $*.xs > $*.xsc + $(MV) $*.xsc $*.c + + +# --- MakeMaker xs_o section: +.xs$(OBJ_EXT) : + $(XSUBPPRUN) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.xsc + $(MV) $*.xsc $*.c + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c + + +# --- MakeMaker top_targets section: +all :: pure_all manifypods + $(NOECHO) $(NOOP) + +pure_all :: config pm_to_blib subdirs linkext + $(NOECHO) $(NOOP) + + $(NOECHO) $(NOOP) + +subdirs :: $(MYEXTLIB) + $(NOECHO) $(NOOP) + +config :: $(FIRST_MAKEFILE) blibdirs + $(NOECHO) $(NOOP) + +$(O_FILES) : $(H_FILES) + +help : + perldoc ExtUtils::MakeMaker + + +# --- MakeMaker blibdirs section: +blibdirs : $(INST_LIBDIR)$(DFSEP).exists $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists $(INST_MAN3DIR)$(DFSEP).exists + $(NOECHO) $(NOOP) + +# Backwards compat with 6.18 through 6.25 +blibdirs.ts : blibdirs + $(NOECHO) $(NOOP) + +$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_LIBDIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_LIBDIR) + $(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists + +$(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_ARCHLIB) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHLIB) + $(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists + +$(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_AUTODIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_AUTODIR) + $(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists + +$(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHAUTODIR) + $(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists + +$(INST_BIN)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_BIN) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_BIN) + $(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists + +$(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_SCRIPT) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_SCRIPT) + $(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists + +$(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_MAN1DIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN1DIR) + $(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists + +$(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_MAN3DIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN3DIR) + $(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists + + + +# --- MakeMaker linkext section: + +linkext :: dynamic + $(NOECHO) $(NOOP) + + +# --- MakeMaker dlsyms section: + + +# --- MakeMaker dynamic_bs section: +BOOTSTRAP = $(BASEEXT).bs + +# As Mkbootstrap might not write a file (if none is required) +# we use touch to prevent make continually trying to remake it. +# The DynaLoader only reads a non-empty file. +$(BASEEXT).bs : $(FIRST_MAKEFILE) $(BOOTDEP) + $(NOECHO) $(ECHO) "Running Mkbootstrap for $(BASEEXT) ($(BSLOADLIBS))" + $(NOECHO) $(PERLRUN) \ + "-MExtUtils::Mkbootstrap" \ + -e "Mkbootstrap('$(BASEEXT)','$(BSLOADLIBS)');" + $(NOECHO) $(TOUCH) "$(BASEEXT).bs" + $(CHMOD) $(PERM_RW) "$(BASEEXT).bs" + +$(INST_ARCHAUTODIR)/$(BASEEXT).bs : $(BASEEXT).bs $(INST_ARCHAUTODIR)$(DFSEP).exists + $(NOECHO) $(RM_RF) $(INST_ARCHAUTODIR)/$(BASEEXT).bs + - $(CP_NONEMPTY) $(BASEEXT).bs $(INST_ARCHAUTODIR)/$(BASEEXT).bs $(PERM_RW) + + +# --- MakeMaker dynamic section: + +dynamic :: $(FIRST_MAKEFILE) config $(INST_BOOT) $(INST_DYNAMIC) + $(NOECHO) $(NOOP) + + +# --- MakeMaker dynamic_lib section: +# This section creates the dynamically loadable objects from relevant +# objects and possibly $(MYEXTLIB). +ARMAYBE = : +OTHERLDFLAGS = +INST_DYNAMIC_DEP = +INST_DYNAMIC_FIX = + +$(INST_DYNAMIC) : $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)$(DFSEP).exists $(EXPORT_LIST) $(PERL_ARCHIVEDEP) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP) + $(RM_F) $@ + $(LD) $(LDDLFLAGS) $(LDFROM) $(OTHERLDFLAGS) -o $@ $(MYEXTLIB) \ + $(PERL_ARCHIVE) $(LDLOADLIBS) $(PERL_ARCHIVE_AFTER) $(EXPORT_LIST) \ + $(INST_DYNAMIC_FIX) + $(CHMOD) $(PERM_RWX) $@ + + +# --- MakeMaker static section: + +## $(INST_PM) has been moved to the all: target. +## It remains here for awhile to allow for old usage: "make static" +static :: $(FIRST_MAKEFILE) $(INST_STATIC) + $(NOECHO) $(NOOP) + + +# --- MakeMaker static_lib section: +$(INST_STATIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)$(DFSEP).exists + $(RM_F) "$@" + $(FULL_AR) $(AR_STATIC_ARGS) "$@" $(OBJECT) + $(RANLIB) "$@" + $(CHMOD) $(PERM_RWX) $@ + $(NOECHO) $(ECHO) "$(EXTRALIBS)" > $(INST_ARCHAUTODIR)$(DFSEP)extralibs.ld + + +# --- MakeMaker manifypods section: + +POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--" +POD2MAN = $(POD2MAN_EXE) + + +manifypods : pure_all config + $(NOECHO |
