Subversion Repositories DevTools

Rev

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

Rev 2429 Rev 6294
Line 56... Line 56...
56
                                                '$(WCEROOT)/atlmfc/lib/$(WCE_TARGETCPU)',
56
                                                '$(WCEROOT)/atlmfc/lib/$(WCE_TARGETCPU)',
57
                                           ],
57
                                           ],
58
                           'hex_WCEVersion' => 1,
58
                           'hex_WCEVersion' => 1,
59
                           },
59
                           },
60
 
60
 
-
 
61
        'VS2008'    =>  {  'def'       => 'vcembedded2008.def' ,
-
 
62
                          'initDef'    => 'vcembedded',
-
 
63
                          'buildcmd'   => 'devenv =DSW= /build =TYPE= /useenv /out =LOG=' ,
-
 
64
                          'cleancmd'   => 'devenv =DSW= /clean =TYPE= /useenv' ,
-
 
65
                          'tmp'        => 'vc80',
-
 
66
                          'VSCOMPILER' => '2',
-
 
67
 
-
 
68
                          'wceroot'    => 'Microsoft Visual Studio 9.0/VC/ce',
-
 
69
                          'includes'   => [    '$(WCEROOT)/include',
-
 
70
                                               '$(WCEROOT)/atlmfc/include',
-
 
71
                                          ],
-
 
72
                          'libs'       => [    '$(WCEROOT)/lib/$(WCE_TARGETCPU)',
-
 
73
                                               '$(WCEROOT)/atlmfc/lib/$(WCE_TARGETCPU)',
-
 
74
                                          ],
-
 
75
                          'hex_WCEVersion' => 1,
-
 
76
                          'calcEntryPoint' => 1,
-
 
77
                          },
-
 
78
 
-
 
79
 
61
    );
80
    );
62
 
81
 
63
 
82
 
64
##############################################################################
83
##############################################################################
65
#   ToolsetInit()
84
#   ToolsetInit()
Line 87... Line 106...
87
    my( @cflags, @cflags_debug, @cflags_prod ) = ();
106
    my( @cflags, @cflags_debug, @cflags_prod ) = ();
88
    my( @libflags, @ldflags, @ldflags_debug, @ldflags_prod ) = ();
107
    my( @libflags, @ldflags, @ldflags_debug, @ldflags_prod ) = ();
89
    my $is_vs2005;
108
    my $is_vs2005;
90
    my $default_ehandling = undef;
109
    my $default_ehandling = undef;
91
    my @pDefines;
110
    my @pDefines;
-
 
111
    my $stack = '0x10000,0x1000';
92
 
112
 
93
#.. Standard.rul requirements
113
#.. Standard.rul requirements
94
#
114
#
95
    $::s = "asm";
115
    $::s = "asm";
96
    $::o = "obj";
116
    $::o = "obj";
Line 198... Line 218...
198
        'PsionTeklogixCE420'=> 'WCE_PLATFORM_STANDARDSDK',
218
        'PsionTeklogixCE420'=> 'WCE_PLATFORM_STANDARDSDK',
199
        'PsionTeklogixCE500'=> 'WCE_PLATFORM_STANDARDSDK',
219
        'PsionTeklogixCE500'=> 'WCE_PLATFORM_STANDARDSDK',
200
        'PA961'             => 'WCE_PLATFORM_PA961',
220
        'PA961'             => 'WCE_PLATFORM_PA961',
201
        'PA962'             => 'WCE_PLATFORM_PA962',
221
        'PA962'             => 'WCE_PLATFORM_PA962',
202
        'PA962 WINCE 500'   => 'WCE_PLATFORM_PA962',
222
        'PA962 WINCE 500'   => 'WCE_PLATFORM_PA962',
203
        'M81B_SDK'          => 'WCE_PLATFORM_M81B',         # Just made this one up
223
        'M81B_SDK'          => 'WCE_PLATFORM_M81B',                 # Just made this one up
-
 
224
        'VixArmv4iGeneric'  => 'WCE_PLATFORM_VIXARMV4I_GENERIC',    # Just made this one up
204
        'PocketPC'          => 'WIN32_PLATFORM_PSPC',
225
        'PocketPC'          => 'WIN32_PLATFORM_PSPC',
205
    );
226
    );
206
 
227
 
207
    unless ( $WCEPlatform eq 'NONE' )
228
    unless ( $WCEPlatform eq 'NONE' )
