Added winebuild -e option to specify the entry point and removed the

'init' spec file directive.
Winebuild long options now use a more standard double dash format
(older format still supported for backwards compatibility).
This commit is contained in:
Alexandre Julliard 2002-11-06 20:02:59 +00:00
parent eb4db9471f
commit 910851a20e
16 changed files with 96 additions and 97 deletions

View file

@ -126,10 +126,10 @@ LINTS = $(C_SRCS:.c=.ln)
$(WINDRES) -i $< -o $@
.spec.spec.c:
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ -M $(MODULE) -spec $<
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ -M $(MODULE) --spec $<
.spec.spec.def:
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ -def $<
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ --def $<
.c.ln:
$(LINT) -c $(ALLLINTFLAGS) $< || ( $(RM) $@ && exit 1 )
@ -152,7 +152,7 @@ filter:
# Rule for main module debug channels
$(MODULE).dbg.c: $(C_SRCS) $(C_SRCS16) $(WINEBUILD)
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ -debug -C$(SRCDIR) $(C_SRCS) $(C_SRCS16)
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ --debug -C$(SRCDIR) $(C_SRCS) $(C_SRCS16)
# Rule to rebuild the tools

View file

@ -25,7 +25,7 @@ all: $(MODULE)$(DLLEXT)
# Rules for .so files
$(MAINSPEC).c: $(MAINSPEC) $(RC_SRCS:.rc=.res) $(SYMBOLFILE) $(WINEBUILD)
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ -spec $(SRCDIR)/$(MAINSPEC) $(RC_SRCS:%.rc=-res %.res) $(SYMBOLFILE) -L$(DLLDIR) $(DELAYIMPORTS:%=-dl%) $(IMPORTS:%=-l%)
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ --spec $(SRCDIR)/$(MAINSPEC) $(RC_SRCS:%.rc=-r %.res) $(SYMBOLFILE) $(DLLMAIN:%=-e %) -L$(DLLDIR) $(DELAYIMPORTS:%=-d%) $(IMPORTS:%=-l%)
$(MODULE).so: $(MAINSPEC).o $(ALL_OBJS) Makefile.in
$(LDSHARED) $(LDDLLFLAGS) $(MAINSPEC).o $(ALL_OBJS) -o $@ -L$(DLLDIR) $(LDIMPORTS:%=-l%) $(ALL_LIBS)
@ -37,12 +37,12 @@ $(MODULE).tmp.o: $(ALL_OBJS) Makefile.in
# Rule for 16-bit glue
$(MODULE).glue.c: $(C_SRCS) $(C_SRCS16) $(WINEBUILD)
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ -glue -C$(SRCDIR) $(C_SRCS) $(C_SRCS16)
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ --glue -C$(SRCDIR) $(C_SRCS) $(C_SRCS16)
# Rules for .dll files
$(MODULE): $(RCOBJS) $(OBJS) $(MODULE).dbg.o $(SPEC_DEF) Makefile.in
$(DLLWRAP) $(DLLWRAPFLAGS) --def $(SPEC_DEF) --implib lib$(MODULE:.dll=.a) -o $@ $(RCOBJS) $(OBJS) $(MODULE).dbg.o -L$(DLLDIR) $(DELAYIMPORTS:%=-l%) $(IMPORTS:%=-l%) $(ALL_LIBS)
$(DLLWRAP) $(DLLWRAPFLAGS) --def $(SPEC_DEF) --implib lib$(MODULE:.dll=.a) -o $@ $(RCOBJS) $(OBJS) $(MODULE).dbg.o $(DLLMAIN:%=--entry %) -L$(DLLDIR) $(DELAYIMPORTS:%=-l%) $(IMPORTS:%=-l%) $(ALL_LIBS)
$(SPEC_DEF): $(WINEBUILD)

View file

@ -30,7 +30,7 @@ CROSSOBJS = $(C_SRCS:.c=.cross.o) $(TESTLIST:.c=.cross.o)
# Rule for main module spec file
$(MODULE).spec.c: $(RC_SRCS:.rc=.res) $(OBJS) $(WINEBUILD)
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ -exe $(MODULE) -mcui $(RC_SRCS:%.rc=-res %.res) $(OBJS) -L$(DLLDIR) $(DELAYIMPORTS:%=-dl%) $(IMPORTS:%=-l%)
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ -exe $(MODULE) -mcui $(RC_SRCS:%.rc=-r %.res) $(OBJS) -L$(DLLDIR) $(DELAYIMPORTS:%=-d%) $(IMPORTS:%=-l%)
# Rules for .so main module

