mirror of
https://github.com/reactos/wine.git
synced 2024-11-25 04:39:45 +00:00
Add prototypes to all functions.
Make winemaker work in 'strict' mode.
This commit is contained in:
parent
67eaffd873
commit
e3d26a3e3c
144
tools/winemaker
144
tools/winemaker
@ -1,6 +1,7 @@
|
||||
#!/usr/bin/perl -w
|
||||
use strict;
|
||||
|
||||
# Copyright 2000 Francois Gouget for CodeWeavers
|
||||
# Copyright 2000-2002 Francois Gouget for CodeWeavers
|
||||
# fgouget@codeweavers.com
|
||||
#
|
||||
# This library is free software; you can redistribute it and/or
|
||||
@ -236,7 +237,7 @@ my $TF_MFC=4;
|
||||
# Initialize a target:
|
||||
# - set the target type to TT_SETTINGS, i.e. no real target will
|
||||
# be generated.
|
||||
sub target_init
|
||||
sub target_init($)
|
||||
{
|
||||
my $target=$_[0];
|
||||
|
||||
@ -256,7 +257,7 @@ sub target_init
|
||||
@$target[$T_DEPENDS]=[];
|
||||
}
|
||||
|
||||
sub get_default_init
|
||||
sub get_default_init($)
|
||||
{
|
||||
my $type=$_[0];
|
||||
if ($type == $TT_GUIEXE) {
|
||||
@ -303,7 +304,7 @@ my $P_TARGETS=2;
|
||||
# - set the project's path
|
||||
# - initialize the target list
|
||||
# - create a default target (will be removed later if unnecessary)
|
||||
sub project_init
|
||||
sub project_init($$)
|
||||
{
|
||||
my $project=$_[0];
|
||||
my $path=$_[1];
|
||||
@ -363,7 +364,7 @@ my $needs_mfc=0;
|
||||
##
|
||||
# Cleans up a name to make it an acceptable Makefile
|
||||
# variable name.
|
||||
sub canonize
|
||||
sub canonize($)
|
||||
{
|
||||
my $name=$_[0];
|
||||
|
||||
@ -375,7 +376,7 @@ sub canonize
|
||||
# Returns true is the specified pathname is absolute.
|
||||
# Note: pathnames that start with a variable '$' or
|
||||
# '~' are considered absolute.
|
||||
sub is_absolute
|
||||
sub is_absolute($)
|
||||
{
|
||||
my $path=$_[0];
|
||||
|
||||
@ -384,7 +385,7 @@ sub is_absolute
|
||||
|
||||
##
|
||||
# Performs a binary search looking for the specified item
|
||||
sub bsearch
|
||||
sub bsearch($$)
|
||||
{
|
||||
my $array=$_[0];
|
||||
my $item=$_[1];
|
||||
@ -416,13 +417,13 @@ sub bsearch
|
||||
# Allows the user to specify makefile and target specific options
|
||||
# - target: the structure in which to store the results
|
||||
# - options: the string containing the options
|
||||
sub source_set_options
|
||||
sub source_set_options($$)
|
||||
{
|
||||
my $target=$_[0];
|
||||
my $options=$_[1];
|
||||
|
||||
#FIXME: we must deal with escaping of stuff and all
|
||||
foreach $option (split / /,$options) {
|
||||
foreach my $option (split / /,$options) {
|
||||
if (@$target[$T_TYPE] == $TT_SETTINGS and $option =~ /^-D/) {
|
||||
push @{@$target[$T_DEFINES]},$option;
|
||||
} elsif (@$target[$T_TYPE] == $TT_SETTINGS and $option =~ /^-I/) {
|
||||
@ -461,7 +462,8 @@ sub source_set_options
|
||||
# so if we find a project file and sources
|
||||
# - get a list of targets for this directory
|
||||
# - get the list of source files
|
||||
sub source_scan_directory
|
||||
sub source_scan_directory($$$$);
|
||||
sub source_scan_directory($$$$)
|
||||
{
|
||||
# a reference to the parent's project
|
||||
my $parent_project=$_[0];
|
||||
@ -506,7 +508,7 @@ sub source_scan_directory
|
||||
# First find out what this directory contains:
|
||||
# collect all sources, targets and subdirectories
|
||||
my $directory=get_directory_contents($path);
|
||||
foreach $dentry (@$directory) {
|
||||
foreach my $dentry (@$directory) {
|
||||
if ($dentry =~ /^\./) {
|
||||
next;
|
||||
}
|
||||
@ -516,7 +518,7 @@ sub source_scan_directory
|
||||
# These directories are often used to store the object files and the
|
||||
# resulting executable/library. They should not contain anything else.
|
||||
my @candidates=grep /\.(exe|dll)$/i, @{get_directory_contents("$fullentry")};
|
||||
foreach $candidate (@candidates) {
|
||||
foreach my $candidate (@candidates) {
|
||||
if ($candidate =~ s/\.exe$//i) {
|
||||
$targets{$candidate}=1;
|
||||
} elsif ($candidate =~ s/^(.*)\.dll$/lib$1.so/i) {
|
||||
@ -619,7 +621,7 @@ sub source_scan_directory
|
||||
} else {
|
||||
$prj_list=\@mak_files;
|
||||
}
|
||||
foreach $filename (@$prj_list) {
|
||||
foreach my $filename (@$prj_list) {
|
||||
$filename =~ s/\.(dsp|mak)$//i;
|
||||
if ($opt_target_type == $TT_DLL) {
|
||||
$filename = "lib$filename.so";
|
||||
@ -679,7 +681,7 @@ sub source_scan_directory
|
||||
return;
|
||||
} else {
|
||||
undef %targets;
|
||||
foreach $target (split /,/,$target_list) {
|
||||
foreach my $target (split /,/,$target_list) {
|
||||
$target =~ s+^\s*++;
|
||||
$target =~ s+\s*$++;
|
||||
# Also accept .exe and .dll as a courtesy
|
||||
@ -753,7 +755,7 @@ sub source_scan_directory
|
||||
my @local_dlls=();
|
||||
my @local_depends=();
|
||||
my @exe_list=();
|
||||
foreach $target_name (sort { $b cmp $a } keys %targets) {
|
||||
foreach my $target_name (sort { $b cmp $a } keys %targets) {
|
||||
# Create the target...
|
||||
my $basename;
|
||||
my $target=[];
|
||||
@ -841,25 +843,25 @@ sub source_scan_directory
|
||||
@$project_settings[$T_SOURCES_MISC]=[];
|
||||
@sources_misc=();
|
||||
} else {
|
||||
foreach $source (@sources_c) {
|
||||
foreach my $source (@sources_c) {
|
||||
if ($source =~ /^$basename/i) {
|
||||
push @{@$target[$T_SOURCES_C]},$source;
|
||||
$source="";
|
||||
}
|
||||
}
|
||||
foreach $source (@sources_cxx) {
|
||||
foreach my $source (@sources_cxx) {
|
||||
if ($source =~ /^$basename/i) {
|
||||
push @{@$target[$T_SOURCES_CXX]},$source;
|
||||
$source="";
|
||||
}
|
||||
}
|
||||
foreach $source (@sources_rc) {
|
||||
foreach my $source (@sources_rc) {
|
||||
if ($source =~ /^$basename/i) {
|
||||
push @{@$target[$T_SOURCES_RC]},$source;
|
||||
$source="";
|
||||
}
|
||||
}
|
||||
foreach $source (@sources_misc) {
|
||||
foreach my $source (@sources_misc) {
|
||||
if ($source =~ /^$basename/i) {
|
||||
push @{@$target[$T_SOURCES_MISC]},$source;
|
||||
$source="";
|
||||
@ -880,25 +882,25 @@ sub source_scan_directory
|
||||
}
|
||||
# The sources that did not match, if any, go to the extra
|
||||
# source list of the project settings
|
||||
foreach $source (@sources_c) {
|
||||
foreach my $source (@sources_c) {
|
||||
if ($source ne "") {
|
||||
push @{@$project_settings[$T_SOURCES_C]},$source;
|
||||
}
|
||||
}
|
||||
@$project_settings[$T_SOURCES_C]=[sort @{@$project_settings[$T_SOURCES_C]}];
|
||||
foreach $source (@sources_cxx) {
|
||||
foreach my $source (@sources_cxx) {
|
||||
if ($source ne "") {
|
||||
push @{@$project_settings[$T_SOURCES_CXX]},$source;
|
||||
}
|
||||
}
|
||||
@$project_settings[$T_SOURCES_CXX]=[sort @{@$project_settings[$T_SOURCES_CXX]}];
|
||||
foreach $source (@sources_rc) {
|
||||
foreach my $source (@sources_rc) {
|
||||
if ($source ne "") {
|
||||
push @{@$project_settings[$T_SOURCES_RC]},$source;
|
||||
}
|
||||
}
|
||||
@$project_settings[$T_SOURCES_RC]=[sort @{@$project_settings[$T_SOURCES_RC]}];
|
||||
foreach $source (@sources_misc) {
|
||||
foreach my $source (@sources_misc) {
|
||||
if ($source ne "") {
|
||||
push @{@$project_settings[$T_SOURCES_MISC]},$source;
|
||||
}
|
||||
@ -909,7 +911,7 @@ sub source_scan_directory
|
||||
# this directory, then the programs should be linked with all
|
||||
# the libraries
|
||||
if (@local_dlls > 0 and @exe_list > 0) {
|
||||
foreach $target (@exe_list) {
|
||||
foreach my $target (@exe_list) {
|
||||
push @{@$target[$T_DLL_PATH]},"-L.";
|
||||
push @{@$target[$T_DLLS]},map { "$_.dll" } @local_dlls;
|
||||
# Also link in the Unix sense since none of the functions
|
||||
@ -923,7 +925,7 @@ sub source_scan_directory
|
||||
|
||||
##
|
||||
# Scan the source directories in search of things to build
|
||||
sub source_scan
|
||||
sub source_scan()
|
||||
{
|
||||
# If there's a single target then this is going to be the default target
|
||||
if (defined $opt_single_target) {
|
||||
@ -972,10 +974,10 @@ sub source_scan
|
||||
#
|
||||
#####
|
||||
|
||||
sub postprocess_targets
|
||||
sub postprocess_targets()
|
||||
{
|
||||
foreach $project (@projects) {
|
||||
foreach $target (@{@$project[$P_TARGETS]}) {
|
||||
foreach my $project (@projects) {
|
||||
foreach my $target (@{@$project[$P_TARGETS]}) {
|
||||
if ((@$target[$T_FLAGS] & $TF_WRAP) != 0) {
|
||||
my $wrapper=[];
|
||||
target_init($wrapper);
|
||||
@ -1016,12 +1018,13 @@ sub postprocess_targets
|
||||
# - they have the case desired by the user
|
||||
# - their extension is of the appropriate case
|
||||
# - they don't contain annoying characters like ' ', '$', '#', ...
|
||||
sub fix_file_and_directory_names
|
||||
sub fix_file_and_directory_names($);
|
||||
sub fix_file_and_directory_names($)
|
||||
{
|
||||
my $dirname=$_[0];
|
||||
|
||||
if (opendir(DIRECTORY, "$dirname")) {
|
||||
foreach $dentry (readdir DIRECTORY) {
|
||||
foreach my $dentry (readdir DIRECTORY) {
|
||||
if ($dentry =~ /^\./ or $dentry eq "CVS") {
|
||||
next;
|
||||
}
|
||||
@ -1097,7 +1100,7 @@ my %directories;
|
||||
# We either get it from the directories hashtable which acts as a
|
||||
# cache, or use opendir, readdir, closedir and store the result
|
||||
# in the hashtable.
|
||||
sub get_directory_contents
|
||||
sub get_directory_contents($)
|
||||
{
|
||||
my $dirname=$_[0];
|
||||
my $directory;
|
||||
@ -1135,7 +1138,7 @@ sub get_directory_contents
|
||||
# Try to find a file for the specified filename. The attempt is
|
||||
# case-insensitive which is why it's not trivial. If a match is
|
||||
# found then we return the pathname with the correct case.
|
||||
sub search_from
|
||||
sub search_from($$)
|
||||
{
|
||||
my $dirname=$_[0];
|
||||
my $path=$_[1];
|
||||
@ -1150,7 +1153,7 @@ sub search_from
|
||||
$dirname.="/";
|
||||
}
|
||||
|
||||
foreach $component (@$path) {
|
||||
foreach my $component (@$path) {
|
||||
#print " looking for $component in \"$dirname\"\n";
|
||||
if ($component eq ".") {
|
||||
# Pass it as is
|
||||
@ -1170,7 +1173,7 @@ sub search_from
|
||||
|
||||
my $directory=get_directory_contents $dirname;
|
||||
my $found;
|
||||
foreach $dentry (@$directory) {
|
||||
foreach my $dentry (@$directory) {
|
||||
if ($dentry =~ /^$component$/i or
|
||||
(defined $renamed and $dentry =~ /^$renamed$/i)
|
||||
) {
|
||||
@ -1200,7 +1203,7 @@ sub search_from
|
||||
# $dirname is the directory of the file containing the '#include' directive
|
||||
# if '"' was used, it is an empty string otherwise
|
||||
# $project and $target specify part of the include path
|
||||
sub get_real_include_name
|
||||
sub get_real_include_name($$$$$)
|
||||
{
|
||||
my $line=$_[0];
|
||||
my $filename=$_[1];
|
||||
@ -1237,7 +1240,7 @@ sub get_real_include_name
|
||||
}
|
||||
}
|
||||
my $project_settings=@$project[$P_SETTINGS];
|
||||
foreach $include (@{@$target[$T_INCLUDE_PATH]}, @{@$project_settings[$T_INCLUDE_PATH]}) {
|
||||
foreach my $include (@{@$target[$T_INCLUDE_PATH]}, @{@$project_settings[$T_INCLUDE_PATH]}) {
|
||||
my $dirname=$include;
|
||||
$dirname=~ s+^-I++;
|
||||
if (!is_absolute($dirname)) {
|
||||
@ -1254,7 +1257,7 @@ sub get_real_include_name
|
||||
}
|
||||
my $dotdotpath=@$project[$P_PATH];
|
||||
$dotdotpath =~ s/[^\/]+/../g;
|
||||
foreach $include (@{$global_settings[$T_INCLUDE_PATH]}) {
|
||||
foreach my $include (@{$global_settings[$T_INCLUDE_PATH]}) {
|
||||
my $dirname=$include;
|
||||
$dirname=~ s+^-I++;
|
||||
$dirname=~ s+^\$\(TOPSRCDIR\)\/++;
|
||||
@ -1274,7 +1277,7 @@ sub get_real_include_name
|
||||
return $filename;
|
||||
}
|
||||
|
||||
sub print_pack
|
||||
sub print_pack($$$)
|
||||
{
|
||||
my $indent=$_[0];
|
||||
my $size=$_[1];
|
||||
@ -1297,7 +1300,7 @@ sub print_pack
|
||||
# include path is used.
|
||||
# Also note that the include path is relative to the directory in which the
|
||||
# compiler is run, i.e. that of the project, not to that of the file.
|
||||
sub fix_file
|
||||
sub fix_file($$$)
|
||||
{
|
||||
my $filename=$_[0];
|
||||
my $project=$_[1];
|
||||
@ -1563,15 +1566,15 @@ sub fix_file
|
||||
##
|
||||
# Analyzes each source file in turn to find and correct issues
|
||||
# that would cause it not to compile.
|
||||
sub fix_source
|
||||
sub fix_source()
|
||||
{
|
||||
print "Fixing the source files...\n";
|
||||
foreach $project (@projects) {
|
||||
foreach $target (@$project[$P_SETTINGS],@{@$project[$P_TARGETS]}) {
|
||||
foreach my $project (@projects) {
|
||||
foreach my $target (@$project[$P_SETTINGS],@{@$project[$P_TARGETS]}) {
|
||||
if (@$target[$T_FLAGS] & $TF_WRAPPER) {
|
||||
next;
|
||||
}
|
||||
foreach $source (@{@$target[$T_SOURCES_C]}, @{@$target[$T_SOURCES_CXX]}, @{@$target[$T_SOURCES_RC]}, @{@$target[$T_SOURCES_MISC]}) {
|
||||
foreach my $source (@{@$target[$T_SOURCES_C]}, @{@$target[$T_SOURCES_CXX]}, @{@$target[$T_SOURCES_RC]}, @{@$target[$T_SOURCES_MISC]}) {
|
||||
fix_file($source,$project,$target);
|
||||
}
|
||||
}
|
||||
@ -1588,7 +1591,7 @@ sub fix_source
|
||||
|
||||
##
|
||||
# Generates a target's .spec file
|
||||
sub generate_spec_file
|
||||
sub generate_spec_file($$$)
|
||||
{
|
||||
if ($opt_no_generated_specs) {
|
||||
return;
|
||||
@ -1636,7 +1639,7 @@ sub generate_spec_file
|
||||
|
||||
##
|
||||
# Generates a target's wrapper file
|
||||
sub generate_wrapper_file
|
||||
sub generate_wrapper_file($$)
|
||||
{
|
||||
my $path=$_[0];
|
||||
my $target=$_[1];
|
||||
@ -1647,15 +1650,15 @@ sub generate_wrapper_file
|
||||
}
|
||||
|
||||
if (!open(FILEO,">$path@$target[$T_NAME]_wrapper.c")) {
|
||||
print STDERR "error: unable to open \"$path$basename.c\" for writing:\n";
|
||||
print STDERR "error: unable to open \"$path@$target[$T_NAME]_wrapper.c\" for writing:\n";
|
||||
print STDERR " $!\n";
|
||||
return;
|
||||
}
|
||||
my $app_name="\"@$target[$T_NAME]\"";
|
||||
my $app_type=(@$target[$T_TYPE]==$TT_GUIEXE?"GUIEXE":"CUIEXE");
|
||||
my $app_init=(@$target[$T_TYPE]==$TT_GUIEXE?"\"WinMain\"":"\"main\"");
|
||||
my $app_mfc=(@$target[$T_FLAGS] & $TF_MFC?"\"mfc\"":NULL);
|
||||
foreach $line (@{$templates{"wrapper.c"}}) {
|
||||
my $app_mfc=(@$target[$T_FLAGS] & $TF_MFC?"\"mfc\"":"NULL");
|
||||
foreach my $line (@{$templates{"wrapper.c"}}) {
|
||||
my $l=$line;
|
||||
$l =~ s/\#\#WINEMAKER_APP_NAME\#\#/$app_name/;
|
||||
$l =~ s/\#\#WINEMAKER_APP_TYPE\#\#/$app_type/;
|
||||
@ -1669,7 +1672,7 @@ sub generate_wrapper_file
|
||||
##
|
||||
# A convenience function to generate all the lists (defines,
|
||||
# C sources, C++ source, etc.) in the Makefile
|
||||
sub generate_list
|
||||
sub generate_list($$$;$)
|
||||
{
|
||||
my $name=$_[0];
|
||||
my $last=$_[1];
|
||||
@ -1681,7 +1684,7 @@ sub generate_list
|
||||
printf FILEO "%-22s=",$name;
|
||||
}
|
||||
if (defined $list) {
|
||||
foreach $item (@$list) {
|
||||
foreach my $item (@$list) {
|
||||
my $value;
|
||||
if (defined $data) {
|
||||
$value=&$data($item);
|
||||
@ -1705,7 +1708,7 @@ sub generate_list
|
||||
|
||||
##
|
||||
# Generates a project's Makefile.in and all the target files
|
||||
sub generate_project_files
|
||||
sub generate_project_files($)
|
||||
{
|
||||
my $project=$_[0];
|
||||
my $project_settings=@$project[$P_SETTINGS];
|
||||
@ -1713,7 +1716,7 @@ sub generate_project_files
|
||||
my @exe_list=();
|
||||
|
||||
# Then sort the targets and separate the libraries from the programs
|
||||
foreach $target (sort { @$a[$T_NAME] cmp @$b[$T_NAME] } @{@$project[$P_TARGETS]}) {
|
||||
foreach my $target (sort { @$a[$T_NAME] cmp @$b[$T_NAME] } @{@$project[$P_TARGETS]}) {
|
||||
if (@$target[$T_TYPE] == $TT_DLL) {
|
||||
push @dll_list,$target;
|
||||
} else {
|
||||
@ -1765,6 +1768,9 @@ sub generate_project_files
|
||||
|
||||
print FILEO "### Global settings\n\n";
|
||||
# Make it so that the project-wide settings override the global settings
|
||||
# FIXME: We should be setting no_extra for each list but this does not
|
||||
# really matter since global settings will very soon move to Make.rules
|
||||
my $no_extra;
|
||||
generate_list("DEFINES",0,@$project_settings[$T_DEFINES]);
|
||||
generate_list("",1,$global_settings[$T_DEFINES]);
|
||||
generate_list("INCLUDE_PATH",$no_extra,@$project_settings[$T_INCLUDE_PATH]);
|
||||
@ -1798,7 +1804,7 @@ sub generate_project_files
|
||||
my $extra_source_count=@{@$project_settings[$T_SOURCES_C]}+
|
||||
@{@$project_settings[$T_SOURCES_CXX]}+
|
||||
@{@$project_settings[$T_SOURCES_RC]};
|
||||
my $no_extra=($extra_source_count == 0);
|
||||
$no_extra=($extra_source_count == 0);
|
||||
if (!$no_extra) {
|
||||
print FILEO "### Extra source lists\n\n";
|
||||
generate_list("EXTRA_C_SRCS",1,@$project_settings[$T_SOURCES_C]);
|
||||
@ -1810,7 +1816,7 @@ sub generate_project_files
|
||||
}
|
||||
|
||||
# Iterate over all the targets...
|
||||
foreach $target (@{@$project[$P_TARGETS]}) {
|
||||
foreach my $target (@{@$project[$P_TARGETS]}) {
|
||||
print FILEO "### @$target[$T_NAME] sources and settings\n\n";
|
||||
my $canon=canonize("@$target[$T_NAME]");
|
||||
$canon =~ s+_so$++;
|
||||
@ -1926,7 +1932,7 @@ sub generate_project_files
|
||||
|
||||
if (@{@$project[$P_TARGETS]} > 0) {
|
||||
print FILEO "### Target specific build rules\n\n";
|
||||
foreach $target (@{@$project[$P_TARGETS]}) {
|
||||
foreach my $target (@{@$project[$P_TARGETS]}) {
|
||||
my $canon=canonize("@$target[$T_NAME]");
|
||||
my $mode;
|
||||
|
||||
@ -1961,7 +1967,7 @@ sub generate_project_files
|
||||
}
|
||||
close(FILEO);
|
||||
|
||||
foreach $target (@{@$project[$P_TARGETS]}) {
|
||||
foreach my $target (@{@$project[$P_TARGETS]}) {
|
||||
generate_spec_file(@$project[$P_PATH],$target,$project_settings);
|
||||
if (@$target[$T_FLAGS] & $TF_WRAPPER) {
|
||||
generate_wrapper_file(@$project[$P_PATH],$target);
|
||||
@ -1972,7 +1978,7 @@ sub generate_project_files
|
||||
##
|
||||
# Perform the replacements in the template configure files
|
||||
# Return 1 for success, 0 for failure
|
||||
sub generate_configure
|
||||
sub generate_configure($$)
|
||||
{
|
||||
my $filename=$_[0];
|
||||
my $a_source_file=$_[1];
|
||||
@ -1989,9 +1995,9 @@ sub generate_configure
|
||||
print STDERR " $!\n";
|
||||
return 0;
|
||||
}
|
||||
foreach $line (@{$templates{$filename}}) {
|
||||
foreach my $line (@{$templates{$filename}}) {
|
||||
if ($line =~ /^\#\#WINEMAKER_PROJECTS\#\#$/) {
|
||||
foreach $project (@projects) {
|
||||
foreach my $project (@projects) {
|
||||
print FILEO "@$project[$P_PATH]Makefile\n";
|
||||
}
|
||||
} else {
|
||||
@ -2004,7 +2010,7 @@ sub generate_configure
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub generate_generic
|
||||
sub generate_generic($)
|
||||
{
|
||||
my $filename=$_[0];
|
||||
|
||||
@ -2017,7 +2023,7 @@ sub generate_generic
|
||||
print STDERR " $!\n";
|
||||
return;
|
||||
}
|
||||
foreach $line (@{$templates{$filename}}) {
|
||||
foreach my $line (@{$templates{$filename}}) {
|
||||
print FILEO $line;
|
||||
}
|
||||
close(FILEO);
|
||||
@ -2029,15 +2035,15 @@ sub generate_generic
|
||||
# configure.in
|
||||
# Make.rules.in
|
||||
# wineapploader.in
|
||||
sub generate_global_files
|
||||
sub generate_global_files()
|
||||
{
|
||||
generate_generic("Make.rules.in");
|
||||
generate_generic("wineapploader.in");
|
||||
|
||||
# Get the name of a source file for configure.in
|
||||
my $a_source_file;
|
||||
search_a_file: foreach $project (@projects) {
|
||||
foreach $target (@{@$project[$P_TARGETS]}, @$project[$P_SETTINGS]) {
|
||||
search_a_file: foreach my $project (@projects) {
|
||||
foreach my $target (@{@$project[$P_TARGETS]}, @$project[$P_SETTINGS]) {
|
||||
$a_source_file=@{@$target[$T_SOURCES_C]}[0];
|
||||
if (!defined $a_source_file) {
|
||||
$a_source_file=@{@$target[$T_SOURCES_CXX]}[0];
|
||||
@ -2073,7 +2079,7 @@ sub generate_global_files
|
||||
|
||||
##
|
||||
#
|
||||
sub generate_read_templates
|
||||
sub generate_read_templates()
|
||||
{
|
||||
my $file;
|
||||
|
||||
@ -2096,13 +2102,13 @@ sub generate_read_templates
|
||||
##
|
||||
# This is where we finally generate files. In fact this method does not
|
||||
# do anything itself but calls the methods that do the actual work.
|
||||
sub generate
|
||||
sub generate()
|
||||
{
|
||||
print "Generating project files...\n";
|
||||
generate_read_templates();
|
||||
generate_global_files();
|
||||
|
||||
foreach $project (@projects) {
|
||||
foreach my $project (@projects) {
|
||||
my $path=@$project[$P_PATH];
|
||||
if ($path eq "") {
|
||||
$path=".";
|
||||
@ -2146,13 +2152,13 @@ $opt_no_banner=0;
|
||||
#
|
||||
#####
|
||||
|
||||
sub print_banner
|
||||
sub print_banner()
|
||||
{
|
||||
print "Winemaker $version\n";
|
||||
print "Copyright 2000 Francois Gouget <fgouget\@codeweavers.com> for CodeWeavers\n";
|
||||
}
|
||||
|
||||
sub usage
|
||||
sub usage()
|
||||
{
|
||||
print_banner();
|
||||
print STDERR "Usage: winemaker [--nobanner] [--backup|--nobackup] [--nosource-fix]\n";
|
||||
|
Loading…
Reference in New Issue
Block a user