X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=symbian%2Fconfig.pl;h=f35efb62e8e1f3020ead6ea2075b5da20b9741d3;hb=2c864a0811fbe4cad763045a119f93a241340a2f;hp=cb1477126c52a8eb4255851e40651d2d2705b6bb;hpb=f26f4a2f8b63c72a33468ddeeb9d0337f0892af6;p=p5sagit%2Fp5-mst-13.2.git diff --git a/symbian/config.pl b/symbian/config.pl index cb14771..f35efb6 100644 --- a/symbian/config.pl +++ b/symbian/config.pl @@ -1,6 +1,7 @@ #!/usr/bin/perl -w # Copyright (c) 2004-2005 Nokia. All rights reserved. +# This utility is licensed under the same terms as Perl itself. use strict; use lib "symbian"; @@ -8,9 +9,9 @@ use lib "symbian"; print "Configuring...\n"; print "Configuring with: Perl version $] ($^X)\n"; -do "sanity.pl"; +do "sanity.pl" or die $@; -my %VERSION = %{ do "version.pl" }; +my %VERSION = %{ do "version.pl" or die $@ }; printf "Configuring for: Perl version $VERSION{REVISION}.%03d%03d\n", $VERSION{VERSION}, $VERSION{SUBVERSION}; @@ -18,36 +19,40 @@ printf "Configuring for: Perl version $VERSION{REVISION}.%03d%03d\n", my $VERSION = "$VERSION{REVISION}$VERSION{VERSION}$VERSION{SUBVERSION}"; my $R_V_SV = "$VERSION{REVISION}.$VERSION{VERSION}.$VERSION{SUBVERSION}"; -my $SDK = do "sdk.pl"; -my %PORT = %{ do "port.pl" }; +my ($SYMBIAN_ROOT, $SYMBIAN_VERSION, $SDK_NAME, $SDK_VARIANT, $SDK_VERSION) = + @{ do "sdk.pl" or die $@ }; +my %PORT = %{ do "port.pl" or die $@ }; -my ( $SYMBIAN_VERSION, $SDK_VERSION ) = ( $SDK =~ m!\\Symbian\\(.+?)\\(.+)$! ); - -if ($SDK eq 'C:\Symbian\Series60_1_2_CW') { +if ($SYMBIAN_ROOT eq 'C:\Symbian\Series60_1_2_CW') { ( $SYMBIAN_VERSION, $SDK_VERSION ) = qw(6.1 1.2); } my $WIN = $ENV{WIN} ; # 'wins', 'winscw' (from sdk.pl) -my $ARM = 'thumb'; # 'thumb', 'armi' +my $ARM = 'thumb'; # 'thumb', 'armv5' my $S60SDK = $ENV{S60SDK}; # qw(1.2 2.0 2.1 2.6) (from sdk.pl) +my $S80SDK = $ENV{S80SDK}; # qw(2.0) (from sdk.pl) +my $S90SDK = $ENV{S90SDK}; # qw(1.1) (from sdk.pl) +my $UIQSDK = $ENV{UIQSDK}; # qw(2.0 2.1) (from sdk.pl) my $UREL = $ENV{UREL}; # from sdk.pl $UREL =~ s/-ARM-/$ARM/; my $UARM = $ENV{UARM}; # from sdk.pl die "$0: SDK not recognized\n" - if !defined($SYMBIAN_VERSION) || !defined($SDK_VERSION) || !defined($S60SDK); + if !defined($SYMBIAN_VERSION) || + !defined($SDK_VERSION) || + (!defined($S60SDK) && !defined($S80SDK) && !defined($S90SDK) && !defined($UIQSDK)); die "$0: does not know which Windows compiler to use\n" unless defined $WIN; -print "Symbian $SYMBIAN_VERSION SDK $S60SDK ($WIN) installed at $SDK\n"; +print "Symbian $SYMBIAN_VERSION SDK $SDK_VARIANT $SDK_VERSION ($WIN) installed at $SYMBIAN_ROOT\n"; -my $CWD = do "cwd.pl"; +my $CWD = do "cwd.pl" or die $@; print "Build directory $CWD\n"; -die "$0: '+' in cwd does not work with SDK 1.2\n" - if $S60SDK eq '1.2' && $CWD =~ /\+/; +die "$0: '+' in cwd does not work with Series 60 SDK 1.2\n" + if defined $S60SDK && $S60SDK eq '1.2' && $CWD =~ /\+/; my @unclean; my @mmp; @@ -72,12 +77,29 @@ EPOCSTACKSIZE 65536 EXPORTUNFROZEN SRCDBG __EOF__ - print $fh "MACRO\t__SERIES60_1X__\n" if $S60SDK =~ /^1\./; - print $fh "MACRO\t__SERIES60_2X__\n" if $S60SDK =~ /^2\./; + if ($SDK_VARIANT eq 'S60') { + print $fh "MACRO\t__SERIES60__\n"; + print $fh "MACRO\t__SERIES60_1X__\n" if $S60SDK =~ /^1\./; + print $fh "MACRO\t__SERIES60_2X__\n" if $S60SDK =~ /^2\./; + } + if ($SDK_VARIANT eq 'S80') { + print $fh "MACRO\t__SERIES80__\n"; + print $fh "MACRO\t__SERIES80_1X__\n" if $S80SDK =~ /^1\./; + print $fh "MACRO\t__SERIES80_2X__\n" if $S80SDK =~ /^2\./; + } + if ($SDK_VARIANT eq 'S90') { + print $fh "MACRO\t__SERIES90__\n"; + } + if ($SDK_VARIANT eq 'UIQ') { + print $fh "MACRO\t__UIQ__\n"; + print $fh "MACRO\t__UIQ_1X__\n" if $UIQSDK =~ /^1\./; + print $fh "MACRO\t__UIQ_2X__\n" if $UIQSDK =~ /^2\./; + } my ( @c, %c ); @c = map { glob } qw(*.c); # Find the .c files. @c = map { lc } @c; # Lowercase the names. @c = grep { !/malloc\.c/ } @c; # Use the system malloc. + @c = grep { !/madly\.c/ } @c; # mad is undef. @c = grep { !/main\.c/ } @c; # main.c must be explicit. push @c, map { lc } @x; @c = map { s:^\.\./::; $_ } @c; # Remove the leading ../ @@ -96,15 +118,44 @@ SYSTEMINCLUDE \\epoc32\\include\\libc SYSTEMINCLUDE \\epoc32\\include LIBRARY euser.lib LIBRARY estlib.lib +LIBRARY eikcore.lib +LIBRARY cone.lib +LIBRARY efsrv.lib __EOF__ if ( $miniperl || $perl || $type eq 'dll' ) { print $fh <<__EOF__; LIBRARY charconv.lib -LIBRARY commonengine.lib LIBRARY hal.lib LIBRARY estor.lib __EOF__ } + if ($SDK_VARIANT =~ /^S[689]0$/) { + print $fh <<__EOF__; +LIBRARY commonengine.lib +__EOF__ + } + if (defined $S60SDK) { + print $fh <<__EOF__; +LIBRARY avkon.lib +LIBRARY commondialogs.lib +__EOF__ + } + if ((defined $S80SDK) or (defined $S90SDK)) { + print $fh <<__EOF__; +LIBRARY eikctl.lib +LIBRARY eikcoctl.lib +LIBRARY eikdlg.lib +LIBRARY ckndlg.lib +__EOF__ + } + if (defined $UIQSDK) { + print $fh <<__EOF__; +LIBRARY eikctl.lib +LIBRARY eikcoctl.lib +LIBRARY eikdlg.lib +LIBRARY qikctl.lib +__EOF__ + } if ( $type eq 'exe' ) { print $fh <<__EOF__; STATICLIBRARY ecrt0.lib @@ -129,6 +180,7 @@ __EOF__ print $fh <<__EOF__; MACRO PERL_GLOBAL_STRUCT MACRO PERL_GLOBAL_STRUCT_PRIVATE +RESOURCE symbian\\PerlUi.rss __EOF__ } close $fh; @@ -164,6 +216,7 @@ sub load_config_sh { my ( $var, $val ) = ( $1, $2 ); $val =~ s/x.y.z/$R_V_SV/gi; $val =~ s/thumb/$ARM/gi; + $val = "C:$val" if (defined($S90SDK) and ($val =~ /^(\/|\\\\)system[\/\\]/i)); $val = "'$SYMBIAN_VERSION'" if $var eq 'osvers'; $val = "'$SDK_VERSION'" if $var eq 'sdkvers'; $config{$var} = $val; @@ -198,7 +251,7 @@ sub create_config_h { __EOF__ while () { last if /!GROK!THIS/; - s/\$(\w+)/exists $config{$1} ? $config{$1} : ""/eg; + s/\$(\w+)/exists $config{$1} ? $config{$1} : (warn "$0: config.sh missing '$1'\n", "")/eg; s/^#undef\s+(\S+).+/#undef $1/g; s:\Q/**/::; print CONFIG_H; @@ -218,7 +271,7 @@ __EOF__ sub create_DynaLoader_cpp { print "\text\\DynaLoader\\DynaLoader.cpp\n"; system( -q[perl -Ilib lib\ExtUtils\xsubpp ext\DynaLoader\dl_symbian.xs >ext\DynaLoader\DynaLoader.cpp] +q[xsubpp ext\DynaLoader\dl_symbian.xs >ext\DynaLoader\DynaLoader.cpp] ) == 0 or die "$0: creating DynaLoader.cpp failed: $!\n"; push @unclean, 'ext\DynaLoader\DynaLoader.cpp'; @@ -228,8 +281,23 @@ q[perl -Ilib lib\ExtUtils\xsubpp ext\DynaLoader\dl_symbian.xs >ext\DynaLoader\Dy sub create_symbian_port_h { print "\tsymbian\\symbian_port.h\n"; if ( open( SYMBIAN_PORT_H, ">symbian/symbian_port.h" ) ) { - $S60SDK =~ /^(\d+)\.(\d+)$/; - my ($sdkmajor, $sdkminor) = ($1, $2); + my ($sdkmajor, $sdkminor); + if ($SDK_VARIANT eq 'S60') { + $S60SDK =~ /^(\d+)\.(\d+)$/; + ($sdkmajor, $sdkminor) = ($1, $2); + } + if ($SDK_VARIANT eq 'S80') { + $S80SDK =~ /^(\d+)\.(\d+)$/; + ($sdkmajor, $sdkminor) = ($1, $2); + } + if ($SDK_VARIANT eq 'S90') { + $S90SDK =~ /^(\d+)\.(\d+)$/; + ($sdkmajor, $sdkminor) = ($1, $2); + } + if ($SDK_VARIANT eq 'UIQ') { + $UIQSDK =~ /^(\d+)\.(\d+)$/; + ($sdkmajor, $sdkminor) = ($1, $2); + } print SYMBIAN_PORT_H <<__EOF__; /* Copyright (c) 2004-2005, Nokia. All rights reserved. */ @@ -240,7 +308,7 @@ sub create_symbian_port_h { #define PERL_SYMBIANPORT_MINOR $PORT{dll}->{MINOR} #define PERL_SYMBIANPORT_PATCH $PORT{dll}->{PATCH} -#define PERL_SYMBIANSDK_FLAVOR L"Series 60" +#define PERL_SYMBIANSDK_FLAVOR L"$SDK_VARIANT" #define PERL_SYMBIANSDK_MAJOR $sdkmajor #define PERL_SYMBIANSDK_MINOR $sdkminor @@ -257,7 +325,7 @@ __EOF__ sub create_perlmain_c { print "\tperlmain.c\n"; system( -q[perl -ne "print qq[ char *file = __FILE__;\n] if /dXSUB_SYS/;print;print qq[ newXS(\"DynaLoader::boot_DynaLoader\", boot_DynaLoader, file);\n] if /dXSUB_SYS/;print qq[EXTERN_C void boot_DynaLoader (pTHX_ CV* cv);\n] if /Do not delete this line/" miniperlmain.c > perlmain.c] +q[perl -ne "print qq[ char *file = __FILE__;\n] if /dXSUB_SYS/;print unless /PERL_UNUSED_CONTEXT/;print qq[ newXS(\"DynaLoader::boot_DynaLoader\", boot_DynaLoader, file);\n] if /dXSUB_SYS/;print qq[EXTERN_C void boot_DynaLoader (pTHX_ CV* cv);\n] if /Do not delete this line/" miniperlmain.c > perlmain.c] ) == 0 or die "$0: Creating perlmain.c failed: $!\n"; push @unclean, 'perlmain.c'; @@ -266,10 +334,23 @@ q[perl -ne "print qq[ char *file = __FILE__;\n] if /dXSUB_SYS/;print;print qq sub create_PerlApp_pkg { print "\tsymbian\\PerlApp.pkg\n"; if ( open( PERLAPP_PKG, ">symbian\\PerlApp.pkg" ) ) { + my $ProductId = + defined $S60SDK ? +qq[;Supports Series 60 v0.9\n(0x101F6F88), 0, 0, 0, {"Series60ProductID"}\n] : + defined $S80SDK ? +qq[;Supports Series 80 v2.0\n(0x101F8ED2), 0, 0, 0, {"Series80ProductID"}\n] : + defined $S90SDK ? +qq[;Supports Series 90 v1.1\n(0x101FBE05), 0, 0, 0, {"Series90ProductID"}\n] : + defined $UIQSDK && $SDK_VERSION =~ /^(\d)\.(\d)$/ ? +qq[;Supports UIQ v2.1\n(0x101F617B), $1, $2, 0, {"UIQ21ProductID"}\n] : + ";Supports Series NN"; my $APPS = $UREL; - if ($S60SDK ne '1.2' || $SDK =~ m/_CW$/) { # Do only if not in 1.2 VC. + if (($SDK_VARIANT eq 'S60' && $SDK_VERSION ne '1.2' || $WIN eq 'winscw') || defined $S80SDK || defined $S90SDK) { # Do only if not in S60 1.2 VC. $APPS =~ s!\\epoc32\\release\\(.+)\\$UARM$!\\epoc32\\data\\z\\system\\apps\\PerlApp!i; } + # TODO: in S60 3.0 there will be no more recognizers. + my $mdl = qq["$UREL\\PerlRecog.mdl"-"!:\\system\\recogs\\PerlRecog.mdl";]; + my $AIF = $SDK_VARIANT =~ /^S[689]0/ ? qq["$APPS\\PerlApp.aif"-"!:\\system\\apps\\PerlApp\\PerlApp.aif"] : ""; print PERLAPP_PKG <<__EOF__; ; !!!!!! DO NOT EDIT THIS FILE !!!!!! ; This file is built by symbian\\config.pl. @@ -285,19 +366,22 @@ sub create_PerlApp_pkg { ; Standard SIS file header #{"PerlApp"},(0x102015F6),0,2,0 -; Supports Series 60 v0.9 -(0x101F6F88), 0, 0, 0, {"Series60ProductID"} +$ProductId ; Files "$UREL\\PerlApp.APP"-"!:\\system\\apps\\PerlApp\\PerlApp.app" -"$UREL\\PerlRecog.mdl"-"!:\\system\\recogs\\PerlRecog.mdl" +$mdl "$APPS\\PerlApp.rsc"-"!:\\system\\apps\\PerlApp\\PerlApp.rsc" -"$APPS\\PerlApp.aif"-"!:\\system\\apps\\PerlApp\\PerlApp.aif" +$AIF __EOF__ if ( open( DEMOS, "perl symbian\\demo_pl list |" ) ) { while () { chomp; - print PERLAPP_PKG qq["$_"-"!:\\Perl\\$_"\n]; + if (defined $S90SDK) { + print PERLAPP_PKG qq["$_"-"!:\\Mydocs\\Perl\\$_"\n]; + } else { + print PERLAPP_PKG qq["$_"-"!:\\Perl\\$_"\n]; + } } close(DEMOS); } @@ -313,19 +397,28 @@ print "Creating...\n"; create_mmp( 'miniperl', 'exe', 'miniperlmain.c', 'symbian\symbian_stubs.c', - 'symbian\PerlBase.cpp', 'symbian\symbian_utils.cpp', + 'symbian\PerlBase.cpp', + 'symbian\PerlUi.cpp', + 'symbian\PerlUtil.cpp', + 'symbian\symbian_utils.cpp', ); create_mmp( "perl", 'exe', 'perlmain.c', 'symbian\symbian_stubs.c', - 'symbian\symbian_utils.cpp', 'symbian\PerlBase.cpp', + 'symbian\symbian_utils.cpp', + 'symbian\PerlBase.cpp', + 'symbian\PerlUi.cpp', + 'symbian\PerlUtil.cpp', 'ext\DynaLoader\DynaLoader.cpp', ); create_mmp( "perl$VERSION", 'dll', 'symbian\symbian_dll.cpp', 'symbian\symbian_stubs.c', - 'symbian\symbian_utils.cpp', 'symbian\PerlBase.cpp', + 'symbian\symbian_utils.cpp', + 'symbian\PerlBase.cpp', + 'symbian\PerlUi.cpp', + 'symbian\PerlUtil.cpp', 'ext\DynaLoader\DynaLoader.cpp', ); @@ -338,8 +431,49 @@ create_PerlApp_pkg(); if ( open( PERLAPP_MMP, ">symbian/PerlApp.mmp" ) ) { my @MACRO; - push @MACRO, '__SERIES60_1X__' if $S60SDK =~ /^1\./; - push @MACRO, '__SERIES60_2X__' if $S60SDK =~ /^2\./; + my @LIB; + push @MACRO, 'PERL_IMPLICIT_CONTEXT'; + push @MACRO, 'MULTIPLICITY'; + if (defined $S60SDK) { + push @MACRO, '__SERIES60__'; + push @MACRO, '__SERIES60_1X__' if $S60SDK =~ /^1\./; + push @MACRO, '__SERIES60_2X__' if $S60SDK =~ /^2\./; + push @LIB, <<__EOF__; +LIBRARY avkon.lib +LIBRARY commondialogs.lib +__EOF__ + } + if (defined $S80SDK) { + push @MACRO, '__SERIES80__'; + push @MACRO, '__SERIES80_1X__' if $S80SDK =~ /^1\./; + push @MACRO, '__SERIES80_2X__' if $S80SDK =~ /^2\./; + push @LIB, <<__EOF__; +LIBRARY eikctl.lib +LIBRARY eikcoctl.lib +LIBRARY eikdlg.lib +LIBRARY ckndlg.lib +__EOF__ + } + if (defined $S90SDK) { + push @MACRO, '__SERIES90__'; + push @LIB, <<__EOF__; +LIBRARY eikctl.lib +LIBRARY eikcoctl.lib +LIBRARY eikdlg.lib +LIBRARY ckndlg.lib +__EOF__ + } + if (defined $UIQSDK) { + push @MACRO, '__UIQ__'; + push @MACRO, '__UIQ_1X__' if $UIQSDK =~ /^1\./; + push @MACRO, '__UIQ_2X__' if $UIQSDK =~ /^2\./; + push @LIB, <<__EOF__; +LIBRARY eikctl.lib +LIBRARY eikcoctl.lib +LIBRARY eikdlg.lib +LIBRARY qikctl.lib +__EOF__ + } print PERLAPP_MMP <<__EOF__; // !!!!!! DO NOT EDIT THIS FILE !!!!!! // This file is built by symbian\\config.pl. @@ -353,8 +487,6 @@ EXPORTUNFROZEN SOURCEPATH . SOURCE PerlApp.cpp -RESOURCE PerlApp.rss - USERINCLUDE . USERINCLUDE .. USERINCLUDE \\symbian\\perl\\$R_V_SV\\include @@ -363,18 +495,16 @@ SYSTEMINCLUDE \\epoc32\\include SYSTEMINCLUDE \\epoc32\\include\\libc LIBRARY apparc.lib -LIBRARY avkon.lib LIBRARY bafl.lib LIBRARY charconv.lib -LIBRARY commondialogs.lib -LIBRARY cone.lib +LIBRARY cone.lib LIBRARY efsrv.lib -LIBRARY eikcore.lib +LIBRARY eikcore.lib LIBRARY estlib.lib LIBRARY euser.lib LIBRARY perl$VERSION.lib - -AIF PerlApp.aif . PerlAppAif.rss +@LIB +RESOURCE perlapp.rss __EOF__ if (@MACRO) { for my $macro (@MACRO) { @@ -383,6 +513,11 @@ MACRO $macro __EOF__ } } + if ($SDK_VARIANT =~ /^S[689]0$/) { + print PERLAPP_MMP <<__EOF__; +AIF PerlApp.aif . PerlAppAif.rss +__EOF__ + } close(PERLAPP_MMP); push @unclean, 'symbian\PerlApp.mmp'; } @@ -392,10 +527,11 @@ else { if ( open( MAKEFILE, ">Makefile" ) ) { my $perl = "perl$VERSION"; - my $windef1 = "$SDK\\Epoc32\\Build$CWD\\$perl\\$WIN\\$perl.def"; + my $windef1 = "$SYMBIAN_ROOT\\Epoc32\\Build$CWD\\$perl\\$WIN\\$perl.def"; my $windef2 = "..\\BWINS\\${perl}u.def"; - my $armdef1 = "$SDK\\Epoc32\\Build$CWD\\$perl\\$ARM\\$perl.def"; + my $armdef1 = "$SYMBIAN_ROOT\\Epoc32\\Build$CWD\\$perl\\$ARM\\$perl.def"; my $armdef2 = "..\\BMARM\\${perl}u.def"; + my $MF = $WIN eq 'wins' ? 'vc6' : $WIN eq 'winscw' ? 'cw_ide' : "UNKNOWN"; print "\tMakefile\n"; print MAKEFILE <<__EOF__; help: @@ -409,48 +545,52 @@ ARM = ${ARM} all: build -build: rename_makedef build_win build_arm +build: rename_makedef build_${WIN} build_arm @unclean: symbian\\config.pl perl symbian\\config.pl -build_win: abld.bat win_perl.mf win_miniperl.mf win_${VERSION}.mf perldll_win +build_${WIN}: abld.bat perldll_${WIN} + +build_vc6: abld.bat perldll_wins -build_vc6: abld.bat win_perl.mf win_miniperl.mf win_${VERSION}.mf vc6.mf perldll_win +build_vc7: abld.bat perldll_wins -build_arm: abld.bat perl_arm miniperl_arm arm_${VERSION}.mf perldll_arm +build_cw: abld.bat perldll_winscw -miniperl_win: miniperl.mmp abld.bat win_miniperl.mf rename_makedef - abld build \$(WIN) udeb miniperl +build_arm: abld.bat perl_arm miniperl_arm perldll_arm -miniperl_arm: miniperl.mmp abld.bat arm_miniperl.mf rename_makedef +miniperl_win miniperl_${WIN}: miniperl.mmp abld.bat rename_makedef + abld build ${WIN} udeb miniperl + +miniperl_arm: miniperl.mmp abld.bat rename_makedef abld build \$(ARM) $UARM miniperl -miniperl: miniperl_win miniperl_arm +miniperl: miniperl_${WIN} miniperl_arm -perl: perl_win perl_arm +perl: perl_${WIN} perl_arm -perl_win: perl.mmp abld.bat win_perl.mf rename_makedef - abld build \$(WIN) perl +perl_win perl_${WIN}: perl.mmp abld.bat rename_makedef + abld build ${WIN} perl -perl_arm: perl.mmp abld.bat arm_perl.mf rename_makedef +perl_arm: perl.mmp abld.bat rename_makedef abld build \$(ARM) $UARM perl -perldll_win: perl${VERSION}_win freeze_win perl${VERSION}_win +perldll_win perldll_${WIN}: perl${VERSION}_${WIN} freeze_${WIN} perl${VERSION}_${WIN} -perl${VERSION}_win: perl$VERSION.mmp abld.bat rename_makedef - abld build \$(WIN) perl$VERSION +perl${VERSION}_win perl${VERSION}_${WIN}: perl$VERSION.mmp abld.bat rename_makedef + abld build ${WIN} perl$VERSION perldll_arm: perl${VERSION}_arm freeze_arm perl${VERSION}_arm -perl${VERSION}_arm: perl$VERSION.mmp arm_${VERSION}.mf abld.bat rename_makedef +perl${VERSION}_arm: perl$VERSION.mmp abld.bat rename_makedef abld build \$(ARM) $UARM perl$VERSION -perldll perl$VERSION: perldll_win perldll_arm +perldll perl$VERSION: perldll_${WIN} perldll_arm -win: miniperl_win perl_win perldll_win +win ${WIN}: miniperl_${WIN} perl_${WIN} perldll_${WIN} -arm: miniperl_arm perl_arm perldll_arm +thumb arm: miniperl_arm perl_arm perldll_arm rename_makedef: -ren makedef.pl nomakedef.pl @@ -460,48 +600,61 @@ rename_makedef: rerename_makedef: -ren nomakedef.pl makedef.pl -abld.bat abld: bld.inf - bldmake bldfiles +symbian\\PerlUi.rss: symbian\\PerlUi$SDK_VARIANT.rss + copy symbian\\PerlUi$SDK_VARIANT.rss symbian\\PerlUi.rss -makefiles: win.mf arm.mf vc6.mf +abld.bat abld: bld.inf symbian\\PerlUi.rss + bldmake bldfiles vc6: win.mf vc6.mf build_vc6 -win_miniperl.mf: abld.bat symbian\\config.pl - abld makefile \$(WIN) miniperl - echo > win_miniperl.mf +vc7: win.mf vc7.mf build_vc7 + +cw: win.mf cw.mf build_cw -win_perl.mf: abld.bat symbian\\config.pl - abld makefile \$(WIN) perl - echo > win_perl.mf +${WIN}_miniperl.mf: abld.bat symbian\\config.pl + abld makefile ${MF} miniperl + echo > ${WIN}_miniperl.mf -win_${VERSION}.mf: abld.bat symbian\\config.pl - abld makefile \$(WIN) perl${VERSION} - echo > win_${VERSION}.mf +${WIN}_perl.mf: abld.bat symbian\\config.pl + abld makefile ${MF} perl + echo > ${WIN}_perl.mf -symbian\\win.mf: - cd symbian; make win.mf +${WIN}_${VERSION}.mf: abld.bat symbian\\config.pl + abld makefile ${MF} perl${VERSION} + echo > ${WIN}_${VERSION}.mf -win.mf: win_miniperl.mf win_perl.mf win_${VERSION}.mf symbian\\win.mf +symbian\\${WIN}.mf: + cd symbian; make ${WIN}.mf + +${WIN}.mf: ${WIN}_miniperl.mf ${WIN}_perl.mf ${WIN}_${VERSION}.mf symbian\\${WIN}.mf arm_miniperl.mf: abld.bat symbian\\config.pl - abld makefile \$(ARM) miniperl echo > arm_miniperl.mf arm_perl.mf: abld.bat symbian\\config.pl - abld makefile \$(ARM) perl echo > arm_perl.mf arm_${VERSION}.mf: abld.bat symbian\\config.pl - abld makefile \$(ARM) perl${VERSION} echo > arm_${VERSION}.mf arm.mf: arm_miniperl.mf arm_perl.mf arm_${VERSION}.mf +win.mf: vc6.mf cw.mf + echo > win.mf + vc6.mf: abld.bat symbian\\config.pl abld makefile vc6 echo > vc6.mf +vc7.mf: abld.bat symbian\\config.pl + abld makefile vc7 + echo > vc7.mf + +cw.mf: abld.bat symbian\\config.pl + abld makefile cw_ide + echo > cw.mf + PM = lib\\Config.pm lib\\Cross.pm lib\\lib.pm ext\\DynaLoader\\DynaLoader.pm ext\\DynaLoader\\XSLoader.pm ext\\Errno\\Errno.pm POD = lib\\Config.pod @@ -513,7 +666,17 @@ XSBOPT = --win=\$(WIN) --arm=\$(ARM) lib\\Config.pm: copy symbian\\config.sh config.sh +__EOF__ + if (defined $S90SDK) { + print MAKEFILE <<__EOF__; + perl -pi.bak -e "s:x\\.y\\.z+:$R_V_SV:g; s!='(\\\\\\\\system)!='C:\\1!" config.sh +__EOF__ + } else { + print MAKEFILE <<__EOF__; perl -pi.bak -e "s:x\\.y\\.z+:$R_V_SV:g" config.sh +__EOF__ + }; + print MAKEFILE <<__EOF__; perl \$(XLIB) configpm --cross=symbian copy xlib\\symbian\\Config.pm lib\\Config.pm perl -pi.bak -e "s:x\\.y\\.z:$R_V_SV:g" lib\\Config.pm @@ -548,20 +711,26 @@ allsis: all miniperlexe.sis perlexe.sis perldll.sis perllib.sis perlext.sis perl perldll.sis perl$VERSION.sis: perldll_arm pm symbian\\makesis.pl perl \$(XLIB) symbian\\makesis.pl perl${VERSION}dll -perllib.sis: \$(PM) +perl${VERSION}lib.sis perllib.sis: \$(PM) perl \$(XLIB) symbian\\makesis.pl perl${VERSION}lib -perlext.sis: perldll_arm buildext_sis +perl${VERSION}ext.sis perlext.sis: perldll_arm buildext_sis perl symbian\\makesis.pl perl${VERSION}ext -EXT = Compress::Zlib Cwd Data::Dumper Devel::Peek Digest::MD5 Errno Fcntl File::Glob Filter::Util::Call IO List::Util MIME::Base64 PerlIO::scalar PerlIO::via SDBM_File Socket Storable Time::HiRes XSLoader attrs +EXT = Compress::Raw::Zlib Cwd Data::Dumper Devel::Peek Digest::MD5 Errno Fcntl File::Glob Filter::Util::Call IO List::Util MIME::Base64 PerlIO::scalar PerlIO::via SDBM_File Socket Storable Time::HiRes XSLoader attrs buildext: perldll symbian\\xsbuild.pl lib\\Config.pm perl \$(XLIB) symbian\\xsbuild.pl \$(XSBOPT) \$(EXT) +buildextcpp: perldll symbian\\xsbuild.pl lib\\Config.pm + perl \$(XLIB) symbian\\xsbuild.pl --csuffix .cpp \$(XSBOPT) \$(EXT) + buildext_sis: perldll.sis symbian\\xsbuild.pl lib\\Config.pm perl \$(XLIB) symbian\\xsbuild.pl \$(XSBOPT) --sis \$(EXT) +buildextcpp_sis: perldll.sis symbian\\xsbuild.pl lib\\Config.pm + perl \$(XLIB) symbian\\xsbuild.pl --csuffix .cpp \$(XSBOPT) --sis \$(EXT) + cleanext: symbian\\xsbuild.pl perl \$(XLIB) symbian\\xsbuild.pl \$(XSBOPT) --clean \$(EXT) @@ -584,30 +753,53 @@ sdkinstall: -mkdir \$(APIDIR)\\bin -mkdir \$(BINDIR) copy /y *.h \$(APIDIR)\\include - - copy /y *.inc \$(APIDIR)\\include + -copy /y *.inc \$(APIDIR)\\include copy /y lib\\ExtUtils\\xsubpp \$(APIDIR)\\lib\\ExtUtils copy /y lib\\ExtUtils\\typemap \$(APIDIR)\\lib\\ExtUtils + copy /y lib\\ExtUtils\\ParseXS.pm \$(APIDIR)\\lib\\ExtUtils copy /y symbian\\xsbuild.pl \$(APIDIR)\\bin + copy /y symbian\\sisify.pl \$(APIDIR)\\bin copy /y symbian\\PerlBase.h \$(APIDIR)\\include + copy /y symbian\\PerlUi.h \$(APIDIR)\\include + copy /y symbian\\PerlUtil.h \$(APIDIR)\\include copy /y symbian\\symbian*.h \$(APIDIR)\\include\\symbian copy /y symbian\\PerlBase.pod \$(APIDIR)\\pod + copy /y symbian\\PerlUtil.pod \$(APIDIR)\\pod -RELDIR = $SDK\\epoc32\\release +RELDIR = $SYMBIAN_ROOT\\epoc32\\release RELWIN = \$(RELDIR)\\\$(WIN)\\udeb RELARM = \$(RELDIR)\\\$(ARM)\\$UARM +SDKZIP = perl${VERSION}sdk.zip -perlsdk.zip: perldll sdkinstall + +\$(SDKZIP) perlsdk.zip: perldll sdkinstall + -del /f perl${VERSION}sdk.zip zip -r perl${VERSION}sdk.zip \$(RELWIN)\\perl$VERSION.* \$(RELARM)\\perl$VERSION.* \$(APIDIR) \@echo perl${VERSION}sdk.zip created. -perlapp: sdkinstall perlapp_win perlapp_arm +PERLSIS = perl${VERSION}.SIS perl${VERSION}lib.SIS perl${VERSION}ext.SIS +ALLSIS = \$(PERLSIS) perlapp.sis +ETC = README.symbian symbian\\PerlBase.pod symbian\\PerlUtil.pod symbian\\sisify.pl symbian\\TODO + +perl${VERSION}dist.zip perldist.zip: \$(ALLSIS) \$(SDKZIP) \$(ETC) + -del /f perl${VERSION}dist.zip + zip -r perl${VERSION}dist.zip \$(ALLSIS) \$(SDKZIP) \$(ETC) + +perlapp: sdkinstall perlapp_${WIN} perlapp_arm + +perlapp_arm_minimal sisify_hex perlappmin.hex perlrscmin.hex: sdkinstall config.h + cd symbian; make perlapp_arm USERDEFS=-DCreatePerlAppMinimal + perl symbian\\hexdump.pl -perlapp_win: config.h - cd symbian; make perlapp_win +perlapp_win perlapp_${WIN}: config.h + cd symbian; make perlapp_${WIN} perlapp_arm: config.h cd symbian; make perlapp_arm +perlapp_arm_clean: + cd symbian; make clean + perlapp_demo_extract: cd symbian; make perlapp_demo_extract @@ -615,21 +807,21 @@ perlapp.sis: perlapp_arm cd symbian; make perlapp.sis perlapp.zip: - cd symbian; zip perlapp.zip PerlApp.* PerlRecog.* PerlBase.* demo_pl + cd symbian; zip perlapp.zip PerlApp.* PerlRecog.* PerlBase.* PerlUtil.* demo_pl zip: perlsdk.zip perlapp.zip -freeze: freeze_win freeze_arm +freeze: freeze_${WIN} freeze_arm -freeze_win: - abld freeze \$(WIN) perl$VERSION +freeze_${WIN}: + abld freeze ${WIN} perl$VERSION freeze_arm: abld freeze \$(ARM) perl$VERSION -defrost: defrost_win defrost_arm +defrost: defrost_${WIN} defrost_arm -defrost_win: +defrost_${WIN}: -del /f $windef1 -del /f $windef2 @@ -637,13 +829,13 @@ defrost_arm: -del /f $armdef1 -del /f $armdef2 -clean_win: abld.bat - abld clean \$(WIN) +clean_${WIN}: abld.bat + abld clean ${WIN} clean_arm: abld.bat abld clean \$(ARM) -clean: clean_win clean_arm rerename_makedef +clean: clean_${WIN} clean_arm rerename_makedef -del /f \$(PM) -del /f \$(POD) -del /f lib\\Config.pm.bak @@ -657,7 +849,10 @@ clean: clean_win clean_arm rerename_makedef -del /f abld.bat @unclean *.pkg *.sis *.zip -del /f symbian\\abld.bat symbian\\*.sis symbian\\*.zip -del /f symbian\\perl5*.pkg symbian\\miniperl.pkg - -del arm_*.mf win_*.mf vc6*.mf + -del arm_*.mf ${WIN}_*.mf vc*.mf cw*.mf + -del symbian\\Makefile + -del symbian\\PerlUi.rss symbian\\PerlApp.rss + -del perlappmin.hex perlrscmin.hex -perl symbian\\xsbuild.pl \$(XSBOPT) --clean \$(EXT) -rmdir /s /q perl${VERSION}_Data -cd symbian; make clean @@ -683,28 +878,35 @@ else { } if ( open( MAKEFILE, ">symbian/Makefile")) { - my $wrap = $S60SDK eq '1.2' && $SDK !~ /_CW$/; + my $wrap = defined $S60SDK && $S60SDK eq '1.2' && $WIN ne '${WIN}cw'; my $ABLD = $wrap ? 'perl b.pl': 'abld'; print "\tsymbian/Makefile\n"; + my $MF = $WIN eq 'wins' ? 'vc6' : $WIN eq 'winscw' ? 'cw_ide' : "UNKNOWN"; print MAKEFILE <<__EOF__; WIN = $WIN ARM = $ARM ABLD = $ABLD +MF = $MF abld.bat: bldmake bldfiles -perlapp_win: abld.bat ..\\config.h PerlApp.h PerlApp.cpp +perlapp_${WIN}: abld.bat ..\\config.h PerlApp.h PerlApp.cpp + copy PerlUi$SDK_VARIANT.rss PerlApp.rss bldmake bldfiles - \$(ABLD) build \$(WIN) udeb + \$(ABLD) build ${WIN} udeb perlapp_arm: ..\\config.h PerlApp.h PerlApp.cpp + copy PerlUi$SDK_VARIANT.rss PerlApp.rss bldmake bldfiles - \$(ABLD) build \$(ARM) $UARM + \$(ABLD) build ${ARM} $UARM + +$MF: + abld makefile $MF win.mf: bldmake bldfiles - abld makefile vc6 + abld makefile $MF perlapp_demo_extract: perl demo_pl extract @@ -718,6 +920,10 @@ clean: -perl demo_pl cleanup -del /f perlapp.sis -del /f b.pl + -del PerlApp.rss + abld clean $WIN + abld clean thumb + -del Makefile distclean: clean -del /f *.cwlink *.resources *.pref @@ -753,6 +959,8 @@ for my $config ( "lib\\Config.pm", "xlib\\symbian\\Config.pm", "xlib\\symbian\\Config_heavy.pl", + "symbian\\PerlUi.rss", + "symbian\\PerlApp.rss", ) { print "\t$config\n"; unlink($config);