View file

@ -7,6 +7,7 @@ MODULE = kernel32.dll
IMPORTS = ntdll
ALTNAMES = krnl386.exe comm.dll stress.dll system.dll toolhelp.dll windebug.dll win87em.dll wprocs.dll
LDIMPORTS = ntdll.dll
DLLMAIN = MAIN_KernelInit
C_SRCS = \
$(TOPOBJDIR)/ole/ole2nls.c \
@ -51,7 +52,7 @@ kernel.res: $(MC_SRCS:.mc=.mc.rc)
# Special rules for 16-bit resource and spec files
krnl386.exe.spec.c: krnl386.exe.spec version16.res $(WINEBUILD)
$(LDPATH) $(WINEBUILD) $(DEFS) -N kernel -o $@ -M $(MODULE) -spec $(SRCDIR)/krnl386.exe.spec
$(LDPATH) $(WINEBUILD) $(DEFS) -N kernel -o $@ -M $(MODULE) --spec $(SRCDIR)/krnl386.exe.spec
version16.res: version16.rc
$(LDPATH) $(WRC) $(DIVINCL) -o $@ -w16 -m -r $(SRCDIR)/version16.rc

View file

@ -1,5 +1,3 @@
init MAIN_KernelInit
# Functions exported by the Win95 kernel32.dll
# (these need to have these exact ordinals, for some win95 dlls
# import kernel32.dll by ordinal)

View file

@ -138,10 +138,10 @@ EXTRASUBDIRS = \
@MAKE_DLL_RULES@
relay16.s: $(WINEBUILD)
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ -relay16
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ --relay16
relay32.s: $(WINEBUILD)
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ -relay32
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ --relay32
clean::
$(RM) $(ASM_SRCS)

View file

@ -7,6 +7,7 @@ MODULE = user32.dll
IMPORTS = gdi32 advapi32 kernel32
ALTNAMES = user.exe keyboard.dll ddeml.dll display.dll mouse.dll
EXTRALIBS = $(LIBUNICODE)
DLLMAIN = UserClientDllInitialize
LDDLLFLAGS = @LDDLLFLAGS@
SYMBOLFILE = $(MODULE).tmp.o
@ -104,7 +105,7 @@ EXTRASUBDIRS = \
# Special rules for 16-bit resource and spec files
user.exe.spec.c: user.exe.spec resources/version16.res
$(LDPATH) $(WINEBUILD) $(DEFS) -H 65520 -o $@ -M $(MODULE) -spec $(SRCDIR)/user.exe.spec
$(LDPATH) $(WINEBUILD) $(DEFS) -H 65520 -o $@ -M $(MODULE) --spec $(SRCDIR)/user.exe.spec
resources/display.res: resources/display.rc
$(LDPATH) $(WRC) $(DIVINCL) -o $@ -w16 -m -r $(SRCDIR)/resources/display.rc

View file

@ -1,5 +1,3 @@
init UserClientDllInitialize
@ stdcall ActivateKeyboardLayout(long long) ActivateKeyboardLayout
@ stdcall AdjustWindowRect(ptr long long) AdjustWindowRect
@ stdcall AdjustWindowRectEx(ptr long long long) AdjustWindowRectEx

View file

@ -21,8 +21,8 @@ ALL_OBJS = $(SPEC_SRCS:.spec=.spec.o) $(OBJS)
$(MODULE): $(ALL_OBJS)
$(CC) -o $@ $(ALL_OBJS) -L$(DLLDIR) $(LDIMPORTS:%=-l%) $(LIBWINE) $(LIBUNICODE) $(LIBS) $(LDFLAGS)
wine.spec.c: wine.spec
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ -spec $(SRCDIR)/wine.spec -mgui -L$(DLLDIR) $(IMPORTS:%=-l%)
wine.spec.c: $(WINEBUILD)
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ --exe wine -mgui -e wine_initial_task -L$(DLLDIR) $(IMPORTS:%=-l%)
install:: $(MODULE)
$(MKINSTALLDIRS) $(bindir)

View file

@ -1 +0,0 @@
init wine_initial_task

View file

