[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:
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.
- Re: GNU make 3.81beta4 released, (continued)
- Re: GNU make 3.81beta4 released, Markus Mauhart, 2006/01/21
- Re: GNU make 3.81beta4 released, Eli Zaretskii, 2006/01/21
- Re: GNU make 3.81beta4 released, Eli Zaretskii, 2006/01/21
- Re: GNU make 3.81beta4 released, Eli Zaretskii, 2006/01/21
- Re: GNU make 3.81beta4 released, Markus Mauhart, 2006/01/22
- Re: GNU make 3.81beta4 released, Eli Zaretskii, 2006/01/23
- Re: GNU make 3.81beta4 released, Markus Mauhart, 2006/01/21
- Re: GNU make 3.81beta4 released,
Markus Mauhart <=
- Re: GNU make 3.81beta4 released, Markus Mauhart, 2006/01/22
- Re: GNU make 3.81beta4 released, Paul D. Smith, 2006/01/20
- Re: GNU make 3.81beta4 released, Eli Zaretskii, 2006/01/20
- Re: GNU make 3.81beta4 released, Paul D. Smith, 2006/01/20
- Re: GNU make 3.81beta4 released, Eli Zaretskii, 2006/01/20
- Re: GNU make 3.81beta4 released, Paul D. Smith, 2006/01/20
- Re: GNU make 3.81beta4 released, Markus Mauhart, 2006/01/14
- Re: GNU make 3.81beta4 released, J. Grant, 2006/01/14
- Re: GNU make 3.81beta4 released, Markus Mauhart, 2006/01/14
- Re: GNU make 3.81beta4 released, Eli Zaretskii, 2006/01/14