Files
harbour-core/harbour/config/dir.cf
Viktor Szakats f87ee247e1 2009-08-01 12:40 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* config/header.cf
  * config/rules.cf
  * config/none.cf
  * config/global.cf
  * config/doc.cf
  * config/lib.cf
  * config/bin.cf
  * config/dir.cf
  * config/test.cf
    + Added HB_COMPILER and HB_ARCHITECTURE autodetection.
      It's experimental yet.
    + Added support for HB_BUILD_SUBDIR envvar which can
      extend the <arch>/<comp> path by arbitrary subdir(s).
      Useful to keep custom binary builds in parallel, f.e.
      release/debug, cpp/c, cpu targets. Notice that hbmk2
      will not be able to use such customized directory
      structure yet, but there'll probably be a cmdline option
      for that in the future (it won't/can't be automatic).
      Notice, this feature doesn't work yet on OS/2 because
      the shell doesn't support 'mkdir -p' equivalent.
    * Cleaned internal ARCH_COMP var usage.
    % Deleted SOURCE_DIR usage, it was a no-op.

  * make_gnu.bat
    ! Fixed autodetection of mingwarm.
    ; Autodetection code will have to be deleted from here anyway.

  + config/os2-mkdir.exe
    + Added OS/2 GNU mkdir executable. (not yet used)

  * examples/superlib/superlib.dif
    + Added 'const'.

  * source/rtl/hbinet.c
    ! Fixed to use hb_retc() to return hb_socketErrorStr() value.
2009-08-01 10:41:04 +00:00

94 lines
1.8 KiB
CFEngine3

#
# $Id$
#
include $(TOP)$(ROOT)config/global.cf
ifneq ($(HB_ARCHITECTURE),)
ifneq ($(HB_COMPILER),)
ifeq ($(HB_HOST_ARCH),dos)
#do not use rules for parallel processing in DOS
JOB_SRV := NO
else
# these make versions does not work correctly with
# parallel execution rules below
JOB_SRV := $(MAKE_VERSION:3.7%=NO)
JOB_SRV := $(JOB_SRV:3.80%=NO)
endif
ifeq ($(JOB_SRV),NO)
ifeq ($(PM),) # Only traverse directories if not compiling a specific module
include $(TOP)$(ROOT)config/dirsh.cf
endif
endif
ifeq ($(DIR_RULE),)
# NOTE: The empty line directly before 'endef' HAVE TO exist!
# It causes that every commands will be separated by LF
define dir_mk
$(MK) -C $(dir) $@
endef
DIRS_PURE = $(filter-out {%},$(subst {, {,$(DIRS)))
DIRS_DEP = $(filter-out $(DIRS_PURE),$(DIRS))
DIRS_MK = $(foreach d, $(DIRS_PURE), $(if $(wildcard $(d)/Makefile),$(d),))
DIR_RULE = $(foreach dir, $(DIRS_MK), $(dir_mk))
MULTI_DEPS = yes
else
DIRS := $(filter-out {%},$(subst {, {,$(DIRS)))
MULTI_DEPS = no
endif
all : first
ifneq ($(MULTI_DEPS),yes)
first clean install::
+$(DIR_RULE)
else
DIRS_CLEAN = $(foreach dir, $(DIRS_MK), $(dir).clean)
DIRS_INST = $(foreach dir, $(DIRS_MK), $(dir).inst)
ifneq ($(_HB_BLD),yes)
first :: $(DIRS_MK)
endif
install :: $(DIRS_INST)
clean :: $(DIRS_CLEAN)
comma=,
define dep_rule
$(subst $(comma),$(2) ,$(subst },$(2),$(subst {,$(2)::|,$(1))))
endef
$(foreach dep, $(DIRS_DEP), $(eval $(call dep_rule,$(dep),.clean)))
$(foreach dep, $(DIRS_DEP), $(eval $(call dep_rule,$(dep),.inst)))
$(foreach dep, $(DIRS_DEP), $(eval $(call dep_rule,$(dep),)))
$(DIRS_CLEAN) ::
+$(MK) -C $(@:.clean=) clean
$(DIRS_INST) ::
+$(MK) -C $(@:.inst=) install _HB_BLD=yes
$(DIRS_MK) ::
+$(MK) -C $(@)
endif
ifneq ($(HB_POSTINST),)
install::
+$(HB_POSTINST)
endif
endif
endif