@ -24,7 +24,7 @@ all: $(MODULE)$(DLLEXT) $(BASEMODULE)$(EXEEXT)
# Rule for main module spec file
$(MODULE).spec.c: $(RC_SRCS:.rc=.res) $(ALL_OBJS) $(WINEBUILD)
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ -exe $(MODULE) $(APPMODE:%=-m%) $(RC_SRCS:%.rc=-res %.res) $(ALL_OBJS) -L$(DLLDIR) $(DELAYIMPORTS:%=-dl%) $(IMPORTS:%=-l%)
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ --exe $(MODULE) $(APPMODE:%=-m%) $(RC_SRCS:%.rc=-r %.res) $(ALL_OBJS) -L$(DLLDIR) $(DELAYIMPORTS:%=-d%) $(IMPORTS:%=-l%)
# Rules for .so main module

View file

@ -18,13 +18,13 @@ C_SRCS = \
all: $(PROGRAMS:%=%$(DLLEXT)) $(PROGRAMS:.exe=$(EXEEXT))
aviinfo.exe.spec.c: aviinfo.o $(WINEBUILD)
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ -exe aviinfo.exe -mgui aviinfo.o -L$(DLLDIR) -lkernel32
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ --exe aviinfo.exe -mgui aviinfo.o -L$(DLLDIR) -lkernel32
aviplay.exe.spec.c: aviplay.o $(WINEBUILD)
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ -exe aviplay.exe -mgui aviplay.o -L$(DLLDIR) -lddraw -lkernel32
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ --exe aviplay.exe -mgui aviplay.o -L$(DLLDIR) -lddraw -lkernel32
icinfo.exe.spec.c: icinfo.o $(WINEBUILD)
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ -exe icinfo.exe -mgui icinfo.o -L$(DLLDIR) -lmsvfw32 -lkernel32
$(LDPATH) $(WINEBUILD) $(DEFS) -o $@ --exe icinfo.exe -mgui icinfo.o -L$(DLLDIR) -lmsvfw32 -lkernel32
aviinfo.exe.so: aviinfo.o aviinfo.exe.spec.o
$(LDSHARED) $(LDDLLFLAGS) -o $@ aviinfo.o aviinfo.exe.spec.o $(ALL_LIBS)

View file

