1WINEMAKER(1)                Wine Developers Manual                WINEMAKER(1)
2
3
4

NAME

6       winemaker  - generate a build infrastructure for compiling Windows pro‐
7       grams on Unix
8

SYNOPSIS

10       winemaker [ --nobanner ] [ --backup | --nobackup ] [ --nosource-fix ]
11         [ --lower-none | --lower-all | --lower-uppercase ]
12         [ --lower-include | --nolower-include ] [ --mfc | --nomfc ]
13         [ --guiexe | --windows | --cuiexe | --console | --dll ]
14         [ -Dmacro[=defn] ] [ -Idir ] [ -Pdir ] [ -idll ] [ -Ldir  ]  [  -lli‐
15       brary ]
16         [  --nodlls ] [ --nomsvcrt ] [ --interactive ] [ --single-target name
17       ]
18         [ --generated-files ] [ --nogenerated-files ] ]
19         [ --wine32 ]
20         work_directory | project_file | workspace_file
21
22

DESCRIPTION

24       winemaker is a perl script designed to help you bootstrap  the  process
25       of converting your Windows sources to Winelib programs.
26
27       In order to do this winemaker can perform the following operations:
28
29       -  rename  your  source files and directories to lowercase in the event
30       they got all uppercased during the transfer.
31
32       - perform Dos to Unix (CRLF to LF) conversions.
33
34       - scan the include statements and resource file references  to  replace
35       the backslashes with forward slashes.
36
37       -  during the above step winemaker will also perform a case insensitive
38       search of the referenced file in  the  include  path  and  rewrite  the
39       include statement with the right case if necessary.
40
41       -  winemaker  will  also  check  other more exotic issues like '#pragma
42       pack' usage, use of "afxres.h" in non MFC projects, and more.  Whenever
43       it  encounters  something  out of the ordinary, winemaker will warn you
44       about it.
45
46       - winemaker can also scan a complete directory tree at once, guess what
47       are  the  executables and libraries you are trying to build, match them
48       with source files, and generate the corresponding Makefile.
49
50       - finally winemaker will generate a global Makefile for normal use.
51
52       - winemaker knows about MFC-based project and will generate  customized
53       files.
54
55       -  winemaker  can  read  existing  project files. It supports dsp, dsw,
56       vcproj and sln files.
57

OPTIONS

