perl6-internals
[Top] [All Lists]

[PATCH] cygwin070patches_4.patch

To: p2 <parrot-porters@perl.org>
Subject: [PATCH] cygwin070patches_4.patch
From: Reini Urban <rurban@x-ray.at>
Date: Wed, 27 Aug 2008 19:47:06 +0200
Delivered-to: mailing list perl6-all@perl.org
Delivered-to: perl6-all-poster@perl.org
Delivered-to: mailing list perl6-internals@perl.org
Delivered-to: perl6-internals@perl.org
Delivered-to: perlmail-parrot-porters@onion.perl.org
Delivered-to: parrot-porters@perl.org
List-help: <mailto:perl6-all-help@perl.org>
List-id: <perl6-all.perl.org>
List-id: <perl6-internals.perl.org>
List-post: <mailto:perl6-all@perl.org>
List-subscribe: <mailto:perl6-all-subscribe@perl.org>
List-unsubscribe: <mailto:perl6-all-unsubscribe@perl.org>
Mailing-list: contact perl6-all-help@perl.org; run by ezmlm
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8.1.13) Gecko/20080313 SeaMonkey/1.1.9
My latest patch against the cygwin070patches branch r30596.

* Finished implementation of the makefile expansion - "perl-style"
* Changed all relevant makefile templates.

make fulltest and make codetest has the same few mt-thread and resume errors as always.

A new idea:
===========
#IF(darwin):
#ALSO:# MACOSX_DEPLOYMENT_TARGET must be defined for OS X
#ALSO:export MACOSX_DEPLOYMENT_TARGET := @osx_version@


The POD for this change:
========================
=item conditioned_lines #IF #UNLESS #ELSIF #ELSE

If conditioned_lines is true, then several expressions at the first column
are evaluated and replaced by the content after the C<:> dependending on
the evaluation of the expression.

Lines beginning with C<#IF(expr):> are skipped if the expr
condition is false, otherwise the content after the C<:> is inserted.
Lines beginning with C<#UNLESS(expr):> are skipped if the expr condition
is true.
Lines beginning with C<#ELSIF(expr):> are evaluated if the former C<#IF(expr):>
evaluated to false.
Lines beginning with C<#ELSE:> are evaluated if the former C<#IF(expr):> or
C<#ELSIF(expr):> evaluated to false.

For legacy the old syntax #CONDITIONED_LINE(var): and
#INVERSE_CONDITIONED_LINE(var): is also supported.
For lispers the well-known reader-macro syntax #+(and key1 (not key2)):
is also supported, #+ #- with and, or and not, or being the default
for multiple keys without operator. But note the ending C<:>.

A condition expr may be:

  * a single key, which is true if a config key is true
    - not 0 and not undef and not an empty string,
  * or equal to the platform name, the perl5 osname - case-sensitive,
  * or a key=value expression, which checks for the config key,
    Note that values may contain no spaces here. Quotes in values
    are not supported.
  * or a logical combination of C<|> (or), C<&> (and) and C<!> (not),
    with the following order of precedence:  ! & |

A key must only consist of word characters, and is checked
case-sensitively against the config key or the platform name.

For instance:

  #IF(win32): $(SRC_DIR)/atomic/gcc_x86$(O)

will be processed if the platform is win32.

  #IF(cpuarch=i386): $(SRC_DIR)/atomic/gcc_x86$(O)

will be skipped if the value of the config key "cpuarch" is not "i386".

  #IF(cpuarch=i386): $(SRC_DIR)/atomic/gcc_x86$(O)
  #ELSIF(cpuarch=sparcv9): $(SRC_DIR)/atomic/sparc_v9.s
  #ELSE:

will use " $(SRC_DIR)/atomic/gcc_x86$(O)" on cpuarch=i386,
" $(SRC_DIR)/atomic/sparc_v9.s" on cpuarch=sparcv9
and print an empty line otherwise.

  #IF(win32 & glut & !cygwin):

will be used on win32 and if glut is defined, but not on cygwin.

The hairy parts from the testsuite
==================================
dummy1=true, dummy2=false, dummy3=xx
       ["IF(dummy1&!dummy2&dummy3)",            1],
       ["UNLESS(!(dummy1&!dummy2&dummy3))",     1],
       ["IF(dummy1&(!dummy2&dummy3))",          1],
       ["IF(dummy1 & (dummy3=xx & (!dummy2)))", 1],

--
Reini Urban
http://phpwiki.org/  http://murbreak.at/

Attachment: cygwin070patches_4.patch.gz
Description: GNU Zip compressed data

<Prev in Thread] Current Thread [Next in Thread>