summaryrefslogtreecommitdiff
path: root/dmake/unix
diff options
context:
space:
mode:
authorOliver Bolte <obo@openoffice.org>2007-06-12 05:09:05 +0000
committerOliver Bolte <obo@openoffice.org>2007-06-12 05:09:05 +0000
commit7cd26650ff78fc5c54fdf923ed35e339784888d8 (patch)
tree056ab84e0c0b8f38e62096b1283c5f424245b0d4 /dmake/unix
parentb17b110bb681358920e946960a567bdac299e4ee (diff)
INTEGRATION: CWS dmake48 (1.4.40); FILE MERGED
2007/03/14 00:51:37 vq 1.4.40.1: #i10000# No real change, only comments were added or modified.
Diffstat (limited to 'dmake/unix')
-rw-r--r--dmake/unix/rmprq.c29
1 files changed, 26 insertions, 3 deletions
diff --git a/dmake/unix/rmprq.c b/dmake/unix/rmprq.c
index 8bec34926afc..0144e18c2427 100644
--- a/dmake/unix/rmprq.c
+++ b/dmake/unix/rmprq.c
@@ -1,6 +1,6 @@
/* $RCSfile: rmprq.c,v $
--- $Revision: 1.4 $
--- last change: $Author: rt $ $Date: 2004-09-08 16:09:12 $
+-- $Revision: 1.5 $
+-- last change: $Author: obo $ $Date: 2007-06-12 06:09:05 $
--
-- SYNOPSIS
-- Remove prerequisites code.
@@ -30,7 +30,23 @@
#include "extern.h"
PUBLIC void
-Remove_prq( tcp )
+Remove_prq( tcp )/*
+===================
+ Removable targets (ie. an inferred intermediate node) are removed
+ by this function by running Make() on the special target .REMOVE
+ (pointed to by tcp).
+ As this function can be called from within another Make() (for example
+ like this:
+ Make()->Exec_commands()->Do_cmnd()->runargv()->..->_finished_child()
+ ->Update_time_stamp()->Remove_prq() )
+ it is necessary to store and restore the dynamic macros when Make()
+ is finished.
+
+ FIXME: Another potential problem is that while building .REMOVE another
+ previously started target finishes and from _finished_child() calls
+ Remove_prq() again. This will delete the dynamic macros and possibly
+ clear/reset the prerequisites of the previous .REMOVE target.
+*/
CELLPTR tcp;
{
static LINKPTR rlp = NIL(LINK);
@@ -39,10 +55,17 @@ CELLPTR tcp;
char *m_at_s, *m_g_s, *m_q_s, *m_b_s, *m_l_s, *m_bb_s, *m_up_s;
LINKPTR tlp;
+ /* Unset F_MADE and F_VISITED. */
tcp->ce_flag &= ~(F_MADE|F_VISITED);
tcp->ce_time = 0L;
+ /* The idea seems to be to create a target that is used to remove
+ * intermediate prerequisites. Why add something to the "CeMeToo(tlp)"
+ * list? I don't understand this yet.
+ * FIXME! Either comment on what is going on or fix the code. */
for( tlp=rlp; tlp !=NIL(LINK); tlp=tlp->cl_next )
+ /* Find first target that has F_VISITED not set or F_MADE set,
+ * i.e. it is not currently made or already done. */
if( (tlp->cl_prq->ce_flag & (F_VISITED|F_MADE)) != F_VISITED )
break;