.gitignore += vim swap files
[winelib-gnu-make.git] / README
blobed68a32ad63a59a01a9c4601df79c6808cfdc48d
1 ====================================================
2 GNU make based build system for Winelib applications
3 ====================================================
5 :Author:        Kirill Smelkov <kirr@mns.spb.ru>
6 :Date:          2007 September 2nd
7 :License:       LGPL
10 I am going to port some Win32 applications to GNU/Linux and thought it would be
11 useful to improve the build system for Winelib applications.
14 Current status and Motivation
15 =============================
17 1. Wine in-tree Makefiles for programs & dlls are pretty much good and
18    maintainable, but they lack C++ support.
19 2. Initial approach taken by winemaker (I used it in 2003-2004) was to adapt
20    Wine's make rules to support C++ .
21 3. At present winemaker dropped supplying above mentioned rules and generates
22    very simple makefiles. To me this approach have several problems:
24 - lack of dependency tracking
25 - hard to maintain Makefiles.
26   The rules generated are substituted in each Makefile instead of being in one
27   place.
28 - good as a starting point, but not a complete solution.
31 Winemaker already relies on GNU toolchain (in form of gcc and g++), and I
32 though::
34   Why not use GNU make with all available extensions when necessary, and deploy
35   a simple full-featured build system for Winelib based applications
37 The result is presented here for public review.
38 Comments, suggestions?
40 Features
41 ========
43 * support C, C++ and resource files.
44 * automatic dependency tracking for C and C++.
45 * beautified build output (to increase SNR and concentrate on errors and
46   warnings).
47 * winemaker patches provided (although I don't know Perl -- help needed, Francois?).
48 * Tested with GNU make 3.81. This version of GNU make was released in 2006 and
49   is present in all recent Linux distributions.
51 Usage example
52 =============
54 For usage example see directory clock+wow32/ . There I provide example of how
55 to build 1 program and 2 dlls.
57 Original clock.exe & wow32.dll processed by winemaker are located in misc/ for comparison.