208
    {
229
    {
Line 240... Line 261...
240
        @cflags             = ( '/GS-' )           if ($is_vs2005);
261
        @cflags             = ( '/GS-' )           if ($is_vs2005);
241
        @cflags_debug       = ( '-M$(CECrtDebug)' )unless ($is_vs2005);
262
        @cflags_debug       = ( '-M$(CECrtDebug)' )unless ($is_vs2005);
242
        @cflags_prod        = ( '-M$(CECrtMT)' )   unless ($is_vs2005);
263
        @cflags_prod        = ( '-M$(CECrtMT)' )   unless ($is_vs2005);
243
 
264
 
244
        push( @ldflags,     '-base:0x00010000' );
265
        push( @ldflags,     '-base:0x00010000' );
245
        push( @ldflags,     '-stack:0x10000,0x1000' );
266
        push( @ldflags,     '-stack:' . $stack );
246
        push( @ldflags,     '-entry:WinMainCRTStartup' );
267
        push( @ldflags,     '-entry:WinMainCRTStartup' );
247
        push( @ldflags,     '$(CENoDefaultLib)' );
268
        push( @ldflags,     '$(CENoDefaultLib)' );
248
        push( @ldflags,     '-Subsystem:$(CESubsystem)' );
269
        push( @ldflags,     '-Subsystem:$(CESubsystem)' );
249
        push( @ldflags,     '-align:4096' );
270
        push( @ldflags,     '-align:4096' );
250
        push( @ldflags,     '-MACHINE:ARM' );
271
        push( @ldflags,     '-MACHINE:ARM' );
Line 267... Line 288...
267
        @cflags             = ( '/GS-' )           if ($is_vs2005);
288
        @cflags             = ( '/GS-' )           if ($is_vs2005);
268
        @cflags_debug       = ( '-M$(CECrtDebug)' )unless ($is_vs2005);
289
        @cflags_debug       = ( '-M$(CECrtDebug)' )unless ($is_vs2005);
269
        @cflags_prod        = ( '-M$(CECrtMT)' )   unless ($is_vs2005);
290
        @cflags_prod        = ( '-M$(CECrtMT)' )   unless ($is_vs2005);
270
 
291
 
271
        push( @ldflags,     '-base:0x00010000' );
292
        push( @ldflags,     '-base:0x00010000' );
272
        push( @ldflags,     '-stack:0x10000,0x1000' );
293
        push( @ldflags,     '-stack:' . $stack );
273
        push( @ldflags,     '-entry:WinMainCRTStartup' );
294
        push( @ldflags,     '-entry:WinMainCRTStartup' );
274
        push( @ldflags,     '$(CENoDefaultLib)' );
295
        push( @ldflags,     '$(CENoDefaultLib)' );
275
        push( @ldflags,     '-nodefaultlib:oldnames.lib' ) if (1);
296
        push( @ldflags,     '-nodefaultlib:oldnames.lib' ) if (1);
276
        push( @ldflags,     '-Subsystem:$(CESubsystem)' );
297
        push( @ldflags,     '-Subsystem:$(CESubsystem)' );
277
        push( @ldflags,     '-MACHINE:THUMB' );
298
        push( @ldflags,     '-MACHINE:THUMB' );
Line 295... Line 316...
295
        push (@cflags,      '/GS-' );
316
        push (@cflags,      '/GS-' );
296
        push (@cflags,      '/Zl' );
317
        push (@cflags,      '/Zl' );
297
 
318
 
298
        #push( @ldflags,     '-base:0x00010000' );
319
        #push( @ldflags,     '-base:0x00010000' );
299
        push( @ldflags,     '/Manifest:no' );
320
        push( @ldflags,     '/Manifest:no' );
300
        push( @ldflags,     '-stack:0x10000,0x1000' );
321
        push( @ldflags,     '-stack:' . $stack );
301
        push( @ldflags,     '-entry:WinMainCRTStartup' );
322
        push( @ldflags,     '-entry:WinMainCRTStartup' );
302
        push( @ldflags,     '$(CENoDefaultLib)' );
323
        push( @ldflags,     '$(CENoDefaultLib)' );
303
        push( @ldflags,     '-nodefaultlib:oldnames.lib' ) if (1);
324
        push( @ldflags,     '-nodefaultlib:oldnames.lib' ) if (1);
304
        push( @ldflags,     '-Subsystem:$(CESubsystem)' );
325
        push( @ldflags,     '-Subsystem:$(CESubsystem)' );
305
        push( @ldflags,     '-MACHINE:THUMB' );
326
        push( @ldflags,     '-MACHINE:THUMB' );
Line 388... Line 409...
388
        @cflags             = ( '-Gs8192', '-GF' );
409
        @cflags             = ( '-Gs8192', '-GF' );
389
        @defines            = ( '-D_X86_', '-Dx86', '-D_i386_' );
410
        @defines            = ( '-D_X86_', '-Dx86', '-D_i386_' );
390
 
411
 
391
        push( @ldflags, '-section:.shared,rws' );
412
        push( @ldflags, '-section:.shared,rws' );
392
        push( @ldflags, '-base:0x00100000' );
413
        push( @ldflags, '-base:0x00100000' );
393
        push( @ldflags, '-stack:0x10000,0x1000' );
414
        push( @ldflags, '-stack:' . $stack );
394
        push( @ldflags, '-entry:WinMainCRTStartup' );
415
        push( @ldflags, '-entry:WinMainCRTStartup' );
395
        push( @ldflags, '-Subsystem:$(CESubsystem)' );
416
        push( @ldflags, '-Subsystem:$(CESubsystem)' );
396
        push( @ldflags, '-MACHINE:IX86' );
417
        push( @ldflags, '-MACHINE:IX86' );
397
        push( @ldflags, '$(CENoDefaultLib)' );
418
        push( @ldflags, '$(CENoDefaultLib)' );
398
        push( @ldflags, '-nodefaultlib:oldnames.lib' );
419
        push( @ldflags, '-nodefaultlib:oldnames.lib' );
Line 414... Line 435...
414
            @defines        = ( '-D_X86_', '-Dx86', '-D_i386_' );
435
            @defines        = ( '-D_X86_', '-Dx86', '-D_i386_' );
415
 
436
 
416
            @cflags         = ( '-Gs8192', '-GF' );
437
            @cflags         = ( '-Gs8192', '-GF' );
417
 
438
 
418
            push( @ldflags, '-base:0x00010000' );
439
            push( @ldflags, '-base:0x00010000' );
419
            push( @ldflags, '-stack:0x10000,0x1000' );
440
            push( @ldflags, '-stack:' . $stack );
420
            push( @ldflags, '-entry:WinMainCRTStartup' );
441
            push( @ldflags, '-entry:WinMainCRTStartup' );
421
            push( @ldflags, '-Subsystem:$(CESubsystem)' );
442
            push( @ldflags, '-Subsystem:$(CESubsystem)' );
422
            push( @ldflags, '-MACHINE:IX86' );
443
            push( @ldflags, '-MACHINE:IX86' );
423
            push( @ldflags, '$(CENoDefaultLib)' );
444
            push( @ldflags, '$(CENoDefaultLib)' );
424
            push( @ldflags, '-nodefaultlib:oldnames.lib' );
445
            push( @ldflags, '-nodefaultlib:oldnames.lib' );
Line 438... Line 459...
438
    }
459
    }
