[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GNU make 3.81beta4 released

From: Markus Mauhart
Subject: Re: GNU make 3.81beta4 released
Date: Sat, 21 Jan 2006 23:59:32 +0100

"Markus Mauhart" <address@hidden> wrote ...
> I will post the necessary URLs to reproduce my tests today.

If any "gnumake -j" - related problems occur, please take a look at my sources:

Download the archive containing the sources of TheIDE
(we will build this application, it is UPP's IDE, see
Some months ago I had no problem under w32 to use the same sources
but with UNIX lineends, the corresponding archive would be ...
... this one also contains a (handcrafted) Makefile to build TheIDE
under Linux (which is UPP's IDE, "TheIDE"), and also a pre-built binary.

Decide for a source directory:
extract the archive to $SRC

All sources we build are contained in $UPPSRC.

It contains a file tree of gmake-includefiles starting with dir "uppsrc" -
- extract this tree over $UPPSRC.

Download my gmake-based TheIDE-build-replacement including build-cfg files for
mingw, vc and cygwin (linux would use an adapted cygwin build-cfg file):

Decide for a build directory:
>From, extract (and adapt some of) the following files 
>into $DST:  My makefile containing TheIDE's build logic (no changes 
necessary) same, + many traces (no changes necessary)

    themake.bat  Script to use inside cmd.exe, for vc and mingw 
   Adapt it so that it finds your (-j - enabled) gmake381b4
   All arguments are copied to the contained gmake381b4 - call.
    themake-dbg.bat Like themake.bat, but using  Like themake.bat, but for use inside unix shell + unix-path'ed 
build tools Like, but using  Contains the DOS and UNIX path to our sources ("UPP packages") 
- adapt it.
   It binds $DST to a list of source-tree's. All other build info resides in 
$DST.  Build commands for "unix-gcc" inside unix shell under cygwin 
(no changes necessary) Build commands for "dos-gcc" inside cmd.exe - must adapt 
   (MSC_PFX would be needed to use MS' [M]IDL/[D]COM SDK tools)  Build commands for msvc inside cmd.exe - must adapt MSC_PFX:
   MSC_PFX := ("$(subst \,/,$(VS71COMNTOOLS))vsvars32.bat" > nul) && #

 The *'s especially contain release/debug defaults (-O2, ...)
 The *'s are intended to be "user specific" (independent of DST and SRC) Any additional build overrides to customize the builds 
performed for DST.
   My shipped verision may contain a few paths to be adapted.

Build instructions:

Adapt the files in $DST as explained.
Open cmd.exe
cd $DST
(btw, the variables DST and SRC are not used by themake, only in this text)

Dont forget to clean whenever necessary, using same options as for build:
themake.bat cfG=vc    pkG=ide upp.linkmode=1 clean
themake.bat cfG=mingw pkG=ide upp.linkmode=1 clean
themake.bat cfG=cyg   pkG=ide upp.linkmode=1 clean
themake.bat cfG=mycfg pkG=ide upp.linkmode=1 clean

Serial build using "mode 1" ("blitz") (this mode is also themake's builtin 
themake.bat cfG=vc pkG=ide upp.linkmode=1 upp.blitz=1

Parallel build (need -j - patched gmake):
set gmake-j=-j 2
themake.bat cfG=vc pkG=ide upp.linkmode=1 upp.blitz=1
set gmake-j=

Unlimited parallel build (need also my patches or equivalent patches):
set gmake-j=
themake.bat cfG=vc pkG=ide upp.linkmode=1 upp.blitz=1 -j
(this build consumes ~800MB memory)

Using build commands from, parallel:
set gmake-j=-j 2
themake.bat cfG=mingw pkG=ide upp.linkmode=1 upp.blitz=1
set gmake-j=

Let your harddisk sound like a machine gun:
set gmake-j=-j 64
themake.bat cfG=mingw pkG=ide upp.linkmode=1 upp.blitz=1
set gmake-j=

"upp.blitz=1" would disable the "blitz"-compilation:
"Blitz" means to compile all C[++] files of a pkg like one concatenated file.
"Blitz" can be disabled also on pkg and on file-base, see shipped version ofr
"Blitz" speeds up build times in my gcc344/vc tests by factor 2 - 2.5.
"Blitz" makes GCC consume some 100 MB of RAM - "blitz"-compiling 7 files maybe 
 memory of 7 compiles at once ?
 Hence whithout blitz, much more instances of GCC can run concurrently.


e.g. using gmake -j 3: cfG=cyg pkG=ide -j 3

B U T:
this will probably fail, cause with upp-511, upp/Core uses xxx64 - functions
which are not availablee in my cygwin installation.
Hence only some external plugins from UPPSRC will build successfully.
(curiously enough, "-j 3" in the command above lets this external plugins
build (successfully) very early).

Even once the mentioned cygwin-xxx64 problems are solved, usually some bugs
in upp srcs and cfg-files (pkg-dir/pkgname.upp) would need to be fixed
- this maybe also applies to other unix/gcc builds.

Linux builds (in theory, but I didnt try it):
cd $DST
Now remove any w32/cygwin-specific GCC-options from
Generally grep for {32 win cyg linux unix mingw} in all used $DST/*.mk.
Now build (under linux, in unix shell, what else): cfG=mylinux pkG=ide -j 3

Generally for problems with GCC builds:
Maybe need to adapt LIBRARY_PATH and CPATH in, or
other options.

1 minute left today on my watch :-)

Best Regards,

reply via email to

[Prev in Thread] Current Thread [Next in Thread]