make-w32
[Top][All Lists]
Advanced

[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:
http://members.chello.at/ejg8dk49/make.cvs.20060114.j_patch.zip


Download the archive containing the sources of TheIDE
(we will build this application, it is UPP's IDE, see
http://upp.sourceforge.net/index.html):
http://prdownloads.sourceforge.net/upp/upp-src-511.zip?download
Some months ago I had no problem under w32 to use the same sources
but with UNIX lineends, the corresponding archive would be ...
http://prdownloads.sourceforge.net/upp/upp-linux386-511.tar.gz?download
... 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:
SRC=...
extract the archive to $SRC
UPPSRC=$SRC/archivename/maybeSubdir/uppsrc

All sources we build are contained in $UPPSRC.

Download
http://members.chello.at/ejg8dk49/upp-511-uppsrc-upp.mk.zip
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):
http://members.chello.at/ejg8dk49/themake-2006.02.21.zip

Decide for a build directory:
DST=...
>From themake-2006.02.21.zip, extract (and adapt some of) the following files 
>into $DST:

    themake.mk  My makefile containing TheIDE's build logic (no changes 
necessary)
    themake-dbg.mk same, + many traces (no changes necessary)

    themake.bat  Script to use themake.mk inside cmd.exe, for vc and mingw 
builds.
   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 themake-dbg.mk.

    themake.sh  Like themake.bat, but for use inside unix shell + unix-path'ed 
build tools
    themake-dbg.sh Like themake.sh, but using themake-dbg.mk.

    upp.var.mk  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.

    cyg.cfg.mk  Build commands for "unix-gcc" inside unix shell under cygwin 
(no changes necessary)
    mingw.cfg.mk Build commands for "dos-gcc" inside cmd.exe - must adapt 
"MINGW_PFX := 
C:/mingw/bin/"
   (MSC_PFX would be needed to use MS' [M]IDL/[D]COM SDK tools)
    vc.cfg.mk  Build commands for msvc inside cmd.exe - must adapt MSC_PFX:
   MSC_PFX := ("$(subst \,/,$(VS71COMNTOOLS))vsvars32.bat" > nul) && #

 The *.cfg.mk's especially contain release/debug defaults (-O2, ...)
 The *.cfg.mk's are intended to be "user specific" (independent of DST and SRC)

    upp.override.mk 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 
default):
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 mingw.cfg.mk, 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 
upp.override.mk.
"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 
consumes
 memory of 7 compiles at once ?
 Hence whithout blitz, much more instances of GCC can run concurrently.


USING CYGWIN (-> cyg.cfg.mk):

e.g. using gmake -j 3:
themake.sh 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
cp cyg.cfg.mk mylinux.cfg.mk
Now remove any w32/cygwin-specific GCC-options from mylinux.cfg.mk
Generally grep for {32 win cyg linux unix mingw} in all used $DST/*.mk.
Now build (under linux, in unix shell, what else):
themake.sh cfG=mylinux pkG=ide -j 3

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


1 minute left today on my watch :-)



Best Regards,
Markus.







reply via email to

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