@ -125,6 +125,7 @@ static void do_exe_mode( const char *arg );
static void do_module( const char *arg );
static void do_heap( const char *arg );
static void do_name( const char *arg );
static void do_entry( const char *arg );
static void do_spec( const char *arg );
static void do_def( const char *arg );
static void do_exe( const char *arg );
@ -132,7 +133,6 @@ static void do_glue(void);
static void do_relay16(void);
static void do_relay32(void);
static void do_debug(void);
static void do_sym(void);
static void do_chdir( const char *arg );
static void do_lib( const char *arg );
static void do_import( const char *arg );
@ -141,30 +141,31 @@ static void do_rsrc( const char *arg );
static const struct option_descr option_table[] =
{
{ "-h", 0, do_usage, "-h Display this help message" },
{ "-w", 0, do_warnings,"-w Turn on warnings" },
{ "-C", 1, do_chdir, "-C dir Change directory to <dir> before opening source files" },
{ "-f", 1, do_f_flags, "-f flags Compiler flags (only -fPIC is supported)" },
{ "-D", 1, do_define, "-D sym Ignored for C flags compatibility" },
{ "-I", 1, do_include, "-I dir Ignored for C flags compatibility" },
{ "-K", 1, do_k_flags, "-K flags Compiler flags (only -KPIC is supported)" },
{ "-m", 1, do_exe_mode,"-m mode Set the executable mode (cui|gui|cuiw|guiw)" },
{ "-M", 1, do_module, "-M module Set the name of the main (Win32) module for a Win16 dll" },
{ "-L", 1, do_lib, "-L directory Look for imports libraries in 'directory'" },
{ "-l", 1, do_import, "-l lib.dll Import the specified library" },
{ "-dl", 1, do_dimport, "-dl lib.dll Delay-import the specified library" },
{ "-H", 1, do_heap, "-H size Set the heap size for a Win16 dll" },
{ "-N", 1, do_name, "-N dllname Set the DLL name (default: set from input file name)" },
{ "-res", 1, do_rsrc, "-res rsrc.res Load resources from rsrc.res" },
{ "-o", 1, do_output, "-o name Set the output file name (default: stdout)\n" },
{ "-sym", 0, do_sym, NULL }, /* ignored for backwards compatibility */
{ "-spec", 1, do_spec, "-spec file.spec Build a .c file from a spec file" },
{ "-def", 1, do_def, "-def file.spec Build a .def file from a spec file" },
{ "-exe", 1, do_exe, "-exe name Build a .c file for the named executable" },
{ "-debug", 0, do_debug, "-debug [files] Build a .c file containing debug channels declarations" },
{ "-glue", 0, do_glue, "-glue [files] Build the 16-bit glue for the source files" },
{ "-relay16", 0, do_relay16, "-relay16 Build the 16-bit relay assembly routines" },
{ "-relay32", 0, do_relay32, "-relay32 Build the 32-bit relay assembly routines" },
{ "-h", 0, do_usage, "-h Display this help message" },
{ "-w", 0, do_warnings,"-w Turn on warnings" },
{ "-C", 1, do_chdir, "-C dir Change directory to <dir> before opening source files" },
{ "-f", 1, do_f_flags, "-f flags Compiler flags (only -fPIC is supported)" },
{ "-D", 1, do_define, "-D sym Ignored for C flags compatibility" },
{ "-I", 1, do_include, "-I dir Ignored for C flags compatibility" },
{ "-K", 1, do_k_flags, "-K flags Compiler flags (only -KPIC is supported)" },
{ "-m", 1, do_exe_mode,"-m mode Set the executable mode (cui|gui|cuiw|guiw)" },
{ "-M", 1, do_module, "-M module Set the name of the main (Win32) module for a Win16 dll" },
{ "-L", 1, do_lib, "-L directory Look for imports libraries in 'directory'" },
{ "-l", 1, do_import, "-l lib.dll Import the specified library" },
{ "-d", 1, do_dimport, "-d lib.dll Delay-import the specified library" },
{ "-H", 1, do_heap, "-H size Set the heap size for a Win16 dll" },
{ "-N", 1, do_name, "-N dllname Set the DLL name (default: set from input file name)" },
{ "-e", 1, do_entry, "-e function Set the DLL entry point function (default: DllMain)" },
{ "-r", 1, do_rsrc, "-r rsrc.res Load resources from rsrc.res" },
{ "-res", 1, do_rsrc, NULL }, /* for backwards compatibility, will disappear */
{ "-o", 1, do_output, "-o name Set the output file name (default: stdout)\n" },
{ "--spec", 1, do_spec, "--spec file.spec Build a .c file from a spec file" },
{ "--def", 1, do_def, "--def file.spec Build a .def file from a spec file" },
{ "--exe", 1, do_exe, "--exe name Build a .c file for the named executable" },
{ "--debug", 0, do_debug, "--debug [files] Build a .c file containing debug channels declarations" },
{ "--glue", 0, do_glue, "--glue [files] Build the 16-bit glue for the source files" },
{ "--relay16", 0, do_relay16, "--relay16 Build the 16-bit relay assembly routines" },
{ "--relay32", 0, do_relay32, "--relay32 Build the 32-bit relay assembly routines" },
{ NULL, 0, NULL, NULL }
};
@ -192,7 +193,7 @@ static void do_usage(void)
for (opt = option_table; opt->name; opt++)
if (opt->usage) fprintf( stderr, " %s\n", opt->usage );
fprintf( stderr, "\nExactly one of -spec, -def, -exe, -debug, -glue, -relay16 or -relay32 must be specified.\n\n" );
fprintf( stderr, "\nExactly one of --spec, --def, --exe, --debug, --glue, --relay16 or --relay32 must be specified.\n\n" );
exit(1);
}
@ -238,6 +239,11 @@ static void do_name( const char *arg )
DLLName[sizeof(DLLName) - 1] = 0;
}
static void do_entry( const char *arg )
{
init_func = xstrdup( arg );
}
static void do_spec( const char *arg )
{
if (exec_mode != MODE_NONE || !arg[0]) do_usage();
@ -310,11 +316,6 @@ static void do_relay32(void)
exec_mode = MODE_RELAY32;
}
static void do_sym(void)
{
/* nothing */
}
static void do_lib( const char *arg )
{
lib_path = xrealloc( lib_path, (nb_lib_paths+1) * sizeof(*lib_path) );
@ -345,22 +346,29 @@ static void parse_options( char *argv[] )
for (ptr = last = argv + 1; *ptr; ptr++)
{
/* first check the exact option name */
for (opt = option_table; opt->name; opt++)
{
if (opt->has_arg && !strncmp( *ptr, opt->name, strlen(opt->name) ))
if (!strcmp( *ptr, opt->name ) ||
/* for long option check without the first dash too */
(opt->name[1] == '-' && !strcmp( *ptr, opt->name+1 )))
{
arg=*ptr+strlen(opt->name);
if (*arg=='\0')
{
ptr++;
arg=*ptr;
}
if (opt->has_arg) arg = *(++ptr);
else arg = NULL;
break;
}
if (!strcmp( *ptr, opt->name ))
}
/* now check for option name concatenated with argument */
if (!opt->name)
{
for (opt = option_table; opt->name; opt++)
{
arg=NULL;
break;
if (opt->has_arg && !strncmp( *ptr, opt->name, strlen(opt->name) ))
{
arg = *ptr + strlen(opt->name);
break;
}
}
}

View file

@ -504,13 +504,7 @@ SPEC_TYPE ParseTopLevel( FILE *file, int def_only )
while ((token = GetToken(1)) != NULL)
{
if (strcmp(token, "init") == 0)
{
if (SpecType == SPEC_WIN16)
fatal_error( "init cannot be used for Win16 spec files\n" );
init_func = xstrdup( GetToken(0) );
}
else if (strcmp(token, "rsrc") == 0)
if (strcmp(token, "rsrc") == 0)
{
if (!def_only)
{

View file

@ -19,7 +19,7 @@ option can be specified, as described in the \fBOPTIONS\fR section.
You have to specify exactly one of the following options, depending on
what you want winebuild to generate.
.TP
.BI \-spec\ file.spec
.BI \--spec\ file.spec
Build a C file from a spec file (see \fBSPEC FILE SYNTAX\fR for
details). The resulting C file must be compiled and linked to the
other object files to build a working Wine dll.
@ -32,20 +32,20 @@ final dll, to allow
to get the list of all undefined symbols that need to be imported from
other dlls.
.TP
.BI \-exe\ name
.BI \--exe\ name
Build a C file for the named executable. This is basically the same as
the -spec mode except that it doesn't require a .spec file as input,
the --spec mode except that it doesn't require a .spec file as input,
since an executable doesn't export functions. The resulting C file
must be compiled and linked to the other object files to build a
working Wine executable, and all the other object files must be listed
as
.I input files.
.TP
.BI \-def\ file.spec
.BI \--def\ file.spec
Build a .def file from a spec file. This is used when building dlls
with a PE (Win32) compiler.
.TP
.B \-debug
.B \--debug
Build a C file containing the definitions for debugging channels. In
that mode the
.I input files
@ -53,18 +53,18 @@ should be a list of C files to search for debug channel
definitions. The resulting C file must be compiled and linked with the
dll.
.TP
.B \-glue
.B \--glue
Build a C file containing the glue code for the 16-bit calls contained
in the
.I input files.
These calls must be specified in the source files using special
markers, as described in the \fBGLUE FUNCTIONS\fR section.
.TP
.B \-relay16
.B \--relay16
Generate the assembly code for the 16-bit relay routines. This is for
Wine internal usage only, you should never need to use this option.
.TP
.B \-relay32
.B \--relay32
Generate the assembly code for the 32-bit relay routines. This is for
Wine internal usage only, you should never need to use this option.
.SH OPTIONS
@ -72,11 +72,22 @@ Wine internal usage only, you should never need to use this option.
.BI \-C\ directory
Change to the specified directory before reading source files. Only
meaningful in
.BR \-debug\ and\ -glue\ modes.
.BR \--debug\ and\ --glue\ modes.
.TP
.BI \-D\ symbol
Ignored for compatibility with the C compiler.
.TP
.BI \-e\ function
Specify the module entry point function; if not specified, the default
is
.B DllMain
for dlls, and
.B main
or
.B WinMain
for CUI or GUI executables respectively. This is only valid for Win32
modules.
.TP
.BI \-f\ flags
Ignored for compatibility with the C compiler.
.TP
@ -110,7 +121,7 @@ imported from it is actually called).
.BI \-M\ module
Specify that we are building a 16-bit dll, that will ultimately be
linked together with the 32-bit dll specified in \fImodule\fR. Only
meaningful in \fB-spec\fR mode.
meaningful in \fB--spec\fR mode.
.TP
.BI \-m\ mode
Set the executable mode, which can be one of the following:
@ -132,7 +143,7 @@ function. A graphical executable has a \fBWinMain\fR entry point
instead. The ASCII/Unicode distinction applies to the strings that are
passed to the entry point.
.br
This option is only meaningful in \fB-exe\fR mode.
This option is only meaningful in \fB--exe\fR mode.
.TP
.BI \-N\ dllname
Set the internal name of the module. It is only used in Win16
@ -143,7 +154,7 @@ KRNL386.EXE. It shouldn't be needed otherwise.
.BI \-o\ file
Set the name of the output file (default is standard output).
.TP
.BI \-res\ rsrc.res
.BI \-r\ rsrc.res
Load resources from the specified binary resource file. The
\fIrsrc.res\fR can be produced from a source resource file with
.BR wrc(1)
@ -156,8 +167,6 @@ Turn on warnings.
A spec file should contain a number of optional directives, and then a
list of ordinal declarations. The general syntax is the following:
.PP
.RB [ init\ \fIfunction\fR]
.br
.RB [ rsrc\ \fIresfile\fR]
.br
.RB [ ignore\ (\ [ \fIsymbols...\fR ]\ )\ ]
@ -182,10 +191,6 @@ list of ordinal declarations. The general syntax is the following:
.IB ordinal\ forward
.RI [ flags ]\ exportname\ forwardname
.SS "Optional directives"
.B init
specifies a function which will be called when this dll is
loaded. This is only valid for Win32 modules.
.PP
.B rsrc
specifies the path of the compiled resource file.
.PP
@ -388,7 +393,7 @@ Glue functions are used to call down to 16-bit code from a 32-bit
function. This is done by declaring a special type of function
prototype in the source file that needs to call to 16-bit code, and
processing the source file through
.I winebuild -glue.
.I winebuild --glue.
.PP
These prototypes must be of one of the following forms:
.PP

View file

@ -1626,11 +1626,6 @@ sub generate_spec_file($$$)
return;
}
if (defined @$target[$T_INIT] and ((@$target[$T_FLAGS] & $TF_WRAP) == 0)) {
print FILEO "init @$target[$T_INIT]\n";
}
print FILEO "\n";
# Don't forget to export the 'Main' function for wrapped executables,
# except for MFC ones!
if ((@$target[$T_FLAGS]&($TF_WRAP|$TF_WRAPPER|$TF_MFC)) == $TF_WRAP) {
@ -1902,9 +1897,9 @@ sub generate_project_files($)
$canon =~ s/_so$//;
if (@$target[$T_TYPE] == $TT_GUIEXE) {
$mode = "-m gui -exe @$target[$T_NAME]";
$mode = "-m gui --exe @$target[$T_NAME]";
} elsif (@$target[$T_TYPE] == $TT_CUIEXE) {
$mode = "-m cui -exe @$target[$T_NAME]";
$mode = "-m cui --exe @$target[$T_NAME]";
} else {
$mode = "";
}
@ -1918,7 +1913,7 @@ sub generate_project_files($)
}
print FILEO "@$target[$T_NAME].spec.c: \$(${canon}_SPEC_SRCS) \$(${canon}_RC_SRCS:.rc=.res) \$(${canon}_OBJS)\n";
print FILEO "\t\$(LD_PATH) \$(WINEBUILD) -fPIC -o \$\@ \$(${canon}_SPEC_SRCS:%=-spec %) \$(${canon}_RC_SRCS:%.rc=-res %.res) \$(${canon}_DLL_PATH) \$(WINE_DLL_PATH) \$(GLOBAL_DLL_PATH) $all_dlls $mode \$(${canon}_OBJS)\n";
print FILEO "\t\$(LD_PATH) \$(WINEBUILD) -fPIC -o \$\@ \$(${canon}_SPEC_SRCS:%=--spec %) \$(${canon}_RC_SRCS:%.rc=-r %.res) \$(${canon}_DLL_PATH) \$(WINE_DLL_PATH) \$(GLOBAL_DLL_PATH) $all_dlls $mode \$(${canon}_OBJS)\n";
print FILEO "\n";
print FILEO "@$target[$T_NAME].so: @$target[$T_NAME].spec.o \$(${canon}_OBJS) \$(${canon}_DEPENDS) \n";
if (@{@$target[$T_SOURCES_CXX]} > 0 or @{@$project_settings[$T_SOURCES_CXX]} > 0) {