- Fix --nomfc option which is currrently broken.
- Add --nodlls option for small apps.
This commit is contained in:
parent
1b32e5eca9
commit
3aa9e8c663
@ -233,6 +233,14 @@ my $TF_WRAPPER=2;
|
|||||||
# This target is an MFC-based target
|
# This target is an MFC-based target
|
||||||
my $TF_MFC=4;
|
my $TF_MFC=4;
|
||||||
|
|
||||||
|
##
|
||||||
|
# User has specified --nomfc option for this target or globally
|
||||||
|
my $TF_NOMFC=8;
|
||||||
|
|
||||||
|
##
|
||||||
|
# --nodlls option: Do not use standard DLL set
|
||||||
|
my $TF_NODLLS=16;
|
||||||
|
|
||||||
##
|
##
|
||||||
# Initialize a target:
|
# Initialize a target:
|
||||||
# - set the target type to TT_SETTINGS, i.e. no real target will
|
# - set the target type to TT_SETTINGS, i.e. no real target will
|
||||||
@ -436,23 +444,37 @@ sub source_set_options($$)
|
|||||||
push @{@$target[$T_LIBRARY_PATH]},$option;
|
push @{@$target[$T_LIBRARY_PATH]},$option;
|
||||||
} elsif ($option =~ /^-l/) {
|
} elsif ($option =~ /^-l/) {
|
||||||
push @{@$target[$T_LIBRARIES]},"$'";
|
push @{@$target[$T_LIBRARIES]},"$'";
|
||||||
} elsif (@$target[$T_TYPE] != $TT_DLL and $option =~ /^--wrap/) {
|
} elsif ($option =~ /^--wrap/) {
|
||||||
@$target[$T_FLAGS]|=$TF_WRAP;
|
|
||||||
} elsif (@$target[$T_TYPE] != $TT_DLL and $option =~ /^--nowrap/) {
|
|
||||||
@$target[$T_FLAGS]&=~$TF_WRAP;
|
|
||||||
} elsif ($option =~ /^--mfc/) {
|
|
||||||
@$target[$T_FLAGS]|=$TF_MFC;
|
|
||||||
if (@$target[$T_TYPE] != $TT_DLL) {
|
if (@$target[$T_TYPE] != $TT_DLL) {
|
||||||
@$target[$T_FLAGS]|=$TF_WRAP;
|
@$target[$T_FLAGS]|=$TF_WRAP;
|
||||||
|
} else {
|
||||||
|
print STDERR "warning: option --wrap is illegal for DLLs - ignoring";
|
||||||
|
};
|
||||||
|
} elsif ($option =~ /^--nowrap/) {
|
||||||
|
if (@$target[$T_TYPE] != $TT_DLL) {
|
||||||
|
@$target[$T_FLAGS]&=~$TF_WRAP;
|
||||||
|
} else {
|
||||||
|
print STDERR "warning: option --nowrap is illegal for DLLs - ignoring";
|
||||||
}
|
}
|
||||||
|
} elsif ($option =~ /^--mfc/) {
|
||||||
|
@$target[$T_FLAGS]|=$TF_MFC;
|
||||||
|
@$target[$T_FLAGS]&=~$TF_NOMFC;
|
||||||
} elsif ($option =~ /^--nomfc/) {
|
} elsif ($option =~ /^--nomfc/) {
|
||||||
@$target[$T_FLAGS]&=~$TF_MFC;
|
@$target[$T_FLAGS]&=~$TF_MFC;
|
||||||
@$target[$T_FLAGS]&=~($TF_MFC|$TF_WRAP);
|
@$target[$T_FLAGS]|=$TF_NOMFC;
|
||||||
|
} elsif ($option =~ /^--nodlls/) {
|
||||||
|
@$target[$T_FLAGS]|=$TF_NODLLS;
|
||||||
} else {
|
} else {
|
||||||
print STDERR "error: unknown option \"$option\"\n";
|
print STDERR "error: unknown option \"$option\"\n";
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (@$target[$T_TYPE] != $TT_DLL &&
|
||||||
|
@$target[$T_FLAGS] & $TF_MFC &&
|
||||||
|
!(@$target[$T_FLAGS] & $TF_WRAP)) {
|
||||||
|
print STDERR "info: option --mfc requires --wrap";
|
||||||
|
@$target[$T_FLAGS]|=$TF_WRAP;
|
||||||
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -543,7 +565,7 @@ sub source_scan_directory($$$$)
|
|||||||
} elsif ($dentry =~ /\.c$/i and $dentry !~ /\.spec\.c$/) {
|
} elsif ($dentry =~ /\.c$/i and $dentry !~ /\.spec\.c$/) {
|
||||||
push @sources_c,"$dentry";
|
push @sources_c,"$dentry";
|
||||||
} elsif ($dentry =~ /\.(cpp|cxx)$/i) {
|
} elsif ($dentry =~ /\.(cpp|cxx)$/i) {
|
||||||
if ($dentry =~ /^stdafx.cpp$/i) {
|
if ($dentry =~ /^stdafx.cpp$/i && !(@$project_settings[$T_FLAGS] & $TF_NOMFC)) {
|
||||||
push @sources_misc,"$dentry";
|
push @sources_misc,"$dentry";
|
||||||
@$project_settings[$T_FLAGS]|=$TF_MFC;
|
@$project_settings[$T_FLAGS]|=$TF_MFC;
|
||||||
} else {
|
} else {
|
||||||
@ -553,7 +575,7 @@ sub source_scan_directory($$$$)
|
|||||||
push @sources_rc,"$dentry";
|
push @sources_rc,"$dentry";
|
||||||
} elsif ($dentry =~ /\.(h|hxx|hpp|inl|rc2|dlg)$/i) {
|
} elsif ($dentry =~ /\.(h|hxx|hpp|inl|rc2|dlg)$/i) {
|
||||||
push @sources_misc,"$dentry";
|
push @sources_misc,"$dentry";
|
||||||
if ($dentry =~ /^stdafx.h$/i) {
|
if ($dentry =~ /^stdafx.h$/i && !(@$project_settings[$T_FLAGS] & $TF_NOMFC)) {
|
||||||
@$project_settings[$T_FLAGS]|=$TF_MFC;
|
@$project_settings[$T_FLAGS]|=$TF_MFC;
|
||||||
}
|
}
|
||||||
} elsif ($dentry =~ /\.dsp$/i) {
|
} elsif ($dentry =~ /\.dsp$/i) {
|
||||||
@ -779,7 +801,11 @@ sub source_scan_directory($$$$)
|
|||||||
# which we don't have in Wine. Also I add ntdll which seems
|
# which we don't have in Wine. Also I add ntdll which seems
|
||||||
# necessary for Winelib.
|
# necessary for Winelib.
|
||||||
my @std_dlls=qw(advapi32.dll comdlg32.dll gdi32.dll kernel32.dll ntdll.dll odbc32.dll ole32.dll oleaut32.dll shell32.dll user32.dll winspool.drv);
|
my @std_dlls=qw(advapi32.dll comdlg32.dll gdi32.dll kernel32.dll ntdll.dll odbc32.dll ole32.dll oleaut32.dll shell32.dll user32.dll winspool.drv);
|
||||||
|
if (@$target[$T_FLAGS] & $TF_NODLLS == 0) {
|
||||||
@$target[$T_DLLS]=\@std_dlls;
|
@$target[$T_DLLS]=\@std_dlls;
|
||||||
|
} else {
|
||||||
|
@$target[$T_DLLS]=[];
|
||||||
|
}
|
||||||
push @{@$project[$P_TARGETS]},$target;
|
push @{@$project[$P_TARGETS]},$target;
|
||||||
|
|
||||||
# Ask for target-specific options
|
# Ask for target-specific options
|
||||||
@ -2169,7 +2195,7 @@ sub usage()
|
|||||||
print STDERR "Usage: winemaker [--nobanner] [--backup|--nobackup] [--nosource-fix]\n";
|
print STDERR "Usage: winemaker [--nobanner] [--backup|--nobackup] [--nosource-fix]\n";
|
||||||
print STDERR " [--lower-none|--lower-all|--lower-uppercase]\n";
|
print STDERR " [--lower-none|--lower-all|--lower-uppercase]\n";
|
||||||
print STDERR " [--lower-include|--nolower-include]\n";
|
print STDERR " [--lower-include|--nolower-include]\n";
|
||||||
print STDERR " [--guiexe|--windows|--cuiexe|--console|--dll]\n";
|
print STDERR " [--guiexe|--windows|--cuiexe|--console|--dll|--nodlls]\n";
|
||||||
print STDERR " [--wrap|--nowrap] [--mfc|--nomfc]\n";
|
print STDERR " [--wrap|--nowrap] [--mfc|--nomfc]\n";
|
||||||
print STDERR " [-Dmacro[=defn]] [-Idir] [-Pdir] [-idll] [-Ldir] [-llibrary]\n";
|
print STDERR " [-Dmacro[=defn]] [-Idir] [-Pdir] [-idll] [-Ldir] [-llibrary]\n";
|
||||||
print STDERR " [--interactive] [--single-target name]\n";
|
print STDERR " [--interactive] [--single-target name]\n";
|
||||||
@ -2182,9 +2208,6 @@ sub usage()
|
|||||||
exit (2);
|
exit (2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
project_init(\@main_project,"");
|
|
||||||
|
|
||||||
while (@ARGV>0) {
|
while (@ARGV>0) {
|
||||||
my $arg=shift @ARGV;
|
my $arg=shift @ARGV;
|
||||||
# General options
|
# General options
|
||||||
@ -2245,11 +2268,13 @@ while (@ARGV>0) {
|
|||||||
$opt_flags&=~$TF_WRAP;
|
$opt_flags&=~$TF_WRAP;
|
||||||
} elsif ($arg eq "--mfc") {
|
} elsif ($arg eq "--mfc") {
|
||||||
$opt_flags|=$TF_MFC;
|
$opt_flags|=$TF_MFC;
|
||||||
$opt_flags|=$TF_MFC|$TF_WRAP;
|
|
||||||
$needs_mfc=1;
|
$needs_mfc=1;
|
||||||
} elsif ($arg eq "--nomfc") {
|
} elsif ($arg eq "--nomfc") {
|
||||||
$opt_flags&=~($TF_MFC|$TF_WRAP);
|
$opt_flags&=~$TF_MFC;
|
||||||
|
$opt_flags|=$TF_NOMFC;
|
||||||
$needs_mfc=0;
|
$needs_mfc=0;
|
||||||
|
} elsif ($arg eq "--nodlls") {
|
||||||
|
$opt_flags|=$TF_NODLLS;
|
||||||
|
|
||||||
# Catch errors
|
# Catch errors
|
||||||
} else {
|
} else {
|
||||||
@ -2264,6 +2289,11 @@ while (@ARGV>0) {
|
|||||||
usage();
|
usage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($opt_flags & $TF_MFC && $opt_target_type != $TT_DLL) {
|
||||||
|
print STDERR "info: option --mfc requires --wrap\n";
|
||||||
|
$opt_flags |= $TF_WRAP;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!defined $opt_work_dir) {
|
if (!defined $opt_work_dir) {
|
||||||
@ -2279,6 +2309,8 @@ if ($opt_no_banner == 0) {
|
|||||||
print_banner();
|
print_banner();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
project_init(\@main_project,"");
|
||||||
|
|
||||||
# Fix the file and directory names
|
# Fix the file and directory names
|
||||||
fix_file_and_directory_names(".");
|
fix_file_and_directory_names(".");
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ winemaker \- generate a build infrastructure for compiling Windows programs on U
|
|||||||
]
|
]
|
||||||
.br
|
.br
|
||||||
[
|
[
|
||||||
.IR "--guiexe " "| " "--windows " "| " "--cuiexe " "| " "--console " "| " "--dll "
|
.IR "--guiexe " "| " "--windows " "| " "--cuiexe " "| " "--console " "| " "--dll " "| " "--nodlls "
|
||||||
]
|
]
|
||||||
.br
|
.br
|
||||||
[
|
[
|
||||||
@ -121,6 +121,14 @@ This option tells winemaker that whenever it finds a target of unknown type,
|
|||||||
i.e. for which it does not know whether it is an executable or a library,
|
i.e. for which it does not know whether it is an executable or a library,
|
||||||
it should assume it is a library.
|
it should assume it is a library.
|
||||||
.TP
|
.TP
|
||||||
|
.I --nodlls
|
||||||
|
This option tells winemaker not to use the standard set of winelib libraries
|
||||||
|
for imports. That is, any DLL your code uses must be explicitly passed to
|
||||||
|
winemaker with -i options.
|
||||||
|
The standard set of libraries is: advapi32.dll, comdlg32.dll, gdi32.dll,
|
||||||
|
kernel32.dll, odbc32.dll, ole32.dll, oleaut32.dll, shell32.dll, user32.dll,
|
||||||
|
winspool.drv.
|
||||||
|
.TP
|
||||||
.I --wrap
|
.I --wrap
|
||||||
Specifies that executable targets should be built as libraries and a small
|
Specifies that executable targets should be built as libraries and a small
|
||||||
executable wrapper generated for them. This technique is sometimes required
|
executable wrapper generated for them. This technique is sometimes required
|
||||||
@ -137,7 +145,9 @@ library paths accordingly, links the target with the MFC library and
|
|||||||
generates wrappers for these targets that are executables.
|
generates wrappers for these targets that are executables.
|
||||||
.TP
|
.TP
|
||||||
.I --nomfc
|
.I --nomfc
|
||||||
Specifies that targets are not MFC-based. This is the default.
|
Specifies that targets are not MFC-based. This option disables use of MFC libraries
|
||||||
|
even if winemaker encounters files "stdafx.cpp" or "stdafx.h" that would cause it
|
||||||
|
to enable MFC automatically if neither --nomfc nor --mfc was specified.
|
||||||
.TP
|
.TP
|
||||||
.I -Dmacro[=defn]
|
.I -Dmacro[=defn]
|
||||||
Adds the specified macro definition to the global list of macro definitions.
|
Adds the specified macro definition to the global list of macro definitions.
|
||||||
@ -149,8 +159,7 @@ Appends the specified directory to the global include path.
|
|||||||
Appends the specified directory to the global library path.
|
Appends the specified directory to the global library path.
|
||||||
.TP
|
.TP
|
||||||
.I -idll
|
.I -idll
|
||||||
Adds the Winelib library to the global list of Winelib libraries to import
|
Adds the Winelib library to the global list of Winelib libraries to import.
|
||||||
in the spec file.
|
|
||||||
.TP
|
.TP
|
||||||
.I -llibrary
|
.I -llibrary
|
||||||
Adds the specified library to the global list of libraries to link with.
|
Adds the specified library to the global list of libraries to link with.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user