* harbour/make_gcc.mak
! added additional rules to fix time conditions in parallel compilation
* harbour/config/dos/dir.cf
* harbour/config/w32/dir.cf
* changed simple assignments to recursive ones
* harbour/config/dir.cf
+ added support for dependencies between build directories for
parallel execution. If compilation of dirX needs results of
dirY and dirZ compilation then it hsould be declared as:
dirX{dirY,dirZ}
% process directories defined in DIRS simultaneously when -j<N>
GNU make switch is used - it gives additional speed improvement
on multi CPU machines
* harbour/Makefile
* harbour/source/Makefile
* set directory dependencies for parallel compilation
The parallel compilation can be enabled by using -j<n> GNU make
switch on multiprocess platforms, f.e.:
./gnu_make.sh -j3
It should give some speed improvement even on single CPU machines.
These are results of clean Harbour compilation on my 3 phantom CPU
computer:
1. leaner compilation without -j<n> 6m29.895s
2. parallel compilation with -j5 but without
parallel directory processing 3m20.163s
3. parallel compilation with -j5 and with new
parallel directory processing 2m6.168s
50 lines
711 B
Makefile
50 lines
711 B
Makefile
#
|
|
# $Id$
|
|
#
|
|
|
|
ROOT = ./
|
|
|
|
ifeq ($(HB_HOST_BUILD),yes)
|
|
|
|
DIRS=\
|
|
source \
|
|
|
|
else
|
|
|
|
ifeq ($(HB_HOST_BUILD),lib)
|
|
HB_UTIL_DIR=
|
|
else
|
|
HB_UTIL_DIR=utils{source}
|
|
endif
|
|
|
|
DIRS=\
|
|
doc \
|
|
include \
|
|
source \
|
|
$(HB_UTIL_DIR) \
|
|
contrib{source} \
|
|
|
|
endif
|
|
|
|
ifeq ($(HB_POSTINST),)
|
|
|
|
ifneq ($(HB_ROOTPOSTINST),)
|
|
HB_POSTINST = $(HB_ROOTPOSTINST) $(HB_POSTINSTPARAM)
|
|
else
|
|
ifneq ($(SHLVL),)
|
|
HB_POSTINST = $(TOP)$(ROOT)bin/postinst.sh $(HB_POSTINSTPARAM)
|
|
else
|
|
ifeq ($(HB_ARCHITECTURE),dos)
|
|
HB_POSTINST = $(subst /,\,$(TOP)$(ROOT)bin/postinst.bat) $(HB_POSTINSTPARAM)
|
|
else
|
|
ifeq ($(HB_ARCHITECTURE),w32)
|
|
HB_POSTINST = $(subst /,\,$(TOP)$(ROOT)bin/postinst.bat) $(HB_POSTINSTPARAM)
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
|
|
include $(ROOT)config/dir.cf
|