mirror of
https://github.com/moses-smt/mosesdecoder.git
synced 2024-11-10 10:59:21 +03:00
476 lines
10 KiB
C
476 lines
10 KiB
C
/*
|
|
* Copyright 1993, 1995 Christopher Seiwald.
|
|
*
|
|
* This file is part of Jam - see jam.c for Copyright information.
|
|
*/
|
|
|
|
/* This file is ALSO:
|
|
* Copyright 2001-2004 David Abrahams.
|
|
* Distributed under the Boost Software License, Version 1.0.
|
|
* (See accompanying file LICENSE_1_0.txt or copy at
|
|
* http://www.boost.org/LICENSE_1_0.txt)
|
|
*/
|
|
|
|
/*
|
|
* jam.h - includes and globals for jam
|
|
*/
|
|
|
|
#ifndef JAM_H_VP_2003_08_01
|
|
#define JAM_H_VP_2003_08_01
|
|
|
|
#ifdef HAVE_PYTHON
|
|
#include <Python.h>
|
|
#endif
|
|
|
|
/* Assume popen support is available unless known otherwise. */
|
|
#define HAVE_POPEN 1
|
|
|
|
/*
|
|
* Windows NT
|
|
*/
|
|
|
|
#ifdef NT
|
|
|
|
#include <ctype.h>
|
|
#include <fcntl.h>
|
|
#include <malloc.h>
|
|
#ifndef __MWERKS__
|
|
#include <memory.h>
|
|
#endif
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <signal.h>
|
|
#include <string.h>
|
|
#include <time.h>
|
|
|
|
#define OSMAJOR "NT=true"
|
|
#define OSMINOR "OS=NT"
|
|
#define OS_NT
|
|
#define SPLITPATH ';'
|
|
#define MAXLINE (undefined__see_execnt_c) /* max chars per command line */
|
|
#define USE_EXECNT
|
|
#define PATH_DELIM '\\'
|
|
|
|
/* AS400 cross-compile from NT. */
|
|
|
|
#ifdef AS400
|
|
#undef OSMINOR
|
|
#undef OSMAJOR
|
|
#define OSMAJOR "AS400=true"
|
|
#define OSMINOR "OS=AS400"
|
|
#define OS_AS400
|
|
#endif
|
|
|
|
/* Metrowerks Standard Library on Windows. */
|
|
|
|
#ifdef __MSL__
|
|
#undef HAVE_POPEN
|
|
#endif
|
|
|
|
#endif /* #ifdef NT */
|
|
|
|
|
|
/*
|
|
* Windows MingW32
|
|
*/
|
|
|
|
#ifdef MINGW
|
|
|
|
#include <fcntl.h>
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <ctype.h>
|
|
#include <malloc.h>
|
|
#include <memory.h>
|
|
#include <signal.h>
|
|
#include <string.h>
|
|
#include <time.h>
|
|
|
|
#define OSMAJOR "MINGW=true"
|
|
#define OSMINOR "OS=MINGW"
|
|
#define OS_NT
|
|
#define SPLITPATH ';'
|
|
#define MAXLINE 996 /* max chars per command line */
|
|
#define USE_EXECUNIX
|
|
#define PATH_DELIM '\\'
|
|
|
|
#endif /* #ifdef MINGW */
|
|
|
|
|
|
/*
|
|
* God fearing UNIX.
|
|
*/
|
|
|
|
#ifndef OSMINOR
|
|
|
|
#define OSMAJOR "UNIX=true"
|
|
#define USE_EXECUNIX
|
|
#define USE_FILEUNIX
|
|
#define PATH_DELIM '/'
|
|
|
|
#ifdef _AIX
|
|
#define unix
|
|
#define MAXLINE 23552 /* 24k - 1k, max chars per command line */
|
|
#define OSMINOR "OS=AIX"
|
|
#define OS_AIX
|
|
#define NO_VFORK
|
|
#endif
|
|
#ifdef AMIGA
|
|
#define OSMINOR "OS=AMIGA"
|
|
#define OS_AMIGA
|
|
#endif
|
|
#ifdef __BEOS__
|
|
#define unix
|
|
#define OSMINOR "OS=BEOS"
|
|
#define OS_BEOS
|
|
#define NO_VFORK
|
|
#endif
|
|
#ifdef __bsdi__
|
|
#define OSMINOR "OS=BSDI"
|
|
#define OS_BSDI
|
|
#endif
|
|
#if defined (COHERENT) && defined (_I386)
|
|
#define OSMINOR "OS=COHERENT"
|
|
#define OS_COHERENT
|
|
#define NO_VFORK
|
|
#endif
|
|
#if defined(__cygwin__) || defined(__CYGWIN__)
|
|
#define OSMINOR "OS=CYGWIN"
|
|
#define OS_CYGWIN
|
|
#endif
|
|
#if defined(__FreeBSD__) && !defined(__DragonFly__)
|
|
#define OSMINOR "OS=FREEBSD"
|
|
#define OS_FREEBSD
|
|
#endif
|
|
#ifdef __DragonFly__
|
|
#define OSMINOR "OS=DRAGONFLYBSD"
|
|
#define OS_DRAGONFLYBSD
|
|
#endif
|
|
#ifdef __DGUX__
|
|
#define OSMINOR "OS=DGUX"
|
|
#define OS_DGUX
|
|
#endif
|
|
#ifdef __hpux
|
|
#define OSMINOR "OS=HPUX"
|
|
#define OS_HPUX
|
|
#endif
|
|
#ifdef __OPENNT
|
|
#define unix
|
|
#define OSMINOR "OS=INTERIX"
|
|
#define OS_INTERIX
|
|
#define NO_VFORK
|
|
#endif
|
|
#ifdef __sgi
|
|
#define OSMINOR "OS=IRIX"
|
|
#define OS_IRIX
|
|
#define NO_VFORK
|
|
#endif
|
|
#ifdef __ISC
|
|
#define OSMINOR "OS=ISC"
|
|
#define OS_ISC
|
|
#define NO_VFORK
|
|
#endif
|
|
#ifdef linux
|
|
#define OSMINOR "OS=LINUX"
|
|
#define OS_LINUX
|
|
#endif
|
|
#ifdef __Lynx__
|
|
#define OSMINOR "OS=LYNX"
|
|
#define OS_LYNX
|
|
#define NO_VFORK
|
|
#define unix
|
|
#endif
|
|
#ifdef __MACHTEN__
|
|
#define OSMINOR "OS=MACHTEN"
|
|
#define OS_MACHTEN
|
|
#endif
|
|
#ifdef mpeix
|
|
#define unix
|
|
#define OSMINOR "OS=MPEIX"
|
|
#define OS_MPEIX
|
|
#define NO_VFORK
|
|
#endif
|
|
#ifdef __MVS__
|
|
#define unix
|
|
#define OSMINOR "OS=MVS"
|
|
#define OS_MVS
|
|
#endif
|
|
#ifdef _ATT4
|
|
#define OSMINOR "OS=NCR"
|
|
#define OS_NCR
|
|
#endif
|
|
#ifdef __NetBSD__
|
|
#define unix
|
|
#define OSMINOR "OS=NETBSD"
|
|
#define OS_NETBSD
|
|
#define NO_VFORK
|
|
#endif
|
|
#ifdef __QNX__
|
|
#define unix
|
|
#ifdef __QNXNTO__
|
|
#define OSMINOR "OS=QNXNTO"
|
|
#define OS_QNXNTO
|
|
#else
|
|
#define OSMINOR "OS=QNX"
|
|
#define OS_QNX
|
|
#define NO_VFORK
|
|
#define MAXLINE 996 /* max chars per command line */
|
|
#endif
|
|
#endif
|
|
#ifdef NeXT
|
|
#ifdef __APPLE__
|
|
#define OSMINOR "OS=RHAPSODY"
|
|
#define OS_RHAPSODY
|
|
#else
|
|
#define OSMINOR "OS=NEXT"
|
|
#define OS_NEXT
|
|
#endif
|
|
#endif
|
|
#ifdef __APPLE__
|
|
#define unix
|
|
#define OSMINOR "OS=MACOSX"
|
|
#define OS_MACOSX
|
|
#endif
|
|
#ifdef __osf__
|
|
#ifndef unix
|
|
#define unix
|
|
#endif
|
|
#define OSMINOR "OS=OSF"
|
|
#define OS_OSF
|
|
#endif
|
|
#ifdef _SEQUENT_
|
|
#define OSMINOR "OS=PTX"
|
|
#define OS_PTX
|
|
#endif
|
|
#ifdef M_XENIX
|
|
#define OSMINOR "OS=SCO"
|
|
#define OS_SCO
|
|
#define NO_VFORK
|
|
#endif
|
|
#ifdef sinix
|
|
#define unix
|
|
#define OSMINOR "OS=SINIX"
|
|
#define OS_SINIX
|
|
#endif
|
|
#ifdef sun
|
|
#if defined(__svr4__) || defined(__SVR4)
|
|
#define OSMINOR "OS=SOLARIS"
|
|
#define OS_SOLARIS
|
|
#else
|
|
#define OSMINOR "OS=SUNOS"
|
|
#define OS_SUNOS
|
|
#endif
|
|
#endif
|
|
#ifdef ultrix
|
|
#define OSMINOR "OS=ULTRIX"
|
|
#define OS_ULTRIX
|
|
#endif
|
|
#ifdef _UNICOS
|
|
#define OSMINOR "OS=UNICOS"
|
|
#define OS_UNICOS
|
|
#endif
|
|
#if defined(__USLC__) && !defined(M_XENIX)
|
|
#define OSMINOR "OS=UNIXWARE"
|
|
#define OS_UNIXWARE
|
|
#endif
|
|
#ifdef __OpenBSD__
|
|
#define OSMINOR "OS=OPENBSD"
|
|
#define OS_OPENBSD
|
|
#define unix
|
|
#endif
|
|
#if defined (__FreeBSD_kernel__) && !defined(__FreeBSD__)
|
|
#define OSMINOR "OS=KFREEBSD"
|
|
#define OS_KFREEBSD
|
|
#endif
|
|
#ifndef OSMINOR
|
|
#define OSMINOR "OS=UNKNOWN"
|
|
#endif
|
|
|
|
/* All the UNIX includes */
|
|
|
|
#include <sys/types.h>
|
|
|
|
#ifndef OS_MPEIX
|
|
#include <sys/file.h>
|
|
#endif
|
|
|
|
#include <fcntl.h>
|
|
#include <stdio.h>
|
|
#include <ctype.h>
|
|
#include <signal.h>
|
|
#include <string.h>
|
|
#include <time.h>
|
|
#include <unistd.h>
|
|
|
|
#ifndef OS_QNX
|
|
#include <memory.h>
|
|
#endif
|
|
|
|
#ifndef OS_ULTRIX
|
|
#include <stdlib.h>
|
|
#endif
|
|
|
|
#if !defined( OS_BSDI ) && \
|
|
!defined( OS_FREEBSD ) && \
|
|
!defined( OS_DRAGONFLYBSD ) && \
|
|
!defined( OS_NEXT ) && \
|
|
!defined( OS_MACHTEN ) && \
|
|
!defined( OS_MACOSX ) && \
|
|
!defined( OS_RHAPSODY ) && \
|
|
!defined( OS_MVS ) && \
|
|
!defined( OS_OPENBSD )
|
|
#include <malloc.h>
|
|
#endif
|
|
|
|
#endif /* #ifndef OSMINOR */
|
|
|
|
|
|
/*
|
|
* OSPLAT definitions - suppressed when it is a one-of-a-kind.
|
|
*/
|
|
|
|
#if defined( _M_PPC ) || \
|
|
defined( PPC ) || \
|
|
defined( ppc ) || \
|
|
defined( __powerpc__ ) || \
|
|
defined( __ppc__ )
|
|
#define OSPLAT "OSPLAT=PPC"
|
|
#endif
|
|
|
|
#if defined( _ALPHA_ ) || \
|
|
defined( __alpha__ )
|
|
#define OSPLAT "OSPLAT=AXP"
|
|
#endif
|
|
|
|
#if defined( _i386_ ) || \
|
|
defined( __i386__ ) || \
|
|
defined( __i386 ) || \
|
|
defined( _M_IX86 )
|
|
#define OSPLAT "OSPLAT=X86"
|
|
#endif
|
|
|
|
#if defined( __ia64__ ) || \
|
|
defined( __IA64__ ) || \
|
|
defined( __ia64 )
|
|
#define OSPLAT "OSPLAT=IA64"
|
|
#endif
|
|
|
|
#if defined( __x86_64__ ) || \
|
|
defined( __amd64__ ) || \
|
|
defined( _M_AMD64 )
|
|
#define OSPLAT "OSPLAT=X86_64"
|
|
#endif
|
|
|
|
#if defined( __sparc__ ) || \
|
|
defined( __sparc )
|
|
#define OSPLAT "OSPLAT=SPARC"
|
|
#endif
|
|
|
|
#ifdef __mips__
|
|
#define OSPLAT "OSPLAT=MIPS"
|
|
#endif
|
|
|
|
#ifdef __arm__
|
|
#define OSPLAT "OSPLAT=ARM"
|
|
#endif
|
|
|
|
#ifdef __s390__
|
|
#define OSPLAT "OSPLAT=390"
|
|
#endif
|
|
|
|
#ifdef __hppa
|
|
#define OSPLAT "OSPLAT=PARISC"
|
|
#endif
|
|
|
|
#ifndef OSPLAT
|
|
#define OSPLAT ""
|
|
#endif
|
|
|
|
|
|
/*
|
|
* Jam implementation misc.
|
|
*/
|
|
|
|
#ifndef MAXLINE
|
|
#define MAXLINE 102400 /* max chars per command line */
|
|
#endif
|
|
|
|
#ifndef EXITOK
|
|
#define EXITOK 0
|
|
#define EXITBAD 1
|
|
#endif
|
|
|
|
#ifndef SPLITPATH
|
|
#define SPLITPATH ':'
|
|
#endif
|
|
|
|
/* You probably do not need to muck with these. */
|
|
|
|
#define MAXSYM 1024 /* longest symbol in the environment */
|
|
#define MAXJPATH 1024 /* longest filename */
|
|
|
|
#define MAXJOBS 64 /* internally enforced -j limit */
|
|
#define MAXARGC 32 /* words in $(JAMSHELL) */
|
|
|
|
/* Jam private definitions below. */
|
|
|
|
#define DEBUG_MAX 14
|
|
|
|
|
|
struct globs
|
|
{
|
|
int noexec;
|
|
int jobs;
|
|
int quitquick;
|
|
int newestfirst; /* build newest sources first */
|
|
int pipe_action;
|
|
char debug[ DEBUG_MAX ];
|
|
FILE * cmdout; /* print cmds, not run them */
|
|
long timeout; /* number of seconds to limit actions to,
|
|
* default 0 for no limit.
|
|
*/
|
|
int dart; /* output build and test results formatted for
|
|
* Dart
|
|
*/
|
|
int max_buf; /* maximum amount of output saved from target
|
|
* (kb)
|
|
*/
|
|
};
|
|
|
|
extern struct globs globs;
|
|
|
|
#define DEBUG_MAKE ( globs.debug[ 1 ] ) /* show actions when executed */
|
|
#define DEBUG_MAKEQ ( globs.debug[ 2 ] ) /* show even quiet actions */
|
|
#define DEBUG_EXEC ( globs.debug[ 2 ] ) /* show text of actons */
|
|
#define DEBUG_MAKEPROG ( globs.debug[ 3 ] ) /* show make0 progress */
|
|
#define DEBUG_BIND ( globs.debug[ 3 ] ) /* show when files bound */
|
|
|
|
#define DEBUG_EXECCMD ( globs.debug[ 4 ] ) /* show execcmds()'s work */
|
|
|
|
#define DEBUG_COMPILE ( globs.debug[ 5 ] ) /* show rule invocations */
|
|
|
|
#define DEBUG_HEADER ( globs.debug[ 6 ] ) /* show result of header scan */
|
|
#define DEBUG_BINDSCAN ( globs.debug[ 6 ] ) /* show result of dir scan */
|
|
#define DEBUG_SEARCH ( globs.debug[ 6 ] ) /* show binding attempts */
|
|
|
|
#define DEBUG_VARSET ( globs.debug[ 7 ] ) /* show variable settings */
|
|
#define DEBUG_VARGET ( globs.debug[ 8 ] ) /* show variable fetches */
|
|
#define DEBUG_VAREXP ( globs.debug[ 8 ] ) /* show variable expansions */
|
|
#define DEBUG_IF ( globs.debug[ 8 ] ) /* show 'if' calculations */
|
|
#define DEBUG_LISTS ( globs.debug[ 9 ] ) /* show list manipulation */
|
|
#define DEBUG_SCAN ( globs.debug[ 9 ] ) /* show scanner tokens */
|
|
#define DEBUG_MEM ( globs.debug[ 9 ] ) /* show memory use */
|
|
|
|
#define DEBUG_PROFILE ( globs.debug[ 10 ] ) /* dump rule execution times */
|
|
#define DEBUG_PARSE ( globs.debug[ 11 ] ) /* debug parsing */
|
|
#define DEBUG_GRAPH ( globs.debug[ 12 ] ) /* debug dependencies */
|
|
#define DEBUG_FATE ( globs.debug[ 13 ] ) /* show fate changes in make0() */
|
|
|
|
/* Everyone gets the memory definitions. */
|
|
#include "mem.h"
|
|
|
|
/* They also get the profile functions. */
|
|
#include "debug.h"
|
|
|
|
#endif
|