Subversion Repositories DevTools

Rev

Rev 331 | Rev 339 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 331 Rev 335
Line 2065... Line 2065...
2065
#                                       --Dir=xxx
2065
#                                       --Dir=xxx
2066
#
2066
#
2067
#                                       --Subdir=yyy
2067
#                                       --Subdir=yyy
2068
#                                       --DirListOnly
2068
#                                       --DirListOnly
2069
#                                       --FileListOnly
2069
#                                       --FileListOnly
2070
#                                       --Recurse
2070
#                                       --Recurse (default)
2071
#                                       --NoRecurse
2071
#                                       --NoRecurse
-
 
2072
#                                       --FullPath (default)
-
 
2073
#                                       --NoFullPath
2072
#
2074
#
2073
#                                       --FilterIn=xxx
2075
#                                       --FilterIn=xxx
2074
#                                       --FilterInRe=xxx
2076
#                                       --FilterInRe=xxx
2075
#                                       --FilterOut=xxx
2077
#                                       --FilterOut=xxx
2076
#                                       --FilterOutRe=xxx
2078
#                                       --FilterOutRe=xxx
Line 5582... Line 5584...
5582
#
5584
#
5583
 
5585
 
5584
sub InstallHdr
5586
sub InstallHdr
5585
{
5587
{
5586
    my( $platforms, @elements ) = @_;
5588
    my( $platforms, @elements ) = @_;
5587
    my( $base, $dir, $srcfile, $full, $abs, $strip, $package );
5589
    my( $base, $dir, $srcfile, $full, $strip, $package );
5588
    my( $len, $name, $basename );
5590
    my( $len, $name, $basename );
5589
 
5591
 
5590
    Debug2( "InstallHdr($platforms, @elements)" );
5592
    Debug2( "InstallHdr($platforms, @elements)" );
5591
 
5593
 
5592
    return if ( ! ActivePlatform($platforms) );
5594
    return if ( ! ActivePlatform($platforms) );
Line 5594... Line 5596...
5594
 
5596
 
5595
#.. Arguments
5597
#.. Arguments
5596
#
5598
#
5597
    $base = $PackageInfo{'Hdr'}{'IBase'};       # Base of target
5599
    $base = $PackageInfo{'Hdr'}{'IBase'};       # Base of target
5598
    $dir = $base . $PackageInfo{'Hdr'}{'Dir'};  # Installation path (default)
5600
    $dir = $base . $PackageInfo{'Hdr'}{'Dir'};  # Installation path (default)
5599
    $full = $abs = $strip = 0;
5601
    $full = $strip = 0;
5600
 
5602
 
5601
    foreach ( @elements )
5603
    foreach ( @elements )
5602
    {
5604
    {
5603
                                                # Standard targets
5605
                                                # Standard targets
5604
        my $rv = __TargetDir(0, $base, $_, \$dir);
5606
        my $rv = __TargetDir(0, $base, $_, \$dir);
Line 5606... Line 5608...
5606
        return if ( $rv == 2 );
5608
        return if ( $rv == 2 );
5607
 
5609
 
5608
        if (/^--Full/) {                        # using full (resolved) path
5610
        if (/^--Full/) {                        # using full (resolved) path
5609
            $full = 1;
5611
            $full = 1;
5610
 
5612
 
5611
        } elsif (/^--Abs$/) {                   # Override SRCS() checks
-
 
5612
            $abs = 1;
-
 
5613
 
-
 
5614
        } elsif (/^--Strip$/) {                 # Strip path from source files
5613
        } elsif (/^--Strip$/) {                 # Strip path from source files
5615
            $strip = 1;
5614
            $strip = 1;
5616
 
5615
 
5617
                                                # Package
5616
                                                # Package
5618
        } elsif (/^--Package$/ || /^--Package=(.*)/) {
5617
        } elsif (/^--Package$/ || /^--Package=(.*)/) {
Line 5630... Line 5629...
5630
        my %package_entry;
5629
        my %package_entry;
5631
        if ( ! /^--(.*)/ )
5630
        if ( ! /^--(.*)/ )
5632
        {
5631
        {
5633
            $name = $_;
5632
            $name = $_;
5634
            $basename = StripDir( $name );
5633
            $basename = StripDir( $name );
5635
            if ( $full )
-
 
5636
            {
-
 
5637
                if ($abs || !($srcfile = $SRCS{ $basename }) ||
5634
            if ( !($srcfile = $SRCS{ $basename }) ) {
5638
                        ($len = rindex($srcfile, "/")) == -1)
-
 
5639
                {
-
 
5640
                    $dir = $base;
-
 
5641
                    $srcfile = $name;
5635
                $srcfile = $name;
5642
                }
-
 
5643
                else
-
 
5644
                {
-
 
5645
                    if ( m#^\./# ) {
-
 
5646
                        $dir = substr($srcfile, 3, $len);
-
 
5647
                    } else {
-
 
5648
                        $dir = substr($srcfile, 0, $len);
-
 
5649
                    }
-
 
5650
                    $dir = "$base/$dir";
-
 
5651
                }
-
 
5652
            }
5636
            }
-
 
5637
 
5653
            else
5638
            if ( $full )
5654
            {
5639
            {
5655
                if ($abs || ! ($srcfile = $SRCS{ $basename })) {
5640
                my $subdir = StripFileExt($srcfile);
5656
                    $srcfile = $name;
5641
                $subdir = $1
-
 
5642
                    if ( $subdir =~ m~^$ProjectBase/(.*)~ );
-
 
5643
                $dir .= '/' . $subdir;
-
 
5644
                $dir =~ s~//~/~g;
-
 
5645
                $dir =~ s~/./~/~g;
5657
                }
5646
                $dir =~ s~/$~~g;
-
 
5647
                $name = $basename;
5658
            }
5648
            }
5659
 
5649
 
5660
            $name = $basename
5650
            $name = $basename
5661
                if ( $strip );
5651
                if ( $strip );
5662
 
5652
 
Line 5994... Line 5984...
5994
#
5984
#
5995
#
5985
#
5996
sub PackageFile
5986
sub PackageFile
5997
{
5987
{
5998
    my( $platforms, @elements ) = @_;
5988
    my( $platforms, @elements ) = @_;
5999
    my( $base, $dir, $full, $abs, $path, $dist, $strip, $exefile, $type );
5989
    my( $base, $dir, $full, $path, $dist, $strip, $exefile, $type );
6000
    my( $name, $basename, $len, $srcfile );
5990
    my( $name, $basename, $len, $srcfile );
6001
    my( $dir_tree, @dir_tree_exclude, @dir_tree_include, $strip_base );
5991
    my( $dir_tree, @dir_tree_exclude, @dir_tree_include);
-
 
5992
    my $recurse = 1;
-
 
5993
    my $full_path = 1;
6002
 
5994
 
6003
    Debug2( "PackageFile($platforms, @elements)" );
5995
    Debug2( "PackageFile($platforms, @elements)" );
6004
 
5996
 
6005
    return if ( !$ScmPackage );                 # Packaging enabled ?
5997
    return if ( !$ScmPackage );                 # Packaging enabled ?
6006
    return if ( ! ActivePlatform($platforms) );
5998
    return if ( ! ActivePlatform($platforms) );
Line 6008... Line 6000...
6008
#.. Arguments
6000
#.. Arguments
6009
#
6001
#
6010
    $dist = "ALL";                                  # Default set (ALL)
6002
    $dist = "ALL";                                  # Default set (ALL)
6011
    $base = $PackageInfo{'File'}{'PBase'};          # Base of target
6003
    $base = $PackageInfo{'File'}{'PBase'};          # Base of target
6012
    $dir = $base . $PackageInfo{'File'}{'Dir'};     # Installation path (default)
6004
    $dir = $base . $PackageInfo{'File'}{'Dir'};     # Installation path (default)
6013
    $full = $abs = 0;
6005
    $full = 0;
6014
    $strip = 0;
6006
    $strip = 0;
6015
    $strip_base = 0;
-
 
6016
    $exefile = 0;
6007
    $exefile = 0;
6017
 
6008
 
6018
    foreach ( @elements )
6009
    foreach ( @elements )
6019
    {
6010
    {
6020
        my $rv = __TargetDir($T_PKG|$T_MACH|$T_GBE|$T_FILE, $base, $_, \$dir, \$type);
6011
        my $rv = __TargetDir($T_PKG|$T_MACH|$T_GBE|$T_FILE, $base, $_, \$dir, \$type);
Line 6029... Line 6020...
6029
 
6020
 
6030
        } elsif (/^--Package$/) {               # Package .. call by InstallFile
6021
        } elsif (/^--Package$/) {               # Package .. call by InstallFile
6031
        } elsif (/^--Package=(.*)/) {
6022
        } elsif (/^--Package=(.*)/) {
6032
            $dist = "$1";
6023
            $dist = "$1";
6033
 
6024
 
6034
        } elsif (/^--Abs$/) {                   # Override SRCS() checks
-
 
6035
            $abs = 1;
-
 
6036
 
-
 
6037
        } elsif (/^--Strip$/) {                 # Strip path from source files
6025
        } elsif (/^--Strip$/) {                 # Strip path from source files
6038
            $strip = 1;
6026
            $strip = 1;
6039
 
6027
 
6040
        } elsif (/^--Executable$/) {            # Mark the file as executable
6028
        } elsif (/^--Executable$/) {            # Mark the file as executable
6041
            $exefile = "X";
6029
            $exefile = "X";
Line 6056... Line 6044...
6056
 
6044
 
6057
        } elsif ( /^--FilterIn=(.*)/ ) {
6045
        } elsif ( /^--FilterIn=(.*)/ ) {
6058
            push @dir_tree_include, $1;
6046
            push @dir_tree_include, $1;
6059
 
6047
 
6060
        } elsif ( /^--StripDir/ ) {
6048
        } elsif ( /^--StripDir/ ) {
-
 
6049
            $full_path = 0;
-
 
6050
 
-
 
6051
        } elsif ( m/^--Recurse/ ) {
6061
            $strip_base = 1;
6052
            $recurse = 1;
-
 
6053
 
-
 
6054
        } elsif ( m/^--NoRecurse/ ) {
-
 
6055
            $recurse = 0;
6062
 
6056
 
6063
        } elsif (/^--(.*)/) {
6057
        } elsif (/^--(.*)/) {
6064
            Message( "PackageFile: unknown option $_ -- ignored\n" );
6058
            Message( "PackageFile: unknown option $_ -- ignored\n" );
6065
        }
6059
        }
6066
    }
6060
    }
Line 6069... Line 6063...
6069
    #.. DirTree expansion
6063
    #.. DirTree expansion
6070
    #   Note: Uses REs, not simple globs
6064
    #   Note: Uses REs, not simple globs
6071
    #         Use JatsLocateFiles to do the hard work
6065
    #         Use JatsLocateFiles to do the hard work
6072
    if ( $dir_tree )
6066
    if ( $dir_tree )
6073
    {
6067
    {
6074
        my $search = JatsLocateFiles->new('Recurse', 'FullPath' );
6068
        my $search = JatsLocateFiles->new('FullPath' );
-
 
6069
        $search->recurse($recurse);
-
 
6070
        $search->full_path($full_path);
6075
        $search->filter_in_re ( $_ ) foreach ( @dir_tree_include );
6071
        $search->filter_in_re ( $_ ) foreach ( @dir_tree_include );
6076
        $search->filter_out_re( $_ ) foreach ( @dir_tree_exclude );
6072
        $search->filter_out_re( $_ ) foreach ( @dir_tree_exclude );
6077
        @elements = $search->search ( $dir_tree );
6073
        @elements = $search->search ( $dir_tree );
6078
        $strip_base = length( $dir_tree ) if ( $strip_base );
-
 
6079
    }
6074
    }
6080
 
6075
 
6081
#.. Files
6076
#.. Files
6082
#
6077
#
6083
    foreach ( @elements )
6078
    foreach ( @elements )
Line 6108... Line 6103...
6108
        }
6103
        }
6109
 
6104
 
6110
        if ( ! /^--(.*)/ )
6105
        if ( ! /^--(.*)/ )
6111
        {
6106
        {
6112
            $basename = StripDir( $name );
6107
            $basename = StripDir( $name );
6113
            if ( $full )
-
 
6114
            {
-
 
6115
                if ($abs || ! ($srcfile = $SRCS{ $basename }) ||
6108
            if ( !($srcfile = $SRCS{ $basename }) ) {
6116
                        ($len = rindex($srcfile, "/")) == -1)
-
 
6117
                {
-
 
6118
                    #
-
 
6119
                    #   Either: --Abs
-
 
6120
                    #           the file is NOT known to JATS
-
 
6121
                    #           the file is known and and it does NOT contains a "/"
-
 
6122
                    #   Result: Use simple dir and name
-
 
6123
                    #
-
 
6124
                    $dir = $base;
-
 
6125
                    $srcfile = $name;
6109
                $srcfile = $name;
6126
                }
-
 
6127
                else
-
 
6128
                {
-
 
6129
                    #
-
 
6130
                    #   Using Full directory path.
-
 
6131
                    #   Ensure that ProjectBase is removed as this may have
-
 
6132
                    #   been added if the file was found in a directory with it
-
 
6133
                    #
-
 
6134
                    $srcfile = $1
-
 
6135
                        if ( $srcfile =~ m~^$ProjectBase/(.*)~ );
-
 
6136
 
-
 
6137
 
-
 
6138
                    if ( m#^\./# ) {
-
 
6139
                        $dir = substr($srcfile, 3, $len);
-
 
6140
                    } else {
-
 
6141
                        $dir = substr($srcfile, 0, $len);
-
 
6142
                    }
-
 
6143
                    $dir = "$base/$dir";
-
 
6144
                }
-
 
6145
            }
6110
            }
-
 
6111
 
6146
            else
6112
            if ( $full )
6147
            {
6113
            {
6148
                if ($abs || ! ($srcfile = $SRCS{ $basename })) {
6114
                my $subdir = StripFileExt($srcfile);
6149
                    $srcfile = $name;
6115
                $subdir = $1
-
 
6116
                    if ( $subdir =~ m~^$ProjectBase/(.*)~ );
-
 
6117
                $dir .= '/' . $subdir;
-
 
6118
                $dir =~ s~//~/~g;
-
 
6119
                $dir =~ s~/./~/~g;
6150
                }
6120
                $dir =~ s~/$~~g;
-
 
6121
                $name = $basename;
6151
            }
6122
            }
6152
 
6123
 
6153
            $name = $basename
6124
            $name = $basename
6154
                if ( $strip );
6125
                if ( $strip );
6155
 
6126
 
6156
            if ( $strip_base )
-
 
6157
            {
-
 
6158
                $name = substr $name, $strip_base;
-
 
6159
                $name =~ s~^/~~;
-
 
6160
            }
-
 
6161
 
-
 
6162
            $dir =~ s~//~/~g;
6127
            $dir =~ s~//~/~g;
6163
            $dir =~ s~/$~~;
6128
            $dir =~ s~/$~~;
6164
 
6129
 
6165
            #
6130
            #
6166
            #   Sanity test the source filename
6131
            #   Sanity test the source filename
Line 6186... Line 6151...
6186
}
6151
}
6187
 
6152
 
6188
sub PackageHdr
6153
sub PackageHdr
6189
{
6154
{
6190
    my( $platforms, @elements ) = @_;
6155
    my( $platforms, @elements ) = @_;
6191
    my( $base, $dir, $full, $abs, $path, $dist, $strip );
6156
    my( $base, $dir, $full, $path, $dist, $strip );
6192
    my( $name, $basename, $len, $srcfile );
6157
    my( $name, $basename, $len, $srcfile );
6193
 
6158
 
6194
    Debug2( "PackageHdr($platforms, @elements)" );
6159
    Debug2( "PackageHdr($platforms, @elements)" );
6195
 
6160
 
6196
    return if ( !$ScmPackage );                 # Packaging enabled ?
6161
    return if ( !$ScmPackage );                 # Packaging enabled ?
Line 6199... Line 6164...
6199
#.. Arguments
6164
#.. Arguments
6200
#
6165
#
6201
    $dist = "ALL";                                  # Default set (ALL)
6166
    $dist = "ALL";                                  # Default set (ALL)
6202
    $base = $PackageInfo{'Hdr'}{'PBase'};           # Base of target
6167
    $base = $PackageInfo{'Hdr'}{'PBase'};           # Base of target
6203
    $dir = $base . $PackageInfo{'Hdr'}{'Dir'};      # Installation path (default)
6168
    $dir = $base . $PackageInfo{'Hdr'}{'Dir'};      # Installation path (default)
6204
    $full = $abs = 0;
6169
    $full = 0;
6205
    $strip = 0;
6170
    $strip = 0;
6206
 
6171
 
6207
    foreach ( @elements )
6172
    foreach ( @elements )
6208
    {
6173
    {
6209
        my $rv = __TargetDir($T_PKG, $base, $_, \$dir);
6174
        my $rv = __TargetDir($T_PKG, $base, $_, \$dir);
Line 6218... Line 6183...
6218
 
6183
 
6219
        } elsif (/^--Package$/) {               # Package .. call by InstallHdr
6184
        } elsif (/^--Package$/) {               # Package .. call by InstallHdr
6220
        } elsif (/^--Package=(.*)/) {
6185
        } elsif (/^--Package=(.*)/) {
6221
            $dist = "$1";
6186
            $dist = "$1";
6222
 
6187
 
6223
        } elsif (/^--Abs$/) {                   # Override SRCS() checks
-
 
6224
            $abs = 1;
-
 
6225
 
-
 
6226
        } elsif (/^--Strip$/) {                 # Strip path from source files
6188
        } elsif (/^--Strip$/) {                 # Strip path from source files
6227
            $strip = 1;
6189
            $strip = 1;
6228
 
6190
 
6229
        } elsif (/^--(.*)/) {
6191
        } elsif (/^--(.*)/) {
6230
            Message( "PackageHdr: unknown option $_ -- ignored\n" );
6192
            Message( "PackageHdr: unknown option $_ -- ignored\n" );
Line 6238... Line 6200...
6238
        my %package_entry;
6200
        my %package_entry;
6239
        if ( ! /^--(.*)/ )
6201
        if ( ! /^--(.*)/ )
6240
        {
6202
        {
6241
            $name = $_;
6203
            $name = $_;
6242
            $basename = StripDir( $name );
6204
            $basename = StripDir( $name );
6243
            if ( $full )
-
 
6244
            {
-
 
6245
                if ($abs || ! ($srcfile = $SRCS{ $basename }) ||
6205
            if ( !($srcfile = $SRCS{ $basename }) ) {
6246
                        ($len = rindex($srcfile, "/")) == -1)
-
 
6247
                {
-
 
6248
                    $dir = $base;
-
 
6249
                    $srcfile = $name;
6206
                $srcfile = $name;
6250
                }
-
 
6251
                else
-
 
6252
                {
-
 
6253
                    $srcfile = $1
-
 
6254
                        if ( $srcfile =~ m~^$ProjectBase/(.*)~ );
-
 
6255
 
-
 
6256
                    if ( m#^\./# ) {
-
 
6257
                        $dir = substr($srcfile, 3, $len);
-
 
6258
                    } else {
-
 
6259
                        $dir = substr($srcfile, 0, $len);
-
 
6260
                    }
-
 
6261
                    $dir = "$base/$dir";
-
 
6262
                }
-
 
6263
            }
6207
            }
-
 
6208
 
6264
            else
6209
            if ( $full )
6265
            {
6210
            {
6266
                if ($abs || ! ($srcfile = $SRCS{ $basename })) {
6211
                my $subdir = StripFileExt($srcfile);
6267
                    $srcfile = $name;
6212
                $subdir = $1
-
 
6213
                    if ( $subdir =~ m~^$ProjectBase/(.*)~ );
-
 
6214
                $dir .= '/' . $subdir;
-
 
6215
                $dir =~ s~//~/~g;
-
 
6216
                $dir =~ s~/./~/~g;
6268
                }
6217
                $dir =~ s~/$~~g;
-
 
6218
                $name = $basename;
6269
            }
6219
            }
6270
 
6220
 
6271
            $name = $basename
6221
            $name = $basename
6272
                if ( $strip );
6222
                if ( $strip );
6273
 
6223