descriptionGNU make based build system for Winelib applications
last changeThu, 25 Sep 2008 15:19:40 +0000 (25 19:19 +0400)
content tags
GNU make based build system for Winelib applications

:Author:        Kirill Smelkov <>
:Date:          2007 September 2nd
:License:       LGPL

I am going to port some Win32 applications to GNU/Linux and thought it would be
useful to improve the build system for Winelib applications.

Current status and Motivation

1. Wine in-tree Makefiles for programs & dlls are pretty much good and
   maintainable, but they lack C++ support.
2. Initial approach taken by winemaker (I used it in 2003-2004) was to adapt
   Wine's make rules to support C++ .
3. At present winemaker dropped supplying above mentioned rules and generates
   very simple makefiles. To me this approach have several problems:

- lack of dependency tracking
- hard to maintain Makefiles.
  The rules generated are substituted in each Makefile instead of being in one
- good as a starting point, but not a complete solution.

Winemaker already relies on GNU toolchain (in form of gcc and g++), and I

  Why not use GNU make with all available extensions when necessary, and deploy
  a simple full-featured build system for Winelib based applications

The result is presented here for public review.
Comments, suggestions?


* support C, C++ and resource files.
* automatic dependency tracking for C and C++.
* beautified build output (to increase SNR and concentrate on errors and
* winemaker patches provided (although I don't know Perl -- help needed, Francois?).
* Tested with GNU make 3.81. This version of GNU make was released in 2006 and
  is present in all recent Linux distributions.

Usage example

For usage example see directory clock+wow32/ . There I provide example of how
to build 1 program and 2 dlls.

Original clock.exe & wow32.dll processed by winemaker are located in misc/ for comparison.
2008-09-25 Kirill Smelkov.gitignore += vim swap filesmaster
2008-08-19 Kirill SmelkovFix typos
2008-08-19 Kirill SmelkovBuild fix: it seems commdlg32 was renamed (?) to comdlg32
2008-08-19 Kirill SmelkovCompile fix: fprintf needs stdio.h
2008-08-19 Kirill SmelkovInitial .gitignore
2008-08-19 Kirill Smelkovmake help
2008-08-19 Kirill SmelkovAdd filetype tag for vim
2007-09-05 Kirill SmelkovAdd support for delay-loaded dlls
2007-09-05 Kirill SmelkovAdd suppurt for INCLUDES and CPPFLAGS
2007-09-02 Kirill SmelkovREADME textv0.1
2007-09-02 Kirill SmelkovRestructure example tree a bit
2007-09-02 Kirill SmelkovMention original Wine build system in comments
2007-09-02 Kirill SmelkovSimplify .exe wrapper
2007-09-01 Kirill SmelkovWinemake.include is always hooked. No need to specify...
2007-09-01 Kirill SmelkovMore comments
2007-09-01 Kirill SmelkovComments about clearing built-in rules and variables
11 years ago v0.1 TAG v0.1
10 years ago master