I see at least couple of "if" statements without matching endif
(higlighted). These could be the culprits.

I did not run this but this is by inspection.


$$(if $$(filter $$(MAKE_VERSION),3.81),,1)
$$(call debug,WRONG_MAKE_VERSION = $$(WRONG_MAKE_VERSION))
$$(if $$(filter 1,$$(WRONG_MAKE_VERSION)),$$(warning This build system
requires GNU make 3.81 --should get PASSED))
endef

And btw, if all you are trying to is to prevent user from proceeding (and
also  warning him along the way) unless he uses correct version of make then
why not use something simple as follows. Lot easier to maintain and debug

------
define MAKE_VERSION_ERROR_MSG

Error: This Makefile uses features available in GNU Make 3.80 onwards.
Please use GNU Make version 3.80 or higher
endef

#
# Error out if the Make Version is lower than 3.80
# Since we use order-only pre requisites avilable from GNU Make 3.80 or
higher
#
ifneq (3.80,$(firstword $(sort $(MAKE_VERSION) 3.80)))
$(error ${MAKE_VERSION_ERROR_MSG})
endif
----------


On 2/13/07, David Greene <[EMAIL PROTECTED]> wrote:
I'm trying to construct a system that reinvokes make 3.81 if
make 3.80 is initially used to attempt a build.  I've attached
a testcase showing the general structure.

Make 3.80 complains about a missing endif.  Why?

                                 -Dave

define invoke_correct_make_impl

$(warning here 2.1)
.SUFFIXES:

.PHONY: invoke_correct_make
invoke_correct_make_rule:
        +echo PASSED

Makefile : ;
%.mk :: ;

% :: invoke_correct_make_rule ; :
$(warning here 2.2)

endef

invoke_correct_make = $(warning here 2.0) $(eval $(call
invoke_correct_make_impl)) $(warning here 2.3)

$(check_make_version)

$(warning here 1)

ifeq ($(WRONG_MAKE_VERSION),1)
$(warning here 2)
$(call invoke_correct_make)
$(warning here 3)
endif

$(warning here 4)

all:
        @echo Already running GNU make 3.81


# Check make version.
define check_make_version_impl
WRONG_MAKE_VERSION := $$(if $$(filter $$(MAKE_VERSION),3.81),,1)
$$(call debug,WRONG_MAKE_VERSION = $$(WRONG_MAKE_VERSION))
$$(if $$(filter 1,$$(WRONG_MAKE_VERSION)),$$(warning This build system
requires GNU make 3.81 --should get PASSED))
endef

check_make_version = $(eval $(call check_make_version_impl))

include second.mk


include top.mk


_______________________________________________
Help-make mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-make




--
Aditya Kher
http://kher.org
_______________________________________________
Help-make mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-make

Reply via email to