439
 
460
 
440
    #
461
    #
441
    #   Append any platform specific definitions
462
    #   Append any platform specific definitions
442
    #
463
    #
-
 
464
    push (@defines,     '-D "_WINDOWS"', '-D "_WINCE"' ) if ($is_vs2005);
443
    push @defines, @pDefines;
465
    push @defines, @pDefines;
444
 
466
 
445
#.. Define eMebbed C/C+ environment
467
#.. Define eMebbed C/C+ environment
446
#
468
#
447
 
469
 
Line 486... Line 508...
486
#################################################
508
#################################################
487
# Default paths, toolchain and flags
509
# Default paths, toolchain and flags
488
#
510
#
489
#..
511
#..
490
 
512
 
491
PROGRAMFILES        ?= C:/Program Files
513
PROGRAMFILES         ?= C:/Program Files
492
 
514
 
493
ifndef WCEROOT
515
ifndef WCEROOT
494
WCEROOT		:= \$(PROGRAMFILES)/" . $wceroot ."
516
WCEROOT              := \$(PROGRAMFILES)/" . $wceroot ."
495
export WCEROOT
517
export WCEROOT
496
endif
518
endif
497
 
519
 
498
ifndef SDKROOT
520
ifndef SDKROOT
499
SDKROOT		:= \$(PROGRAMFILES)/" . $sdkroot ."
521
SDKROOT              := \$(PROGRAMFILES)/" . $sdkroot ."
500
export SDKROOT
522
export SDKROOT
501
endif
523
endif
502
 
524
 
