Question WHY is gnu make does not stop on error on rule

aotto <[email protected]>
Newsgroups gmane.comp.sysutils.automake.general,gmane.comp.gnu.make.general
Message-ID <[email protected]>
Hi,

I use "automake" to setup a "gnu make" build-environment and I have the following rule to create a special file:

Problem: the "$(c_Meta)" failed with error but MAKE continue… why??

=====================================================

csmkkernel_meta  :=  $(srcdir)/.LibMkKernel_cs.meta
csmqmsgque_meta  :=  $(srcdir)/.LibMqMsgque_cs.meta

$(csmkkernel_meta): LibMkKernel_cs.h ../libmkkernel/inline_mk.h $(libmkkernel_meta)
$(csmqmsgque_meta): LibMqMsgque_cs.h ../libmqmsgque/inline_mq.h $(libmqmsgque_meta)
$(cslcconfig_meta): LibLcConfig_cs.h ../liblcconfig/inline_lc.h $(liblcconfig_meta)

$(csmkkernel_meta) $(csmqmsgque_meta) $(cslcconfig_meta):
    @$(call green,$(c_Meta) -meta $@ -header $<)
    @$(c_Meta) -meta $@ -header $< && touch $@

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

that create the following debugging output:

=====================================================

Considering target file 'MqS.mq.cs'.
File 'MqS.mq.cs' does not exist.
Considering target file '.../NHI1/theLink/csmsgque/.LibMqMsgque_cs.meta'.
  File '.../NHI1/theLink/csmsgque/.LibMqMsgque_cs.meta' does not exist.
   Considering target file 'LibMqMsgque_cs.h'.
    Looking for an implicit rule for 'LibMqMsgque_cs.h'.
    No implicit rule found for 'LibMqMsgque_cs.h'.
    Finished prerequisites of target file 'LibMqMsgque_cs.h'.
   No need to remake target 'LibMqMsgque_cs.h'; using VPATH name '.../NHI1/theLink/csmsgque/LibMqMsgque_cs.h'.
   Considering target file '../libmqmsgque/inline_mq.h'.
    Looking for an implicit rule for '../libmqmsgque/inline_mq.h'.
    No implicit rule found for '../libmqmsgque/inline_mq.h'.
    Finished prerequisites of target file '../libmqmsgque/inline_mq.h'.
   No need to remake target '../libmqmsgque/inline_mq.h'; using VPATH name '.../NHI1/theLink/csmsgque/../libmqmsgque/inline_mq.h'.
  Finished prerequisites of target file '.../NHI1/theLink/csmsgque/.LibMqMsgque_cs.meta'.
Must remake target '.../NHI1/theLink/csmsgque/.LibMqMsgque_cs.meta'.
Makefile:959: update target '.../NHI1/theLink/csmsgque/.LibMqMsgque_cs.meta' due to: .../NHI1/theLink/csmsgque/LibMqMsgque_cs.h 
.../NHI1/theLink/csmsgque/../libmqmsgque/inline_mq.h
echo "  make: .../NHI1/theLink/csmsgque/.LibMqMsgque_cs.meta -header.../NHI1/theLink/csmsgque/LibMqMsgque_cs.h"
Putting child 0x55901938a2b0 (.../NHI1/theLink/csmsgque/.LibMqMsgque_cs.meta) PID 26075 on the chain.
Live child 0x55901938a2b0 (.../NHI1/theLink/csmsgque/.LibMqMsgque_cs.meta) PID 26075
make: .../NHI1/sbin/meta/c_Meta.tcl -meta .../NHI1/theLink/csmsgque/.LibMqMsgque_cs.meta -header 
.../NHI1/theLink/csmsgque/LibMqMsgque_cs.h
Reaping winning child 0x55901938a2b0 PID 26075
.../NHI1/sbin/meta/c_Meta.tcl -meta .../NHI1/theLink/csmsgque/.LibMqMsgque_cs.meta -header 
.../NHI1/theLink/csmsgque/LibMqMsgque_cs.h && touch .../NHI1/theLink/csmsgque/.LibMqMsgque
_cs.meta
Live child 0x55901938a2b0 (.../NHI1/theLink/csmsgque/.LibMqMsgque_cs.meta) PID 26076

...
pInit                                    -> api<Meta>, imeta<.../NHI1/theLink/csmsgque/.LibMqMsgque_cs.meta>,
ProcessParseC                            -> inf<.../NHI1/theLink/csmsgque/LibMqMsgque_cs.h>, argv<>,
ProcessParseC                            -> list<incdir>, list<cppargs>, list<defs>,
....
ProcessParseC                            -> ERROR: preprocessor failed -> large<cmd>, large<buf>,
large = cmd
   | cpp -P -x c -DPARSE_C_HEADER_TO_META -D_DEBUG -D__has_parser__ -D__thread= -Dregister= -Dextern= -Dsigned= 
-DLONG_MAX=2147483647L -DMETA_HAS_THREAD=1 -DMETA_HAS_PTHREAD=1 -DMETA_HAVE_LIBCONFIG=1 -include msgque_config.h -I.../NHI
1/theLink/csmsgque -I.../NHI1/theLink/libmkkernel -I/dev/shm/dev1usr/Main/x86_64-suse-linux-gnu/debug -Dtypedef=§typedef§ 
-Dstruct=§struct§ -Dunion=§union§ -Denum=§enum§ -Dconst=§const§ -Dunsigned=§unsigned§ .../NHI1/
theLink/csmsgque/LibMqMsgque_cs.h
large = buf
   | .../NHI1/theLink/csmsgque/LibMqMsgque_cs.h:12:10: fatal error: msgque_mq.h: No such file or directory
   |    12 | #include "msgque_mq.h"
   |       |          ^~~~~~~~~~~~~
   | compilation terminated.
   | child process exited abnormally
   while executing
"Error "preprocessor failed" cmd buf"
   (procedure "ProcessParseC" line 38)
   invoked from within
"ProcessParseC"
   ("uplevel" body line 33)
   invoked from within
"uplevel $script"
   (procedure "pMain" line 19)
   invoked from within
"pMain {
interp alias "" pWRIT "" pWRIT_stdout

##
## ==========================================================================================..."
   (file ".../NHI1/sbin/meta/c_Meta.tcl" line 1441)
Reaping losing child 0x55901938a2b0 PID 26076
Removing child 0x55901938a2b0 PID 26076 from chain.
Successfully remade target file '.../NHI1/theLink/csmsgque/.LibMqMsgque_cs.meta'.

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

analyze:

1. the "c_Meta.tcl ..." return with errocode
2. Reaping losing child 0x55901938a2b0 PID 26076
3. Removing child 0x55901938a2b0 PID 26076 from chain.
4. !! Successfully remade target file '.../NHI1/theLink/csmsgque/.LibMqMsgque_cs.meta'.
5. file: .../NHI1/theLink/csmsgque/.LibMqMsgque_cs.meta does NOT exists
6. the "touch" at the end only runs on success
7. the "@$(call green,$(c_Meta) -meta $@ -header $<)" only create fancy debugging output


sincerely

ao
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.