summaryrefslogtreecommitdiff
path: root/tools/build/src/engine
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2015-04-08 03:09:47 +0000
committer <>2015-05-05 14:37:32 +0000
commitf2541bb90af059680aa7036f315f052175999355 (patch)
treea5b214744b256f07e1dc2bd7273035a7808c659f /tools/build/src/engine
parented232fdd34968697a68783b3195b1da4226915b5 (diff)
downloadboost-tarball-master.tar.gz
Imported from /home/lorry/working-area/delta_boost-tarball/boost_1_58_0.tar.bz2.HEADboost_1_58_0master
Diffstat (limited to 'tools/build/src/engine')
-rw-r--r--tools/build/src/engine/Jambase12
-rw-r--r--tools/build/src/engine/boehm_gc/dyn_load.c9
-rw-r--r--tools/build/src/engine/boehm_gc/include/gc.h2
-rw-r--r--tools/build/src/engine/boehm_gc/include/gc_config_macros.h5
-rw-r--r--tools/build/src/engine/boehm_gc/include/private/gcconfig.h11
-rw-r--r--tools/build/src/engine/boehm_gc/os_dep.c15
-rw-r--r--tools/build/src/engine/build.bat1
-rwxr-xr-xtools/build/src/engine/build.sh37
-rw-r--r--tools/build/src/engine/builtins.c5
-rw-r--r--tools/build/src/engine/execunix.c44
-rw-r--r--tools/build/src/engine/fileunix.c5
-rw-r--r--tools/build/src/engine/function.c11
-rw-r--r--tools/build/src/engine/jam.c3
-rw-r--r--tools/build/src/engine/jam.h8
-rw-r--r--tools/build/src/engine/jambase.c12
-rw-r--r--tools/build/src/engine/make1.c2
-rw-r--r--tools/build/src/engine/modules/order.c2
-rw-r--r--tools/build/src/engine/rules.c1
-rw-r--r--tools/build/src/engine/rules.h26
19 files changed, 166 insertions, 45 deletions
diff --git a/tools/build/src/engine/Jambase b/tools/build/src/engine/Jambase
index 94f8fbde5..6e7b7a2be 100644
--- a/tools/build/src/engine/Jambase
+++ b/tools/build/src/engine/Jambase
@@ -855,6 +855,18 @@ else if $(OS) = BEOS
NOARSCAN ?= true ;
STDHDRS ?= /boot/develop/headers/posix ;
}
+else if $(OS) = HAIKU
+{
+ BINDIR ?= /boot/system/non-packaged/bin ;
+ CC ?= gcc ;
+ C++ ?= $(CC) ;
+ FORTRAN ?= "" ;
+ LIBDIR ?= /boot/system/non-packaged/lib ;
+ LINK ?= gcc ;
+ LINKLIBS ?= -lnetwork ;
+ NOARSCAN ?= true ;
+ STDHDRS ?= /boot/system/develop/headers/posix ;
+}
else if $(UNIX)
{
switch $(OS)
diff --git a/tools/build/src/engine/boehm_gc/dyn_load.c b/tools/build/src/engine/boehm_gc/dyn_load.c
index 36968ba5d..eed9253e3 100644
--- a/tools/build/src/engine/boehm_gc/dyn_load.c
+++ b/tools/build/src/engine/boehm_gc/dyn_load.c
@@ -64,7 +64,7 @@ static int (*GC_has_static_roots)(const char *, void *, size_t);
!defined(AIX) && !defined(SCO_ELF) && !defined(DGUX) && \
!(defined(FREEBSD) && defined(__ELF__)) && \
!(defined(NETBSD) && defined(__ELF__)) && !defined(HURD) && \
- !defined(DARWIN) && !defined(CYGWIN32)
+ !defined(DARWIN) && !defined(CYGWIN32) && !defined(HAIKU)
--> We only know how to find data segments of dynamic libraries for the
--> above. Additional SVR4 variants might not be too
--> hard to add.
@@ -82,6 +82,10 @@ static int (*GC_has_static_roots)(const char *, void *, size_t);
# define ELFSIZE ARCH_ELFSIZE
#endif
+#if defined(HAIKU)
+// purposefully empty
+#endif
+
#if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \
(defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \
(defined(NETBSD) && defined(__ELF__)) || defined(HURD)
@@ -216,7 +220,8 @@ void GC_register_dynamic_libraries()
#if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \
(defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \
- (defined(NETBSD) && defined(__ELF__)) || defined(HURD)
+ (defined(NETBSD) && defined(__ELF__)) || defined(HURD) \
+ defined(HAIKU)
#ifdef USE_PROC_FOR_LIBRARIES
diff --git a/tools/build/src/engine/boehm_gc/include/gc.h b/tools/build/src/engine/boehm_gc/include/gc.h
index cc950888f..590a868d6 100644
--- a/tools/build/src/engine/boehm_gc/include/gc.h
+++ b/tools/build/src/engine/boehm_gc/include/gc.h
@@ -494,7 +494,7 @@ GC_API void * GC_malloc_atomic_ignore_off_page(size_t lb);
/* of compilers. */
/* This may also be desirable if it is possible but expensive to */
/* retrieve the call chain. */
-#if (defined(__linux__) || defined(__NetBSD__) || defined(__OpenBSD__) \
+#if (defined(__linux__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__HAIKU__) \
|| defined(__FreeBSD__) || defined(__DragonFly__)) & !defined(GC_CAN_SAVE_CALL_STACKS)
# define GC_ADD_CALLER
# if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
diff --git a/tools/build/src/engine/boehm_gc/include/gc_config_macros.h b/tools/build/src/engine/boehm_gc/include/gc_config_macros.h
index 66abf0b1e..762162a34 100644
--- a/tools/build/src/engine/boehm_gc/include/gc_config_macros.h
+++ b/tools/build/src/engine/boehm_gc/include/gc_config_macros.h
@@ -45,7 +45,8 @@
|| defined(GC_AIX_THREADS) \
|| defined(GC_LINUX_THREADS) \
|| defined(GC_NETBSD_THREADS) \
- || defined(GC_GNU_THREADS))
+ || defined(GC_GNU_THREADS) \
+ || defined(GC_HAIKU_THREADS))
# define _REENTRANT
/* Better late than never. This fails if system headers that */
/* depend on this were previously included. */
@@ -65,7 +66,7 @@
defined(GC_DGUX386_THREADS) || defined(GC_DARWIN_THREADS) || \
defined(GC_AIX_THREADS) || defined(GC_NETBSD_THREADS) || \
(defined(GC_WIN32_THREADS) && defined(__CYGWIN32__)) || \
- defined(GC_GNU_THREADS)
+ defined(GC_GNU_THREADS) || defined(GC_HAIKU_THREADS)
# define GC_PTHREADS
# endif
diff --git a/tools/build/src/engine/boehm_gc/include/private/gcconfig.h b/tools/build/src/engine/boehm_gc/include/private/gcconfig.h
index 20f35bc3a..61cf9eacb 100644
--- a/tools/build/src/engine/boehm_gc/include/private/gcconfig.h
+++ b/tools/build/src/engine/boehm_gc/include/private/gcconfig.h
@@ -215,6 +215,10 @@
# define BEOS
# define mach_type_known
# endif
+# if defined(__HAIKU__) && defined(_X86_)
+# define I386
+# define HAIKU
+# define mach_type_known
# if defined(LINUX) && (defined(i386) || defined(__i386__))
# define I386
# define mach_type_known
@@ -1014,6 +1018,13 @@
extern int etext[];
# define DATASTART ((ptr_t)((((word) (etext)) + 0xfff) & ~0xfff))
# endif
+# ifdef HAIKU
+# define OS_TYPE "HAIKU"
+# include <OS.h>
+# define GETPAGESIZE() B_PAGE_SIZE
+# extern int etext[];
+# define DATASTART ((ptr_t)((((word) (etext)) + 0xfff) & ~0xfff))
+# endif
# ifdef SOLARIS
# define OS_TYPE "SOLARIS"
extern int _etext[], _end[];
diff --git a/tools/build/src/engine/boehm_gc/os_dep.c b/tools/build/src/engine/boehm_gc/os_dep.c
index bb8fa08f6..2dd087fbe 100644
--- a/tools/build/src/engine/boehm_gc/os_dep.c
+++ b/tools/build/src/engine/boehm_gc/os_dep.c
@@ -777,6 +777,17 @@ ptr_t GC_get_main_stack_base(void){
# endif /* BEOS */
+# ifdef HAIKU
+# include <OS.h>
+ptr_t GC_get_main_stack_base(void)
+{
+ thread_info th;
+ get_thread_info(find_thread(NULL), &th);
+ return th.stack_end;
+}
+# endif
+
+
# ifdef OS2
ptr_t GC_get_main_stack_base(void)
@@ -1097,7 +1108,7 @@ ptr_t GC_get_main_stack_base(void)
#if !defined(BEOS) && !defined(AMIGA) && !defined(MSWIN32) \
&& !defined(MSWINCE) && !defined(OS2) && !defined(NOSYS) && !defined(ECOS) \
- && !defined(CYGWIN32)
+ && !defined(CYGWIN32) && !defined(HAIKU)
ptr_t GC_get_main_stack_base(void)
{
@@ -1154,7 +1165,7 @@ ptr_t GC_get_main_stack_base(void)
# endif /* STACKBOTTOM */
}
-# endif /* ! AMIGA, !OS 2, ! MS Windows, !BEOS, !NOSYS, !ECOS */
+# endif /* ! AMIGA, !OS 2, ! MS Windows, !BEOS, !NOSYS, !ECOS, !HAIKU */
#if defined(GC_LINUX_THREADS) && !defined(HAVE_GET_STACK_BASE)
diff --git a/tools/build/src/engine/build.bat b/tools/build/src/engine/build.bat
index c96e508e7..0fdb804b6 100644
--- a/tools/build/src/engine/build.bat
+++ b/tools/build/src/engine/build.bat
@@ -613,3 +613,4 @@ goto Set_Args
:Skip_Jam
:Finish
+exit /b %ERRORLEVEL%
diff --git a/tools/build/src/engine/build.sh b/tools/build/src/engine/build.sh
index 470ea3c07..6dbc70633 100755
--- a/tools/build/src/engine/build.sh
+++ b/tools/build/src/engine/build.sh
@@ -142,16 +142,27 @@ case $BOOST_JAM_TOOLSET in
;;
intel-linux)
- if test -r /opt/intel/cc/9.0/bin/iccvars.sh ; then
- BOOST_JAM_TOOLSET_ROOT=/opt/intel/cc/9.0/
- elif test -r /opt/intel_cc_80/bin/iccvars.sh ; then
- BOOST_JAM_TOOLSET_ROOT=/opt/intel_cc_80/
- elif test -r /opt/intel/compiler70/ia32/bin/iccvars.sh ; then
- BOOST_JAM_TOOLSET_ROOT=/opt/intel/compiler70/ia32/
- elif test -r /opt/intel/compiler60/ia32/bin/iccvars.sh ; then
- BOOST_JAM_TOOLSET_ROOT=/opt/intel/compiler60/ia32/
- elif test -r /opt/intel/compiler50/ia32/bin/iccvars.sh ; then
- BOOST_JAM_TOOLSET_ROOT=/opt/intel/compiler50/ia32/
+ which icc >/dev/null 2>&1
+ if test $? ; then
+ BOOST_JAM_CC=$(which icc)
+ echo "Found $BOOST_JAM_CC in environment"
+ BOOST_JAM_TOOLSET_ROOT=$(echo $BOOST_JAM_CC | sed -e 's/bin.*\/icc//')
+ # probably the most widespread
+ ARCH=intel64
+ else
+ echo "No intel compiler in current path"
+ echo "Look in a few old place for legacy reason"
+ if test -r /opt/intel/cc/9.0/bin/iccvars.sh ; then
+ BOOST_JAM_TOOLSET_ROOT=/opt/intel/cc/9.0/
+ elif test -r /opt/intel_cc_80/bin/iccvars.sh ; then
+ BOOST_JAM_TOOLSET_ROOT=/opt/intel_cc_80/
+ elif test -r /opt/intel/compiler70/ia32/bin/iccvars.sh ; then
+ BOOST_JAM_TOOLSET_ROOT=/opt/intel/compiler70/ia32/
+ elif test -r /opt/intel/compiler60/ia32/bin/iccvars.sh ; then
+ BOOST_JAM_TOOLSET_ROOT=/opt/intel/compiler60/ia32/
+ elif test -r /opt/intel/compiler50/ia32/bin/iccvars.sh ; then
+ BOOST_JAM_TOOLSET_ROOT=/opt/intel/compiler50/ia32/
+ fi
fi
if test -r ${BOOST_JAM_TOOLSET_ROOT}bin/iccvars.sh ; then
# iccvars does not change LD_RUN_PATH. We adjust LD_RUN_PATH here in
@@ -164,9 +175,11 @@ case $BOOST_JAM_TOOLSET in
LD_RUN_PATH="${BOOST_JAM_TOOLSET_ROOT}lib:${LD_RUN_PATH}"
fi
export LD_RUN_PATH
- . ${BOOST_JAM_TOOLSET_ROOT}bin/iccvars.sh
+ . ${BOOST_JAM_TOOLSET_ROOT}bin/iccvars.sh $ARCH
+ fi
+ if test -z "$BOOST_JAM_CC" ; then
+ BOOST_JAM_CC=icc
fi
- BOOST_JAM_CC=icc
;;
vacpp)
diff --git a/tools/build/src/engine/builtins.c b/tools/build/src/engine/builtins.c
index daa73db9a..162c3d295 100644
--- a/tools/build/src/engine/builtins.c
+++ b/tools/build/src/engine/builtins.c
@@ -759,8 +759,9 @@ static int has_wildcards( char const * const str )
static LIST * append_if_exists( LIST * list, OBJECT * file )
{
- return file_query( file )
- ? list_push_back( list, object_copy( file ) )
+ file_info_t * info = file_query( file );
+ return info
+ ? list_push_back( list, object_copy( info->name ) )
: list ;
}
diff --git a/tools/build/src/engine/execunix.c b/tools/build/src/engine/execunix.c
index 965e58011..297c00377 100644
--- a/tools/build/src/engine/execunix.c
+++ b/tools/build/src/engine/execunix.c
@@ -137,6 +137,9 @@ void exec_cmd
LIST * shell
)
{
+ struct sigaction ignore, saveintr, savequit;
+ sigset_t chldmask, savemask;
+
int const slot = get_free_cmdtab_slot();
int out[ 2 ];
int err[ 2 ];
@@ -203,6 +206,21 @@ void exec_cmd
if ( globs.pipe_action )
fcntl( err[ EXECCMD_PIPE_READ ], F_SETFD, FD_CLOEXEC );
+ /* ignore SIGINT and SIGQUIT */
+ ignore.sa_handler = SIG_IGN;
+ sigemptyset(&ignore.sa_mask);
+ ignore.sa_flags = 0;
+ if (sigaction(SIGINT, &ignore, &saveintr) < 0)
+ return;
+ if (sigaction(SIGQUIT, &ignore, &savequit) < 0)
+ return;
+
+ /* block SIGCHLD */
+ sigemptyset(&chldmask);
+ sigaddset(&chldmask, SIGCHLD);
+ if (sigprocmask(SIG_BLOCK, &chldmask, &savemask) < 0)
+ return;
+
if ( ( cmdtab[ slot ].pid = vfork() ) == -1 )
{
perror( "vfork" );
@@ -216,6 +234,11 @@ void exec_cmd
/*****************/
int const pid = getpid();
+ /* restore previous signals */
+ sigaction(SIGINT, &saveintr, NULL);
+ sigaction(SIGQUIT, &savequit, NULL);
+ sigprocmask(SIG_SETMASK, &savemask, NULL);
+
/* Redirect stdout and stderr to pipes inherited from the parent. */
dup2( out[ EXECCMD_PIPE_WRITE ], STDOUT_FILENO );
dup2( globs.pipe_action ? err[ EXECCMD_PIPE_WRITE ] :
@@ -236,7 +259,10 @@ void exec_cmd
r_limit.rlim_max = globs.timeout;
setrlimit( RLIMIT_CPU, &r_limit );
}
- setpgid( pid, pid );
+ if (0 != setpgid( pid, pid )) {
+ perror("setpgid(child)");
+ /* exit( EXITBAD ); */
+ }
execvp( argv[ 0 ], (char * *)argv );
perror( "execvp" );
_exit( 127 );
@@ -245,7 +271,9 @@ void exec_cmd
/******************/
/* Parent process */
/******************/
- setpgid( cmdtab[ slot ].pid, cmdtab[ slot ].pid );
+
+ /* redundant call, ignore return value */
+ setpgid(cmdtab[ slot ].pid, cmdtab[ slot ].pid);
/* Parent not need the write pipe ends used by the child. */
close( out[ EXECCMD_PIPE_WRITE ] );
@@ -281,6 +309,11 @@ void exec_cmd
/* Save input data into the selected running commands table slot. */
cmdtab[ slot ].func = func;
cmdtab[ slot ].closure = closure;
+
+ /* restore previous signals */
+ sigaction(SIGINT, &saveintr, NULL);
+ sigaction(SIGQUIT, &savequit, NULL);
+ sigprocmask(SIG_SETMASK, &savemask, NULL);
}
#undef EXECCMD_PIPE_READ
@@ -448,10 +481,17 @@ void exec_wait()
/* select() will wait for I/O on a descriptor, a signal, or timeout. */
{
+ /* disable child termination signals while in select */
int ret;
+ sigset_t sigmask;
+ sigemptyset(&sigmask);
+ sigaddset(&sigmask, SIGCHLD);
+ sigprocmask(SIG_BLOCK, &sigmask, NULL);
while ( ( ret = select( fd_max + 1, &fds, 0, 0, ptv ) ) == -1 )
if ( errno != EINTR )
break;
+ /* restore original signal mask by unblocking sigchld */
+ sigprocmask(SIG_UNBLOCK, &sigmask, NULL);
if ( ret <= 0 )
continue;
}
diff --git a/tools/build/src/engine/fileunix.c b/tools/build/src/engine/fileunix.c
index bff3a42f5..e8ea51507 100644
--- a/tools/build/src/engine/fileunix.c
+++ b/tools/build/src/engine/fileunix.c
@@ -80,7 +80,10 @@ struct ar_hdr /* archive file member header - printable ascii */
};
#endif
-#if defined( OS_QNX ) || defined( OS_BEOS ) || defined( OS_MPEIX )
+#if defined( OS_QNX ) || \
+ defined( OS_BEOS ) || \
+ defined( OS_HAIKU ) || \
+ defined( OS_MPEIX )
# define NO_AR
# define HAVE_AR
#endif
diff --git a/tools/build/src/engine/function.c b/tools/build/src/engine/function.c
index 690855e14..d9ad754e4 100644
--- a/tools/build/src/engine/function.c
+++ b/tools/build/src/engine/function.c
@@ -228,9 +228,18 @@ STACK * stack_global()
return &result;
}
+struct list_alignment_helper
+{
+ char ch;
+ LIST * l;
+};
+
+#define LISTPTR_ALIGN_BASE ( sizeof( struct list_alignment_helper ) - sizeof( LIST * ) )
+#define LISTPTR_ALIGN ( ( LISTPTR_ALIGN_BASE > sizeof( LIST * ) ) ? sizeof( LIST * ) : LISTPTR_ALIGN_BASE )
+
static void check_alignment( STACK * s )
{
- assert( (size_t)s->data % sizeof( LIST * ) == 0 );
+ assert( (size_t)s->data % LISTPTR_ALIGN == 0 );
}
void * stack_allocate( STACK * s, int size )
diff --git a/tools/build/src/engine/jam.c b/tools/build/src/engine/jam.c
index 1c80eec50..890d7672c 100644
--- a/tools/build/src/engine/jam.c
+++ b/tools/build/src/engine/jam.c
@@ -627,7 +627,8 @@ char *executable_path( char const * argv0 )
# include <stdlib.h>
char * executable_path( char const * argv0 )
{
- return strdup( getexecname() );
+ const char * execname = getexecname();
+ return execname ? strdup( execname ) : NULL;
}
#elif defined(__FreeBSD__)
# include <sys/sysctl.h>
diff --git a/tools/build/src/engine/jam.h b/tools/build/src/engine/jam.h
index 497a5bfb1..2895906af 100644
--- a/tools/build/src/engine/jam.h
+++ b/tools/build/src/engine/jam.h
@@ -154,6 +154,11 @@
#define OSMINOR "OS=HPUX"
#define OS_HPUX
#endif
+#ifdef __HAIKU__
+ #define unix
+ #define OSMINOR "OS=HAIKU"
+ #define OS_HAIKU
+#endif
#ifdef __OPENNT
#define unix
#define OSMINOR "OS=INTERIX"
@@ -370,7 +375,8 @@
#define OSPLAT "OSPLAT=MIPS"
#endif
-#ifdef __arm__
+#if defined( __arm__ ) || \
+ defined( __aarch64__ )
#define OSPLAT "OSPLAT=ARM"
#endif
diff --git a/tools/build/src/engine/jambase.c b/tools/build/src/engine/jambase.c
index b15282bc3..323ba1564 100644
--- a/tools/build/src/engine/jambase.c
+++ b/tools/build/src/engine/jambase.c
@@ -560,6 +560,18 @@ char *jambase[] = {
"NOARSCAN ?= true ;\n",
"STDHDRS ?= /boot/develop/headers/posix ;\n",
"}\n",
+"else if $(OS) = HAIKU\n",
+"{\n",
+"BINDIR ?= /boot/system/non-packaged/bin ;\n",
+"CC ?= gcc ;\n",
+"C++ ?= $(CC) ;\n",
+"FORTRAN ?= \"\" ;\n",
+"LIBDIR ?= /boot/system/non-packaged/lib ;\n",
+"LINK ?= gcc ;\n",
+"LINKLIBS ?= -lnetwork ;\n",
+"NOARSCAN ?= true ;\n",
+"STDHDRS ?= /boot/system/develop/headers/posix ;\n",
+"}\n",
"else if $(UNIX)\n",
"{\n",
"switch $(OS)\n",
diff --git a/tools/build/src/engine/make1.c b/tools/build/src/engine/make1.c
index 5a96dc4e5..390b4ccbe 100644
--- a/tools/build/src/engine/make1.c
+++ b/tools/build/src/engine/make1.c
@@ -593,8 +593,6 @@ static void make1c( state const * const pState )
TARGET * saved_includes;
SETTINGS * s;
- t->rescanned = 1;
-
/* Clean current includes. */
saved_includes = t->includes;
t->includes = 0;
diff --git a/tools/build/src/engine/modules/order.c b/tools/build/src/engine/modules/order.c
index 3a83d3895..467322da0 100644
--- a/tools/build/src/engine/modules/order.c
+++ b/tools/build/src/engine/modules/order.c
@@ -77,7 +77,7 @@ void topological_sort( int * * graph, int num_vertices, int * result )
for ( i = 0; i < num_vertices; ++i )
colors[ i ] = white;
- for ( i = 0; i < num_vertices; ++i )
+ for ( i = num_vertices - 1; i >= 0; --i )
if ( colors[ i ] == white )
do_ts( graph, i, colors, &result );
diff --git a/tools/build/src/engine/rules.c b/tools/build/src/engine/rules.c
index 7947c5507..eb35aa6df 100644
--- a/tools/build/src/engine/rules.c
+++ b/tools/build/src/engine/rules.c
@@ -63,7 +63,6 @@ static TARGET * get_target_includes( TARGET * const t )
i->name = object_copy( t->name );
i->boundname = object_copy( i->name );
i->flags |= T_FLAG_NOTFILE | T_FLAG_INTERNAL;
- i->original_target = t;
t->includes = i;
}
return t->includes;
diff --git a/tools/build/src/engine/rules.h b/tools/build/src/engine/rules.h
index f3a020bb8..d118b3149 100644
--- a/tools/build/src/engine/rules.h
+++ b/tools/build/src/engine/rules.h
@@ -125,6 +125,16 @@ struct _target
ACTIONS * actions; /* rules to execute, if any */
SETTINGS * settings; /* variables to define */
+ TARGETS * depends; /* dependencies */
+ TARGETS * dependants; /* the inverse of dependencies */
+ TARGETS * rebuilds; /* targets that should be force-rebuilt
+ * whenever this one is
+ */
+ TARGET * includes; /* internal includes node */
+
+ timestamp time; /* update time */
+ timestamp leaf; /* update time of leaf sources */
+
short flags; /* status info */
#define T_FLAG_TEMP 0x0001 /* TEMPORARY applied */
@@ -164,18 +174,6 @@ struct _target
#define T_BIND_PARENTS 2 /* using parent's timestamp */
#define T_BIND_EXISTS 3 /* real file, timestamp valid */
- TARGETS * depends; /* dependencies */
- TARGETS * dependants; /* the inverse of dependencies */
- TARGETS * rebuilds; /* targets that should be force-rebuilt
- * whenever this one is
- */
- TARGET * includes; /* internal includes node */
- TARGET * original_target; /* original_target->includes = this */
- char rescanned;
-
- timestamp time; /* update time */
- timestamp leaf; /* update time of leaf sources */
-
char fate; /* make0()'s diagnosis */
#define T_FATE_INIT 0 /* nothing done to target */
@@ -212,12 +210,12 @@ struct _target
#define T_MAKE_SEMAPHORE 5 /* Special target type for semaphores */
#endif
+ char status; /* exec_cmd() result */
+
#ifdef OPT_SEMAPHORE
TARGET * semaphore; /* used in serialization */
#endif
- char status; /* exec_cmd() result */
-
int asynccnt; /* child deps outstanding */
TARGETS * parents; /* used by make1() for completion */
TARGET * scc_root; /* used by make to resolve cyclic includes