[svn:parrot] r40068 - in branches/tt761_keys_revamp: config/auto config/gen/config_pm config/gen/platform/win32 include/parrot lib/Parrot src src/gc src/pmc t/codingstd t/configure tools/dev
bacek at svn.parrot.org
bacek at svn.parrot.org
Mon Jul 13 22:44:32 UTC 2009
Author: bacek
Date: Mon Jul 13 22:44:29 2009
New Revision: 40068
URL: https://trac.parrot.org/parrot/changeset/40068
Log:
Bring brunch up-to-date with trunk.
Modified:
branches/tt761_keys_revamp/config/auto/msvc.pm
branches/tt761_keys_revamp/config/gen/config_pm/config_lib_pasm.in
branches/tt761_keys_revamp/config/gen/platform/win32/threads.h
branches/tt761_keys_revamp/include/parrot/compiler.h
branches/tt761_keys_revamp/include/parrot/interpreter.h
branches/tt761_keys_revamp/include/parrot/multidispatch.h
branches/tt761_keys_revamp/lib/Parrot/Op.pm
branches/tt761_keys_revamp/src/gc/mark_sweep.c
branches/tt761_keys_revamp/src/multidispatch.c
branches/tt761_keys_revamp/src/packfile.c
branches/tt761_keys_revamp/src/pmc/hash.pmc
branches/tt761_keys_revamp/src/pmc/pmcproxy.pmc
branches/tt761_keys_revamp/t/codingstd/c_indent.t
branches/tt761_keys_revamp/t/configure/049-options_test_prepare.t
branches/tt761_keys_revamp/tools/dev/pbc_to_exe.pir
Modified: branches/tt761_keys_revamp/config/auto/msvc.pm
==============================================================================
--- branches/tt761_keys_revamp/config/auto/msvc.pm Mon Jul 13 22:34:22 2009 (r40067)
+++ branches/tt761_keys_revamp/config/auto/msvc.pm Mon Jul 13 22:44:29 2009 (r40068)
@@ -90,6 +90,13 @@
# To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help
# for details.
$conf->data->add( " ", "ccflags", "-D_CRT_SECURE_NO_DEPRECATE" );
+
+ # Microsoft provides two annotations mechanisms. __declspec, which has been
+ # around for a while, and Microsoft's standard source code annotation
+ # language (SAL), introduced with Visual C++ 8.0.
+ # See <http://msdn2.microsoft.com/en-us/library/ms235402(VS.80).aspx>,
+ # <http://msdn2.microsoft.com/en-us/library/dabb5z75(VS.80).aspx>.
+ $conf->data->set( HAS_MSVC_SAL => 1 );
}
return 1;
}
Modified: branches/tt761_keys_revamp/config/gen/config_pm/config_lib_pasm.in
==============================================================================
--- branches/tt761_keys_revamp/config/gen/config_pm/config_lib_pasm.in Mon Jul 13 22:34:22 2009 (r40067)
+++ branches/tt761_keys_revamp/config/gen/config_pm/config_lib_pasm.in Mon Jul 13 22:44:29 2009 (r40068)
@@ -18,7 +18,12 @@
if I11, is_install
set S1, "@PWD@"
set P0["prefix"], S1
+ set P0["installed"], "0"
+ branch freeze_config
is_install:
+ set P0["installed"], "1"
+freeze_config:
+
freeze S0, P0
print S0
end
Modified: branches/tt761_keys_revamp/config/gen/platform/win32/threads.h
==============================================================================
--- branches/tt761_keys_revamp/config/gen/platform/win32/threads.h Mon Jul 13 22:34:22 2009 (r40067)
+++ branches/tt761_keys_revamp/config/gen/platform/win32/threads.h Mon Jul 13 22:44:29 2009 (r40068)
@@ -8,6 +8,7 @@
#undef CONST
#include <windows.h>
+#undef CONST
#ifdef PARROT_HAS_THREADS
@@ -15,8 +16,6 @@
#endif /* PARROT_HAS_THREADS */
-#undef CONST
-
#endif /* PARROT_PLATFORM_WIN32_THREADS_H_GUARD */
/*
Modified: branches/tt761_keys_revamp/include/parrot/compiler.h
==============================================================================
--- branches/tt761_keys_revamp/include/parrot/compiler.h Mon Jul 13 22:34:22 2009 (r40067)
+++ branches/tt761_keys_revamp/include/parrot/compiler.h Mon Jul 13 22:44:29 2009 (r40068)
@@ -14,20 +14,6 @@
* for a given compiler. They are based on GCC's __attribute__ functionality.
*/
-/*
- * Microsoft provides two annotations mechanisms. __declspec, which has been
- * around for a while, and Microsoft's standard source code annotation
- * language (SAL), introduced with Visual C++ 8.0.
- * See <http://msdn2.microsoft.com/en-us/library/ms235402(VS.80).aspx>,
- * <http://msdn2.microsoft.com/en-us/library/dabb5z75(VS.80).aspx>.
- */
-#if defined(_MSC_VER) && (_MSC_VER >= 1400)
-# define PARROT_HAS_SAL 1
-# include <sal.h>
-#else
-# define PARROT_HAS_SAL 0
-#endif
-
#ifdef HASATTRIBUTE_NEVER_WORKS
# error This attribute can never succeed. Something has mis-sniffed your configuration.
#endif
@@ -113,7 +99,8 @@
*/
#define UNUSED(a) /*@-noeffect*/if (0) (void)(a)/*@=noeffect*/;
-#if PARROT_HAS_SAL
+#ifdef PARROT_HAS_MSVC_SAL
+# include <sal.h>
# define PARROT_CAN_RETURN_NULL /*@null@*/ __maybenull
# define PARROT_CANNOT_RETURN_NULL /*@notnull@*/ __notnull
#else
@@ -144,7 +131,7 @@
/* Function argument instrumentation */
/* For explanations of the annotations, see http://www.splint.org/manual/manual.html */
-#if PARROT_HAS_SAL
+#ifdef PARROT_HAS_MSVC_SAL
# define NOTNULL(x) /*@notnull@*/ __notnull x
/* The pointer passed may not be NULL */
Modified: branches/tt761_keys_revamp/include/parrot/interpreter.h
==============================================================================
--- branches/tt761_keys_revamp/include/parrot/interpreter.h Mon Jul 13 22:34:22 2009 (r40067)
+++ branches/tt761_keys_revamp/include/parrot/interpreter.h Mon Jul 13 22:44:29 2009 (r40068)
@@ -459,7 +459,12 @@
#define PNCONST PF_NCONST(interp->code)
/* TODO - Make this a config option */
-#define PARROT_CATCH_NULL 1
+/* Splint complains about PMCNULL's storage, so don't use it. */
+#ifdef S_SPLINT_S
+# define PARROT_CATCH_NULL 0
+#else
+# define PARROT_CATCH_NULL 1
+#endif
#if PARROT_CATCH_NULL
PARROT_DATA PMC * PMCNULL; /* Holds single Null PMC */
Modified: branches/tt761_keys_revamp/include/parrot/multidispatch.h
==============================================================================
--- branches/tt761_keys_revamp/include/parrot/multidispatch.h Mon Jul 13 22:34:22 2009 (r40067)
+++ branches/tt761_keys_revamp/include/parrot/multidispatch.h Mon Jul 13 22:44:29 2009 (r40068)
@@ -109,7 +109,8 @@
FUNC_MODIFIES(*cache);
PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
PMC * Parrot_mmd_cache_lookup_by_types(PARROT_INTERP,
ARGMOD(MMD_Cache *cache),
ARGIN(const char *name),
@@ -121,7 +122,8 @@
FUNC_MODIFIES(*cache);
PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
PMC * Parrot_mmd_cache_lookup_by_values(PARROT_INTERP,
ARGMOD(MMD_Cache *cache),
ARGIN(const char *name),
@@ -165,7 +167,7 @@
FUNC_MODIFIES(*cache);
PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
+PARROT_CAN_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
PMC * Parrot_mmd_find_multi_from_long_sig(PARROT_INTERP,
ARGIN(STRING *name),
Modified: branches/tt761_keys_revamp/lib/Parrot/Op.pm
==============================================================================
--- branches/tt761_keys_revamp/lib/Parrot/Op.pm Mon Jul 13 22:34:22 2009 (r40067)
+++ branches/tt761_keys_revamp/lib/Parrot/Op.pm Mon Jul 13 22:44:29 2009 (r40068)
@@ -323,7 +323,6 @@
local $_ = shift;
my $trans = shift;
- s/{{([a-z]+)\@([^{]*?)}}/ $trans->access_arg($1, $2, $self); /me;
s/{{\@([^{]*?)}}/ $trans->access_arg($self->arg_type($1 - 1), $1, $self); /me;
s/{{=0,=([^{]*?)}}/ $trans->restart_address($1) . "; {{=0}}"; /me;
Modified: branches/tt761_keys_revamp/src/gc/mark_sweep.c
==============================================================================
--- branches/tt761_keys_revamp/src/gc/mark_sweep.c Mon Jul 13 22:34:22 2009 (r40067)
+++ branches/tt761_keys_revamp/src/gc/mark_sweep.c Mon Jul 13 22:44:29 2009 (r40068)
@@ -216,6 +216,10 @@
/* Now mark the class hash */
Parrot_gc_mark_PObj_alive(interp, (PObj *)interp->class_hash);
+ /* Now mark the HLL stuff */
+ Parrot_gc_mark_PObj_alive(interp, (PObj *)interp->HLL_info);
+ Parrot_gc_mark_PObj_alive(interp, (PObj *)interp->HLL_namespace);
+
/* Mark the registry */
PARROT_ASSERT(interp->gc_registry);
Parrot_gc_mark_PObj_alive(interp, (PObj *)interp->gc_registry);
Modified: branches/tt761_keys_revamp/src/multidispatch.c
==============================================================================
--- branches/tt761_keys_revamp/src/multidispatch.c Mon Jul 13 22:34:22 2009 (r40067)
+++ branches/tt761_keys_revamp/src/multidispatch.c Mon Jul 13 22:44:29 2009 (r40068)
@@ -84,7 +84,8 @@
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
static STRING * mmd_cache_key_from_types(PARROT_INTERP,
ARGIN(const char *name),
ARGIN(PMC *types))
@@ -92,7 +93,8 @@
__attribute__nonnull__(2)
__attribute__nonnull__(3);
-PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
static STRING * mmd_cache_key_from_values(PARROT_INTERP,
ARGIN(const char *name),
ARGIN(PMC *values))
@@ -100,8 +102,8 @@
__attribute__nonnull__(2)
__attribute__nonnull__(3);
-PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
static PMC* mmd_cvt_to_types(PARROT_INTERP, ARGIN(PMC *multi_sig))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -141,7 +143,8 @@
static PMC* Parrot_mmd_arg_tuple_func(PARROT_INTERP)
__attribute__nonnull__(1);
-PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
static PMC * Parrot_mmd_get_cached_multi_sig(PARROT_INTERP,
ARGIN(PMC *sub_pmc))
__attribute__nonnull__(1)
@@ -343,7 +346,7 @@
*/
PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
+PARROT_CAN_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
PMC *
Parrot_mmd_find_multi_from_long_sig(PARROT_INTERP, ARGIN(STRING *name),
@@ -355,8 +358,9 @@
interp->root_namespace, multi_str);
PMC * const multi_sub = Parrot_get_global(interp, ns, name);
- if (PMC_IS_NULL(multi_sub))
+ if (PMC_IS_NULL(multi_sub)) {
return PMCNULL;
+ }
else {
PMC * const type_tuple = mmd_build_type_tuple_from_long_sig(interp, long_sig);
return Parrot_mmd_sort_candidates(interp, type_tuple, multi_sub);
@@ -748,8 +752,8 @@
*/
-PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
static PMC*
mmd_cvt_to_types(PARROT_INTERP, ARGIN(PMC *multi_sig))
{
@@ -805,7 +809,8 @@
*/
-PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
static PMC *
Parrot_mmd_get_cached_multi_sig(PARROT_INTERP, ARGIN(PMC *sub_pmc))
{
@@ -1401,7 +1406,8 @@
*/
-PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
static STRING *
mmd_cache_key_from_values(PARROT_INTERP, ARGIN(const char *name),
ARGIN(PMC *values))
@@ -1448,7 +1454,8 @@
*/
PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
PMC *
Parrot_mmd_cache_lookup_by_values(PARROT_INTERP, ARGMOD(MMD_Cache *cache),
ARGIN(const char *name), ARGIN(PMC *values))
@@ -1499,7 +1506,8 @@
*/
-PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
static STRING *
mmd_cache_key_from_types(PARROT_INTERP, ARGIN(const char *name),
ARGIN(PMC *types))
@@ -1548,13 +1556,14 @@
*/
PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
PMC *
Parrot_mmd_cache_lookup_by_types(PARROT_INTERP, ARGMOD(MMD_Cache *cache),
ARGIN(const char *name), ARGIN(PMC *types))
{
ASSERT_ARGS(Parrot_mmd_cache_lookup_by_types)
- STRING * const key = mmd_cache_key_from_types(interp, name, types);
+ const STRING * const key = mmd_cache_key_from_types(interp, name, types);
if (key)
return (PMC *)parrot_hash_get(interp, cache, key);
Modified: branches/tt761_keys_revamp/src/packfile.c
==============================================================================
--- branches/tt761_keys_revamp/src/packfile.c Mon Jul 13 22:34:22 2009 (r40067)
+++ branches/tt761_keys_revamp/src/packfile.c Mon Jul 13 22:44:29 2009 (r40068)
@@ -889,6 +889,14 @@
pbc_action_enum_t action, PMC *eval_pmc)>
C<action> is one of C<PBC_PBC>, C<PBC_LOADED>, C<PBC_INIT>, or C<PBC_MAIN>.
+These determine which subs get executed at this point. Some rules:
+
+ :immediate subs always execute immediately
+ :postcomp subs always execute immediately
+ :main subs execute when we have the PBC_MAIN or PBC_PBC actions
+ :init subs execute when :main does
+ :load subs execute on PBC_LOAD
+
Also store the C<eval_pmc> in the sub structure, so that the eval PMC is kept
alive by living subs.
@@ -4908,8 +4916,9 @@
=item C<void PackFile_fixup_subs(PARROT_INTERP, pbc_action_enum_t what, PMC
*eval)>
-Runs C<:load> or C<:immediate> subroutines for the current code segment. If
-C<eval> is given, set this as the owner of the subroutines.
+Calls C<:load>, C<:init>, C<:main>, C<:immediate> and/or C<:postcomp>
+subroutines in the current packfile, depending on the value of C<action>.
+See C<do_sub_pragmas> for more details.
=cut
Modified: branches/tt761_keys_revamp/src/pmc/hash.pmc
==============================================================================
--- branches/tt761_keys_revamp/src/pmc/hash.pmc Mon Jul 13 22:34:22 2009 (r40067)
+++ branches/tt761_keys_revamp/src/pmc/hash.pmc Mon Jul 13 22:44:29 2009 (r40068)
@@ -384,8 +384,9 @@
Parrot_Hash_attributes * const attr =
mem_allocate_typed(Parrot_Hash_attributes);
- PMC_data(SELF) = attr;
- attr->hash = parrot_new_hash(INTERP);
+ PMC_data(SELF) = attr;
+ attr->hash = parrot_new_hash(INTERP);
+ attr->hash->container = SELF;
PObj_custom_mark_destroy_SETALL(SELF);
}
Modified: branches/tt761_keys_revamp/src/pmc/pmcproxy.pmc
==============================================================================
--- branches/tt761_keys_revamp/src/pmc/pmcproxy.pmc Mon Jul 13 22:34:22 2009 (r40067)
+++ branches/tt761_keys_revamp/src/pmc/pmcproxy.pmc Mon Jul 13 22:44:29 2009 (r40068)
@@ -94,8 +94,8 @@
_pmc->all_parents = pmc_new(interp, enum_class_ResizablePMCArray);
_pmc->roles = pmc_new(interp, enum_class_ResizablePMCArray);
_pmc->methods = pmc_new(interp, enum_class_Hash);
- _pmc->vtable_overrides = constant_pmc_new(interp, enum_class_Hash);
- _pmc->parent_overrides = pmc_new(interp, enum_class_Hash);
+ _pmc->vtable_overrides = pmc_new(interp, enum_class_Hash);
+ _pmc->parent_overrides = constant_pmc_new(interp, enum_class_Hash);
_pmc->attrib_metadata = pmc_new(interp, enum_class_Hash);
_pmc->attrib_index = PMCNULL;
_pmc->attrib_cache = PMCNULL;
@@ -202,59 +202,6 @@
/*
-=item C<void destroy()>
-
-Free the memory associated with the object's underlying struct.
-
-=cut
-
-*/
-
- VTABLE void destroy() {
- mem_sys_free(PMC_data(SELF));
- }
-
-/*
-
-=item C<void mark()>
-
-Mark any referenced strings and PMCs in the structure as live.
-
-=cut
-
-*/
-
- VTABLE void mark() {
- Parrot_Class_attributes * const _pmc = PARROT_CLASS(SELF);
-
- if (_pmc->name)
- Parrot_gc_mark_PObj_alive(interp, (PObj *)_pmc->name);
- if (_pmc->_namespace)
- Parrot_gc_mark_PObj_alive(interp, (PObj *)_pmc->_namespace);
- if (_pmc->parents)
- Parrot_gc_mark_PObj_alive(interp, (PObj *)_pmc->parents);
- if (_pmc->all_parents)
- Parrot_gc_mark_PObj_alive(interp, (PObj *)_pmc->all_parents);
- if (_pmc->roles)
- Parrot_gc_mark_PObj_alive(interp, (PObj *)_pmc->roles);
- if (_pmc->methods)
- Parrot_gc_mark_PObj_alive(interp, (PObj *)_pmc->methods);
- if (_pmc->vtable_overrides)
- Parrot_gc_mark_PObj_alive(interp, (PObj *)_pmc->vtable_overrides);
- if (_pmc->parent_overrides)
- Parrot_gc_mark_PObj_alive(interp, (PObj *)_pmc->parent_overrides);
- if (_pmc->attrib_metadata)
- Parrot_gc_mark_PObj_alive(interp, (PObj *)_pmc->attrib_metadata);
- if (_pmc->attrib_index)
- Parrot_gc_mark_PObj_alive(interp, (PObj *)_pmc->attrib_index);
- if (_pmc->attrib_cache)
- Parrot_gc_mark_PObj_alive(interp, (PObj *)_pmc->attrib_cache);
- if (_pmc->resolve_method)
- Parrot_gc_mark_PObj_alive(interp, (PObj *)_pmc->resolve_method);
- }
-
-/*
-
=item C<INTVAL isa_pmc(PMC *classname)>
Returns whether the class is or inherits from C<*classname>.
Modified: branches/tt761_keys_revamp/t/codingstd/c_indent.t
==============================================================================
--- branches/tt761_keys_revamp/t/codingstd/c_indent.t Mon Jul 13 22:34:22 2009 (r40067)
+++ branches/tt761_keys_revamp/t/codingstd/c_indent.t Mon Jul 13 22:44:29 2009 (r40068)
@@ -221,6 +221,11 @@
. " files:\n at c_indent" );
}
+# dump_state() may be used to diagnose indentation problems.
+# dump_state(\%state, $line);
+# Takes a list of two arguments: reference to %state and the current line
+# (once it has been chomped).
+# Prints pipe-delimited list of important features of current state.
sub dump_state {
my ($state, $line) = @_;
print STDERR (join q{|} => (
Modified: branches/tt761_keys_revamp/t/configure/049-options_test_prepare.t
==============================================================================
--- branches/tt761_keys_revamp/t/configure/049-options_test_prepare.t Mon Jul 13 22:34:22 2009 (r40067)
+++ branches/tt761_keys_revamp/t/configure/049-options_test_prepare.t Mon Jul 13 22:44:29 2009 (r40068)
@@ -9,7 +9,6 @@
use Cwd;
use File::Basename qw( basename fileparse );
use File::Path qw( mkpath );
-use File::Spec ();
use File::Temp 0.13 qw| tempdir |;
use Test::More tests => 10;
use lib qw( lib );
@@ -56,16 +55,16 @@
my ( $steps_tests_simple_ref, $steps_tests_complex_ref ) =
Parrot::Configure::Options::Test::Prepare::_find_steps_tests($tdir);
- my $full_bad_test = File::Spec->catfile( $tdir, $bad_test );
+ my $full_bad_test = $tdir . '/' . $bad_test;
ok( ! exists $steps_tests_simple_ref->{$full_bad_test},
"File in incorrect directory correctly excluded from list of configuration step tests");
- my $full_lack_number_test = File::Spec->catfile( $tdir, $lack_number_test );
+ my $full_lack_number_test = $tdir . '/' . $lack_number_test;
ok( ! exists $steps_tests_simple_ref->{$full_lack_number_test},
"File lacking 2-digit number correctly excluded from list of configuration step tests");
- my $full_init_hints_test = File::Spec->catfile( $tdir, $init_hints_test );
+ my $full_init_hints_test = $tdir . '/'. $init_hints_test;
ok( exists $steps_tests_simple_ref->{$full_init_hints_test},
"File in second-level directory correctly included in list of configuration step tests");
- my $full_CamelCase_test = File::Spec->catfile( $tdir, $CamelCase_test );
+ my $full_CamelCase_test = $tdir . '/' . $CamelCase_test;
ok( ! exists $steps_tests_simple_ref->{$full_CamelCase_test},
"File containing capital letters in name correctly excluded from list of configuration step tests");
@@ -94,11 +93,6 @@
like($stderr, qr/No tests exist for configure step $not_expected/,
"Warning about step class lacking test captured");
}
-# foreach my $type ( qw| init inter auto gen | ) {
-# my $t = $type . q(_sometest-01.t);
-# ok($tests_seen{$t}, "Found needed test");
-# }
-
ok( chdir $cwd, "Able to change back to starting directory");
}
Modified: branches/tt761_keys_revamp/tools/dev/pbc_to_exe.pir
==============================================================================
--- branches/tt761_keys_revamp/tools/dev/pbc_to_exe.pir Mon Jul 13 22:34:22 2009 (r40067)
+++ branches/tt761_keys_revamp/tools/dev/pbc_to_exe.pir Mon Jul 13 22:44:29 2009 (r40068)
@@ -507,16 +507,26 @@
$P0 = '_config'()
.local string cc, ccflags, cc_o_out, osname, build_dir, slash
+ .local string installed, includepath, versiondir
cc = $P0['cc']
ccflags = $P0['ccflags']
cc_o_out = $P0['cc_o_out']
osname = $P0['osname']
build_dir = $P0['build_dir']
slash = $P0['slash']
+ installed = $P0['installed']
+ includepath = $P0['includedir']
+ versiondir = $P0['versiondir']
.local string includedir, pathquote
+ if installed == '1' goto installed_includedir
includedir = concat build_dir, slash
includedir = concat includedir, 'include'
+ goto done_includedir
+ installed_includedir:
+ includedir = concat includepath, versiondir
+ done_includedir:
+
pathquote = ''
unless osname == 'MSWin32' goto not_windows
pathquote = '"'
More information about the parrot-commits
mailing list