503
WCE_VSTOOL           := $vstool
525
WCE_VSTOOL           := $vstool
504
WCE_VERSION          := $WCEVersionTool
526
WCE_VERSION          := $WCEVersionTool
505
WCE_SUBSYSTEM        := $WCESubsystem
527
WCE_SUBSYSTEM        := $WCESubsystem
506
WCE_PLATFORM         := $WCEPlatform
528
WCE_PLATFORM         := $WCEPlatform
507
WCE_PLATFORM_SDK_DEF := $WCEPlatformDefine
529
WCE_PLATFORM_SDK_DEF := $WCEPlatformDefine
508
WCE_PLATFORM2        := $WCEPlatformClean
530
WCE_PLATFORM2        := $WCEPlatformClean
509
WCE_TARGETCPU        := $WCETargetCPU
531
WCE_TARGETCPU        := $WCETargetCPU
510
WCE_HOSTCPU	         := $WCEHostCPU
532
WCE_HOSTCPU          := $WCEHostCPU
511
 
533
 
512
CESubsystem          := \$(WCE_SUBSYSTEM)
534
CESubsystem          := \$(WCE_SUBSYSTEM)
513
CEVersion            := \$(WCE_VERSION)
535
CEVersion            := \$(WCE_VERSION)
514
CEPlatform           := \$(WCE_PLATFORM)
536
CEPlatform           := \$(WCE_PLATFORM)
515
");
537
");
Line 630... Line 652...
630
        'rtti'               => { 'USE_RTTI', 1 },
652
        'rtti'               => { 'USE_RTTI', 1 },
631
        'nopdb'              => { 'PDB_NONE', 1 },
653
        'nopdb'              => { 'PDB_NONE', 1 },
632
        'pdb'                => { 'PDB_NONE', undef },
654
        'pdb'                => { 'PDB_NONE', undef },
633
        'exceptions'         => { 'USE_HANDLING', 1 },
655
        'exceptions'         => { 'USE_HANDLING', 1 },
634
        'noexceptions'       => { 'USE_HANDLING', undef },
656
        'noexceptions'       => { 'USE_HANDLING', undef },
-
 
657
        'subsystem:windows'  => { 'ENTRYPOINT' , 'WinMainCRTStartup' },
-
 
658
        'subsystem:console'  => { 'ENTRYPOINT' , 'mainACRTStartup' },
635
    );
659
    );
636
 
660
 
637
    #
661
    #
638
    #   Set default options
662
    #   Set default options
639
    #       USE_HANDLING - not always the same default
663
    #       USE_HANDLING - not always the same default
Line 1076... Line 1100...
1076
#
1100
#
1077
    $def = "";                                  # options
1101
    $def = "";                                  # options
1078
    $doimplib = 0;
1102
    $doimplib = 0;
1079
    $res = "";
1103
    $res = "";
1080
    $no_pdb = $pdb_none;
1104
    $no_pdb = $pdb_none;
-
 
1105
    $entry = '_DllMainCRTStartup';
1081
 
1106
 
