Changeset 980
- Timestamp:
- 12/10/2006 21:50:24 (5 years ago)
- File:
-
- 1 edited
-
box/trunk/infrastructure/makebuildenv.pl.in (modified) (16 diffs)
Legend:
- Unmodified
- Added
- Removed
-
box/trunk/infrastructure/makebuildenv.pl.in
r538 r980 15 15 print "Box build environment setup.\n\n"; 16 16 17 18 my $implicit_dep = 'lib/common'; 17 my @implicit_deps = ('lib/common'); 19 18 20 19 # work out platform variables … … 39 38 my %env_flags; 40 39 41 my $windows_include_path = "-I../../lib/win32 "; 42 if ($target_os ne "mingw32" && $target_os ne "winnt") 43 { 44 $windows_include_path = ""; 45 $env_flags{'IGNORE_lib/win32'} = 1; 40 my $windows_include_path = ""; 41 if ($target_windows) 42 { 43 $module_dependency{"lib/common"} = ["lib/win32"]; 44 push @implicit_deps, "lib/win32"; 45 } 46 else 47 { 48 # $env_flags{'IGNORE_lib/win32'} = 1; 46 49 } 47 50 … … 272 275 } 273 276 } 274 $module_dependency{$mod} = [ $implicit_dep,@md];277 $module_dependency{$mod} = [@implicit_deps,@md]; 275 278 $module_library_link_opts{$mod} = [@lo]; 276 279 … … 287 290 288 291 # make dirs for implicit dep 289 mkdir "release/$implicit_dep",0755; 290 mkdir "debug/$implicit_dep",0755; 292 foreach my $dep (@implicit_deps) 293 { 294 mkdir "release/$dep",0755; 295 mkdir "debug/$dep",0755; 296 } 291 297 292 298 # write a list of all the modules we've configured to use … … 297 303 #define _CONFIGURED_MODULES__H 298 304 __E 299 for( $implicit_dep,@modules)305 for(@implicit_deps,@modules) 300 306 { 301 307 my $m = $_; … … 311 317 # now make a list of all the .h files we can find, recording which module they're in 312 318 my %hfiles; 313 for my $mod (@modules, $implicit_dep)319 for my $mod (@modules, @implicit_deps) 314 320 { 315 321 opendir DIR,$mod; … … 348 354 } 349 355 350 for my $mod (@modules, $implicit_dep)356 for my $mod (@modules, @implicit_deps) 351 357 { 352 358 opendir DIR,$mod; … … 374 380 print "done\n\nGenerating Makefiles...\n"; 375 381 382 my %module_resources_win32; 376 383 377 384 # Then write a makefile for each module 378 for my $mod (@ modules, $implicit_dep)385 for my $mod (@implicit_deps, @modules) 379 386 { 380 387 print $mod,"\n"; … … 417 424 418 425 writetestfile("$mod/_t", 419 './test' . $platform_exe_ext . ' $1 $2 $3 $4 $5', $mod);426 './test' . $platform_exe_ext . ' $1 $2 $3 $4 $5', $mod); 420 427 writetestfile("$mod/_t-gdb", 421 'gdb ./test ' . $platform_exe_ext, $mod);428 'gdb ./test' . $platform_exe_ext, $mod); 422 429 423 430 } … … 442 449 # and then dedup and reorder them 443 450 my %d_done; 444 for (my $a = $#deps_raw; $a >= 0; $a--)445 { 446 if(!exists $d_done{$dep s_raw[$a]})451 foreach my $dep (reverse @deps_raw) 452 { 453 if(!exists $d_done{$dep}) 447 454 { 448 455 # insert 449 push @all_deps_for_module, $dep s_raw[$a];456 push @all_deps_for_module, $dep; 450 457 # mark as done 451 $d_done{$dep s_raw[$a]} = 1;458 $d_done{$dep} = 1; 452 459 } 453 460 } … … 485 492 486 493 my $release_flags = "-O2"; 487 if ($target_ os eq "mingw32")494 if ($target_windows) 488 495 { 489 496 $release_flags = "-O0 -g"; … … 500 507 RANLIB = ranlib 501 508 PERL = "@PERL@" 509 WINDRES = windres 502 510 .ifdef RELEASE 503 511 CXXFLAGS = -DNDEBUG $release_flags -Wall $include_paths $extra_platform_defines -DBOX_VERSION="\\"$product_version\\"" … … 547 555 } 548 556 549 # first, obtain a list of depen encies within the .h files557 # first, obtain a list of dependencies within the .h files 550 558 my %headers; 551 559 for my $h (grep /\.h\Z/i, @items) … … 567 575 # then... do the cpp files... 568 576 my @obj_base; 569 for my $cpp (@items) 570 { 571 next unless $cpp =~ m/\A(.+)\.cpp\Z/i; 572 next if $cpp =~ /\A\._/; # Temp Mac OS Resource hack 577 for my $file (@items) 578 { 579 my $is_cpp = $file =~ m/\A(.+)\.cpp\Z/i; 580 my $is_rc = $file =~ m/\A(.+)\.rc\Z/i; 581 my $base = $1; 582 583 if ($target_windows) 584 { 585 next if not $is_cpp and not $is_rc; 586 } 587 else 588 { 589 next if not $is_cpp; 590 } 591 592 next if $file =~ /\A\._/; # Temp Mac OS Resource hack 573 593 574 594 # store for later 575 my $base = $1;576 595 push @obj_base,$base; 577 596 578 597 # get the file... 579 open FL,"$mod/$ cpp";598 open FL,"$mod/$file"; 580 599 my $f; 581 read FL,$f,-s "$mod/$ cpp";600 read FL,$f,-s "$mod/$file"; 582 601 close FL; 583 602 … … 593 612 594 613 # write the line for this cpp file 595 $make .= $out_name.': '.join(' ',$cpp,map 596 { ($hfiles{$_} eq $mod)?$_:'../../'.$hfiles{$_}."/$_" } keys %dep)."\n"; 597 $make .= "\t\$(CXX) \$(CXXFLAGS) $compile_line_extra -c $cpp -o $out_name\n\n"; 598 614 my @dep_paths = map 615 { 616 ($hfiles{$_} eq $mod) 617 ? $_ 618 : '../../'.$hfiles{$_}."/$_" 619 } 620 keys %dep; 621 622 $make .= $out_name.': '.join(' ',$file,@dep_paths)."\n"; 623 624 if ($is_cpp) 625 { 626 $make .= "\t\$(CXX) \$(CXXFLAGS) $compile_line_extra ". 627 "-c $file -o $out_name\n\n"; 628 } 629 elsif ($is_rc) 630 { 631 $make .= "\t\$(WINDRES) $file $out_name\n\n"; 632 my $res_list = $module_resources_win32{$mod}; 633 $res_list ||= []; 634 push @$res_list, $base.'.o'; 635 $module_resources_win32{$mod} = $res_list; 636 } 599 637 } 600 638 … … 648 686 649 687 my $o_file_list = join(' ',map {'$(OUTDIR)/'.$_.'.o'} @objs); 688 689 if ($has_deps and not $bsd_make) 690 { 691 print MAKE ".PHONY: all\n" . 692 "all: dep_modules $end_target\n\n"; 693 } 694 650 695 print MAKE $end_target,': ',$o_file_list; 651 print MAKE ' dep_modules' if $has_deps and not $bsd_make;652 696 print MAKE " ",$lib_files unless $target_is_library; 653 697 print MAKE "\n"; 654 698 699 if ($target_windows) 700 { 701 foreach my $dep (@all_deps_for_module) 702 { 703 my $res_list = $module_resources_win32{$dep}; 704 next unless $res_list; 705 $o_file_list .= ' '.join(' ', 706 map {'$(OUTBASE)/'.$dep."/$_"} @$res_list); 707 } 708 } 709 655 710 # stuff to make the final target... 656 711 if($target_is_library)
Note: See TracChangeset
for help on using the changeset viewer.
