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 | --lib ]
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 pack
42       usage, use of afxres.h in non  MFC  projects,  and  more.  Whenever  it
43       encounters something out of the ordinary, it will warn you about it.
44
45       - winemaker can also scan a complete directory tree at once, guess what
46       are the executables and libraries you are trying to build,  match  them
47       with source files, and generate the corresponding Makefile.
48
49       - finally winemaker will generate a global Makefile for normal use.
50
51       -  winemaker knows about MFC-based project and will generate customized
52       files.
53
54       - winemaker can read existing project  files.  It  supports  dsp,  dsw,
55       vcproj and sln files.
56

OPTIONS

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

EXAMPLES

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

TODO / BUGS

198       In  some cases you will have to edit the Makefile or source files manu‐
199       ally.
200
201       Assuming that the windows executable/library is available, we could use
202       winedump  to determine what kind of executable it is (graphical or con‐
203       sole), which libraries it  is  linked  with,  and  which  functions  it
204       exports  (for  libraries). We could then restore all these settings for
205       the corresponding Winelib target.
206
207       Furthermore winemaker is not very good at finding the library  contain‐
208       ing  the  executable:  it must either be in the current directory or in
209       the LD_LIBRARY_PATH.
210
211       winemaker does not support message files and the message compiler yet.
212
213       Bugs can be reported on the Wine bug tracker https://bugs.winehq.org⟩.
214

AUTHORS

216       François Gouget for CodeWeavers
217       Dimitrie O. Paun
218       André Hentschel
219

AVAILABILITY

221       winemaker is part of the Wine distribution, which is available  through
222       WineHQ, the Wine development headquarters https://www.winehq.org/⟩.
223

SEE ALSO

225       wine(1),
226       Wine documentation and support https://www.winehq.org/help⟩.
227
228
229
230Wine 4.21                          Jan 2012                       WINEMAKER(1)
Impressum