59       --nobanner
60              Disables the printing of the banner.
61
62       --backup
63              Directs winemaker to perform a backup of all the source files in
64              which it makes changes. This is the default.
65
66       --nobackup
67              Tells winemaker not to backup modified source files.
68
69       --nosource-fix
70              Directs  winemaker  not to try fixing the source files (e.g. Dos
71              to Unix conversion). This prevents complaints if the  files  are
72              readonly.
73
74       --lower-all
75              Tells  winemaker  to  rename all files and directories to lower‐
76              case.
77
78       --lower-uppercase
79              Tells winemaker to only rename files and directories  that  have
80              an  all  uppercase  name.  So "HELLO.C" would be renamed but not
81              "World.c".
82
83       --lower-none
84              Tells winemaker not to rename files  and  directories  to  lower
85              case.  Note that this does not prevent the renaming of a file if
86              its extension cannot be handled as is, e.g. ".Cxx". This is  the
87              default.
88
89       --lower-include
90              Tells  winemaker that if it does not find the file corresponding
91              to an include statement (or other form  of  file  reference  for
92              resource  files), then it should convert that filename to lower‐
93              case. This is the default.
94
95       --nolower-include
96              Tells winemaker not to modify the include statement if it cannot
97              find the referenced file.
98
99       --guiexe | --windows
100              Specifies that whenever winemaker finds an executable target, or
101              a target of unknown type, it should assume that it is a  graphi‐
102              cal application.  This is the default.
103
104       --cuiexe | --console
105              Specifies that whenever winemaker finds an executable target, or
106              a target of unknown type, it should assume that it is a  console
107              application.
108
109       --dll  This  option  tells winemaker that whenever it finds a target of
110              unknown type, i.e. for which it does not know whether it  is  an
111              executable or a library, it should assume it is a library.
112
113       --mfc  Specifies  that  the targets are MFC based. In such a case wine‐
114              maker adapts the include  and  library  paths  accordingly,  and
115              links the target with the MFC library.
116
117       --nomfc
118              Specifies  that  targets are not MFC-based. This option disables
119              use  of  MFC  libraries  even  if  winemaker  encounters   files
120              "stdafx.cpp"  or  "stdafx.h"  that  would cause it to enable MFC
121              automatically if neither --nomfc nor --mfc was specified.
122
123       -Dmacro[=defn]
124              Adds the specified macro definition to the global list of  macro
125              definitions.
126
127       -Idir  Appends the specified directory to the global include path.
128
129       -Pdir  Appends the specified directory to the global dll path.
130
131       -idll  Adds the Winelib library to the global list of Winelib libraries
132              to import.
133
134       -Ldir  Appends the specified directory to the global library path.
135
136       -llibrary
137              Adds the specified library to the global list  of  libraries  to
138              link with.
139
140       --nodlls
141              This  option  tells  winemaker  not  to  use the standard set of
142              winelib libraries for imports. That is, any DLL your  code  uses
143              must  be  explicitly  passed  to winemaker with -i options.  The
144              standard  set  of  libraries   is:   odbc32.dll,   odbccp32.dll,
145              ole32.dll, oleaut32.dll and winspool.drv.
146
147       --nomsvcrt
148              Sets some options to tell winegcc not to compile against msvcrt.
149              Use this option if you have cpp-files that include <string>.
150
151       --interactive
152              Puts winemaker in interactive mode. In this mode winemaker  will
153              ask you to confirm each directory's list of targets, and then to
154              provide directory and target specific options.
155
156       --single-target name
157              Specifies that there is only one target, and that it  is  called
158              "name".
159
160       --generated-files
161              Tells winemaker to generate the Makefile. This is the default.
162
163       --nogenerated-files
164              Tells winemaker not to generate the Makefile.
165
166       --wine32
167              Tells  winemaker  to generate a 32-bit target. This is useful on
168              wow64 systems.  Without that option the default architecture  is
169              used.
170
171

EXAMPLES

173       Here is a typical winemaker use:
174
175       $ winemaker --lower-uppercase -DSTRICT .
176
177       The  above tells winemaker to scan the current directory and its subdi‐
178       rectories for source files. Whenever if finds a file or directory which
179       name is all uppercase, it should rename it to lowercase. It should then
180       fix all these source files for compilation with  Winelib  and  generate
181       Makefiles.   The '-DSTRICT' specifies that the STRICT macro must be set
182       when compiling these sources. Finally winemaker will create a Makefile.
183
184       The next step would be:
185
186       $ make
187
188       If at this point you get compilation errors (which is quite likely  for
189       a  reasonably  sized  project) then you should consult the Winelib User
190       Guide to find tips on how to resolve them.
191
192       For an MFC-based project you would have to run the  following  commands
193       instead:
194
195       $ winemaker --lower-uppercase --mfc .
196       $ make
197
198       For  an  existing project-file you would have to run the following com‐
199       mands:
200
201       $ winemaker myproject.dsp
202       $ make
203

TODO / BUGS

205       In some cases you will have to edit the Makefile  or  source  files  by
206       yourself.
207
208       Assuming that the windows executable/library is available, we could use
209       winedump to determine what kind of executable it is (graphical or  con‐
210       sole),  which  libraries  it  is  linked  with,  and which functions it
211       exports (for libraries). We could then restore all these  settings  for
212       the corresponding Winelib target.
213
214       Furthermore  winemaker is not very good at finding the library contain‐
215       ing the executable: it must either be in the current  directory  or  in
216       the LD_LIBRARY_PATH.
217
218       Winemaker does not support message files and the message compiler yet.
219

SEE ALSO

221       The Winelib User Guide:
222
223       http://www.winehq.org/docs/winelib-guide/index
224
225       wine(1)
226

AUTHORS

228       François Gouget for CodeWeavers
229
230       Dimitrie O. Paun
231
232       André Hentschel
233
234Wine 1.3.24                        Sep 2009                       WINEMAKER(1)
Impressum