1WINEMAKER(1) Wine Developers Manual WINEMAKER(1)
2
3
4
6 winemaker - generate a build infrastructure for compiling Windows pro‐
7 grams on Unix
8
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
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
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
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
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
216 François Gouget for CodeWeavers
217 Dimitrie O. Paun
218 André Hentschel
219
221 winemaker is part of the Wine distribution, which is available through
222 WineHQ, the Wine development headquarters ⟨https://www.winehq.org/⟩.
223
225 wine(1),
226 Wine documentation and support ⟨https://www.winehq.org/help⟩.
227
228
229
230Wine 4.21 Jan 2012 WINEMAKER(1)