1082
    foreach $_ ( @$pArgs ) {
1107
    foreach $_ ( @$pArgs ) {
1083
        if (/^--Def=(.*?)(\,(.*))?$/) {         # Library definition
1108
        if (/^--Def=(.*?)(\,(.*))?$/) {         # Library definition
1084
            #
1109
            #
1085
            #   Locate the Def file.
1110
            #   Locate the Def file.
Line 1317... Line 1342...
1317
        $io->Cmd( "-out:\$(subst /,\\\\,\$(LIBDIR)/${full})" );
1342
        $io->Cmd( "-out:\$(subst /,\\\\,\$(LIBDIR)/${full})" );
1318
        $io->Cmd( "-implib:\$(subst /,\\\\,$import_lib)" ) if ($import_lib);
1343
        $io->Cmd( "-implib:\$(subst /,\\\\,$import_lib)" ) if ($import_lib);
1319
        $io->Cmd( "-pdb:\$(subst /,\\\\,$pdb_file)" ) unless ( $no_pdb );
1344
        $io->Cmd( "-pdb:\$(subst /,\\\\,$pdb_file)" ) unless ( $no_pdb );
1320
        $io->Cmd( "-debug:none" )                     if ($no_pdb);
1345
        $io->Cmd( "-debug:none" )                     if ($no_pdb);
1321
        $io->Cmd( "-pdb:none" )                       if ($no_pdb);
1346
        $io->Cmd( "-pdb:none" )                       if ($no_pdb);
1322
        $io->Cmd( "-entry:$entry" )                   if ($entry);
1347
        $io->Cmd( "-entry:$entry" )                   unless ($resource_only);
1323
        $io->Cmd( "-map:\$(subst /,\\\\,\$(LIBDIR)/${lib}).map" );
1348
        $io->Cmd( "-map:\$(subst /,\\\\,\$(LIBDIR)/${lib}).map" );
1324
        $io->Cmd( "\$(subst /,\\\\,$res)" ) if ( $res );
1349
        $io->Cmd( "\$(subst /,\\\\,$res)" ) if ( $res );
1325
        $io->Cmd( "\$(subst /,\\\\,$export_file)" ) if ( $export_file );
1350
        $io->Cmd( "\$(subst /,\\\\,$export_file)" ) if ( $export_file );
1326
 
1351
 
1327
                                                # object list
1352
                                                # object list
Line 1427... Line 1452...
1427
{
1452
{
1428
    my ( $name, $pArgs, $pObjs, $pLibs ) = @_;
1453
    my ( $name, $pArgs, $pObjs, $pLibs ) = @_;
1429
    my ( $res, @reslist );
1454
    my ( $res, @reslist );
1430
    my $no_pdb =$pdb_none;
1455
    my $no_pdb =$pdb_none;
1431
    our( $entry, $noaddlibs );
1456
    our( $entry, $noaddlibs );
-
 
1457
    my $stack = '0x10000,0x1000';
-
 
1458
 
-
 
1459
    #
-
 
1460
    #   Auto calc entry point - only in new WinCE
-
 
1461
    #   Default is for subsystem:windows
-
 
1462
    #   
-
 
1463
    if ($toolchain_info->{'calcEntryPoint'}) {
-
 
1464
        if (exists $::ScmCompilerOpts{'LDSUBSYSTEM'}) {
-
 
1465
            $entry = $::ScmCompilerOpts{'LDSUBSYSTEM'}; 
-
 
1466
        }
-
 
1467
    }
1432
 
1468
 
1433
#.. Parse arguments
1469
#.. Parse arguments
1434
#
1470
#
1435
    foreach ( @$pArgs ) {
1471
    foreach ( @$pArgs ) {
1436
        if (/^--Resource=(.*)/) {               # Resource definition
1472
        if (/^--Resource=(.*)/) {               # Resource definition
Line 1443... Line 1479...
1443
            $entry = $1;
1479
            $entry = $1;
1444
 
1480
 
1445
        } elsif (/^--NoAddLib/) {
1481
        } elsif (/^--NoAddLib/) {
1446
            $noaddlibs = 1;
1482
            $noaddlibs = 1;
1447
 
1483
 
-
 
1484
        } elsif (/^--Stack=(.*)/i) {            # Alternate stack.
-
 
1485
            $stack   = $1;
-
 
1486
 
1448
        } else {
1487
        } else {
1449
            Message( "$toolset_name LD: unknown option $_ -- ignored\n" );
1488
            Message( "$toolset_name LD: unknown option $_ -- ignored\n" );
1450
 
1489
 
1451
        }
1490
        }
1452
    }
1491
    }
Line 1497... Line 1536...
1497
    $io->Cmd( "-out:\$(subst /,\\\\,$full)" );
1536
    $io->Cmd( "-out:\$(subst /,\\\\,$full)" );
1498
    $io->Cmd( "-pdb:\$(subst /,\\\\,$pdb)" )        unless ($no_pdb);
1537
    $io->Cmd( "-pdb:\$(subst /,\\\\,$pdb)" )        unless ($no_pdb);
1499
    $io->Cmd( "-debug:none" )                       if ($no_pdb);
1538
    $io->Cmd( "-debug:none" )                       if ($no_pdb);
1500
    $io->Cmd( "-pdb:none" )                         if ($no_pdb);
1539
    $io->Cmd( "-pdb:none" )                         if ($no_pdb);
1501
    $io->Cmd( "-entry:$entry" )                     if ($entry);
1540
    $io->Cmd( "-entry:$entry" )                     if ($entry);
-
 
1541
    $io->Cmd( "-stack:$stack" )                     if ($stack);
1502
    $io->Cmd( "-map:\$(subst /,\\\\,$map)" );
1542
    $io->Cmd( "-map:\$(subst /,\\\\,$map)" );
1503
    $io->Cmd( "\$(subst /,\\\\,$res)" )             if ( $res );
1543
    $io->Cmd( "\$(subst /,\\\\,$res)" )             if ( $res );
1504
 
1544
 
1505
    ToolsetLibStd( $pLibs ) unless ( $noaddlibs );      # push standard libraries
1545
    ToolsetLibStd( $pLibs ) unless ( $noaddlibs );      # push standard libraries
1506
    $io->ObjList( $name, $pObjs, \&ToolsetObjRecipe );  # object list
1546
    $io->ObjList( $name, $pObjs, \&ToolsetObjRecipe );  # object list