support parms.h

pass argv[0]
This commit is contained in:
Vitor Santos Costa 2009-10-23 09:09:16 +01:00
parent da0186a0aa
commit 253444d7ca
11 changed files with 154 additions and 41 deletions

View File

@ -1295,7 +1295,7 @@ static void
InitVersion(void)
{
Yap_PutValue(AtomVersionNumber,
MkAtomTerm(Yap_LookupAtom(YAP_VERSION)));
MkAtomTerm(Yap_LookupAtom(YAP_SVERSION)));
#if defined MYDDAS_MYSQL || defined MYDDAS_ODBC
Yap_PutValue(AtomMyddasVersionName,
MkAtomTerm(Yap_LookupAtom(MYDDAS_VERSION)));

View File

@ -29,8 +29,8 @@ static char SccsId[] = "%W% %G%.2";
#include "Foreign.h"
#if _WIN32 || defined(__CYGWIN__)
#ifndef SHLIB_SUFFIX
#define SHLIB_SUFFIX "dll"
#ifndef YAP_SHLIB_SUFFIX
#define YAP_SHLIB_SUFFIX ".dll"
#endif
#endif
@ -111,7 +111,7 @@ p_load_foreign(void)
static Int
p_obj_suffix(void) {
return(Yap_unify(Yap_StringToList(SHLIB_SUFFIX),ARG1));
return(Yap_unify(TailOfTerm(Yap_StringToList(YAP_SHLIB_SUFFIX)),ARG1));
}
void

View File

@ -364,7 +364,7 @@ put_info(int info, int mode)
{
char msg[256];
sprintf(msg, "#!/bin/sh\nexec_dir=${YAPBINDIR:-%s}\nexec $exec_dir/yap $0 \"$@\"\n%cYAPV%s", BIN_DIR, 1, YAP_VERSION);
sprintf(msg, "#!/bin/sh\nexec_dir=${YAPBINDIR:-%s}\nexec $exec_dir/yap $0 \"$@\"\n%cYAP-%s", YAP_BINDIR, 1, YAP_SVERSION);
mywrite(splfild, msg, strlen(msg) + 1);
putout(Unsigned(info));
/* say whether we just saved the heap or everything */
@ -631,7 +631,7 @@ check_header(CELL *info, CELL *ATrail, CELL *AStack, CELL *AHeap)
}
} while (pp[0] != 1);
/* now check the version */
sprintf(msg, "YAPV%s", YAP_VERSION);
sprintf(msg, "YAP-%s", YAP_SVERSION);
{
int count = 0, n, to_read = Unsigned(strlen(msg) + 1);
while (count < to_read) {
@ -642,14 +642,6 @@ check_header(CELL *info, CELL *ATrail, CELL *AStack, CELL *AHeap)
count += n;
}
}
if (pp[0] != 'Y' && pp[1] != 'A' && pp[0] != 'P') {
Yap_ErrorMessage = Yap_ErrorSay;
strncpy(Yap_ErrorMessage, "saved state ", MAX_ERROR_MSG_SIZE);
strncat(Yap_ErrorMessage, Yap_FileNameBuf, MAX_ERROR_MSG_SIZE);
strncat(Yap_ErrorMessage, " failed to match `YAP\'", MAX_ERROR_MSG_SIZE);
Yap_Error_TYPE = CONSISTENCY_ERROR;
return FAIL_RESTORE;
}
if (strcmp(pp, msg) != 0) {
Yap_ErrorMessage = Yap_ErrorSay;
strncpy(Yap_ErrorMessage, "saved state ", MAX_ERROR_MSG_SIZE);
@ -1502,8 +1494,8 @@ OpenRestore(char *inpf, char *YapLibDir, CELL *Astate, CELL *ATrail, CELL *AStac
}
}
#endif
if (LIB_DIR != NULL) {
cat_file_name(Yap_FileNameBuf, LIB_DIR, inpf, YAP_FILENAME_MAX);
if (YAP_LIBDIR != NULL) {
cat_file_name(Yap_FileNameBuf, YAP_LIBDIR, inpf, YAP_FILENAME_MAX);
if ((splfild = open_file(Yap_FileNameBuf, O_RDONLY)) > 0) {
if ((mode = commit_to_saved_state(Yap_FileNameBuf,Astate,ATrail,AStack,AHeap)) != FAIL_RESTORE) {
Yap_ErrorMessage = NULL;

View File

@ -209,7 +209,7 @@ Yap_InitSysPath(void) {
if (dir_done && commons_done)
return;
#endif
strncpy(Yap_FileNameBuf, SHARE_DIR, YAP_FILENAME_MAX);
strncpy(Yap_FileNameBuf, YAP_SHAREDIR, YAP_FILENAME_MAX);
#if _MSC_VER || defined(__MINGW32__)
{
DWORD fatts;
@ -1883,7 +1883,7 @@ TrueFileName (char *source, char *root, char *result, int in_lib)
strncpy(ares1, libdir, YAP_FILENAME_MAX);
else
#endif
strncpy(ares1, LIB_DIR, YAP_FILENAME_MAX);
strncpy(ares1, YAP_LIBDIR, YAP_FILENAME_MAX);
}
#if HAVE_GETENV
}
@ -2679,7 +2679,7 @@ p_host_type(void) {
static Int
p_yap_home(void) {
Term out = MkAtomTerm(Yap_LookupAtom(YAP_HOME_DIR));
Term out = MkAtomTerm(Yap_LookupAtom(YAP_ROOTDIR));
return(Yap_unify(out,ARG1));
}
@ -2977,7 +2977,7 @@ p_disable_interrupts(void)
static Int
p_ld_path(void)
{
return Yap_unify(ARG1,MkAtomTerm(Yap_LookupAtom(LIB_DIR)));
return Yap_unify(ARG1,MkAtomTerm(Yap_LookupAtom(YAP_LIBDIR)));
}

View File

@ -87,11 +87,6 @@
#define inline __inline
#define YAP_VERSION "Yap-6.0.0"
/* This is also exported in YapInclude.h */
#ifndef YAPVERSION
#define YAPVERSION 60000
#endif
#define BIN_DIR "c:\\Yap\\bin"
#define LIB_DIR "c:\\Yap\\lib\\Yap"
#define SHARE_DIR "c:\\Yap\\share\\Yap"

View File

@ -51,6 +51,8 @@ DOCSDIR=$(SHAREDIR)/docs/yap
#
YAP_EXTRAS=@YAP_EXTRAS@
YAPSTARTUP=startup.yss
#
# Please do not add YAP_EXTRA flags here: if you do check the flags
# for c_interface.c
@ -65,6 +67,8 @@ C_PARSER_FLAGS= @C_PARSER_FLAGS@ $(YAP_EXTRAS) $(DEFS) $(CPPFLAGS)
#
# You shouldn't need to change what follows.
#
ARCH=@ARCH@
AWK=@AWK@
CPP=@CPP@
DEFS=@DEFS@
LIBS=@LIBS@
@ -89,11 +93,12 @@ MAKEINFO=makeinfo
TEXI2DVI=texi2dvi
TEXI2HTML=texi2html
TEXI2PDF=texi2pdf
YAPLIB=@YAPLIB@
#4.1VPATH=@srcdir@:@srcdir@/OPTYap
CWD=$(PWD)
#
VERSION=Yap-6.0.0
VERSION=6.0.0
MYDDAS_VERSION=MYDDAS-0.9.1
#
@ -275,11 +280,34 @@ OBJECTS = yap.o $(LIB_OBJECTS)
all: Makefile startup.yss
all: parms.h startup.yss
Makefile: $(srcdir)/Makefile.in
$(srcdir)/H/Yap.h: config.h
config.h: parms.h
parms.h: Makefile
@echo "#define YAP_ROOTDIR \"$(prefix)\"" > $@%
@echo "#define YAP_BINDIR \"$(BINDIR)\"" >> $@%
@echo "#define YAP_LIBDIR \"$(LIBDIR)\"" >> $@%
@echo "#define YAP_SHAREDIR \"$(SHAREDIR)\"" >> $@%
@echo "#define YAP_PL_SRCDIR \"$(SHAREDIR)/Yap/pl\"" >> $@%
@echo "#define YAP_STARTUP \"$(YAPSTARTUP)\"" >> $@%
@echo "#define YAP_SVERSION \"$(VERSION)\"" >> $@%
@echo $(VERSION) | $(AWK) -F. '{ printf("#define YAP_VERSION %d\n", $$1 * 10000 + $$2 * 100 + $$3); }' >> $@%
@echo "#define MYDDAS_VERSION \"$(MYDDAS_VERSION)\"" >> $@%
@echo "#define YAP_ARCH \"$(ARCH)\"" >> $@%
@echo "#define YAP_LIBS \"$(LIBS)\"" >> $@%
@echo "#define YAP_YAPLIB \"$(YAPLIB)\"" >> $@%
@echo "#define YAP_CC \"$(CC)\"" >> $@%
@echo "#define YAP_CFLAGS \"$(CFLAGS)\"" >> $@%
@echo "#define YAP_LDFLAGS \"$(LDFLAGS)\"" >> $@%
@echo "#define YAP_SHLIB_SUFFIX \"$(SHLIB_SUFFIX)\"" >> $@%
@echo | $(AWK) '{ printf("#define YAP_TIMESTAMP %d\n", systime()); }' >> $@%
@if cmp -s $@% $@; then rm $@%; else mv $@% $@; fi
#special rule for this one: we cannot use -fomit-frame-pointer because this will
# interface with the outside world.
@ -290,16 +318,16 @@ clause_list.o: $(srcdir)/C/clause_list.c $(srcdir)/include/clause_list.h
$(CC) $(C_INTERF_FLAGS) -c $(srcdir)/C/clause_list.c -o clause_list.o
init.o: $(srcdir)/C/init.c
$(CC) -c $(CFLAGS) -DMYDDAS_VERSION=\"$(MYDDAS_VERSION)\" -DYAP_VERSION=\"$(VERSION)\" $(srcdir)/C/init.c -o $@
$(CC) -c $(CFLAGS) $(srcdir)/C/init.c -o $@
load_foreign.o: $(srcdir)/C/load_foreign.c
$(CC) -c $(CFLAGS) $(srcdir)/C/load_foreign.c -DSHLIB_SUFFIX=\"$(SHLIB_SUFFIX)\" -o $@
$(CC) -c $(CFLAGS) $(srcdir)/C/load_foreign.c -o $@
save.o: $(srcdir)/C/save.c
$(CC) -c $(CFLAGS) -DYAP_VERSION=\"$(VERSION)\" -DBIN_DIR=\"$(BINDIR)\" -DLIB_DIR=\"$(YAPLIBDIR)\" $(srcdir)/C/save.c -o $@
$(CC) -c $(CFLAGS) $(srcdir)/C/save.c -o $@
sysbits.o: $(srcdir)/C/sysbits.c
$(CC) -c $(CFLAGS) -DYAP_HOME_DIR=\"$(ROOTDIR)\" -DLIB_DIR=\"$(YAPLIBDIR)\" -DSHARE_DIR=\"$(SHAREDIR)\" $(srcdir)/C/sysbits.c -o $@
$(CC) -c $(CFLAGS) $(srcdir)/C/sysbits.c -o $@
udi.o: $(srcdir)/C/udi.c
$(CC) -c $(C_INTERF_FLAGS) $(srcdir)/C/udi.c -o $@
@ -310,8 +338,8 @@ rtree.o: $(srcdir)/packages/udi/rtree.c
rtree_udi.o: $(srcdir)/packages/udi/rtree_udi.c
$(CC) -c $(C_INTERF_FLAGS) $(srcdir)/packages/udi/rtree_udi.c -o $@
yap.o: $(srcdir)/console/yap.c
$(CC) -c $(CFLAGS) -I$(srcdir)/include -DYAP_VERSION=\"$(VERSION)\" -DPL_SRC_DIR=\"$(SHAREDIR)/Yap/pl/\" $(srcdir)/console/yap.c -o $@
yap.o: $(srcdir)/console/yap.c parms.h
$(CC) -c $(CFLAGS) -I$(srcdir)/include $(srcdir)/console/yap.c -o $@
mpi.o: $(srcdir)/library/mpi/mpi.c
$(MPI_CC) -c $(CFLAGS) $(srcdir)/library/mpi/mpi.c -o $@
@ -448,7 +476,7 @@ all: startup.yss
@ENABLE_CPLINT@ (cd cplint; $(MAKE))
@USE_CUDD@ (cd packages/ProbLog/simplecudd; $(MAKE))
startup.yss: yap@EXEC_SUFFIX@ $(PL_SOURCES)
startup.yss: yap@EXEC_SUFFIX@ $(PL_SOURCES) parms.h
-rm -f startup.yss
echo "bootstrap('$(srcdir)/pl/init.yap'). module(user). save_program('startup.yss')." | @PRE_DYNLOADER_PATH@ ./yap -b $(srcdir)/pl/boot.yap
@ -488,7 +516,10 @@ install_unix: startup.yss libYap.a
@INSTALL_MATLAB@ (cd library/matlab; $(MAKE) install)
@ENABLE_JPL@ @INSTALL_DLLS@ (cd packages/jpl; $(MAKE) install)
mkdir -p $(DESTDIR)$(INCLUDEDIR)
$(INSTALL) $(HEADERS) $(DESTDIR)$(INCLUDEDIR)
for h in $(INTERFACE_HEADERS); do $(INSTALL) $$h $(DESTDIR)$(INCLUDEDIR); done
$(INSTALL) config.h $(DESTDIR)$(INCLUDEDIR)/config.h
$(INSTALL) parms.h $(DESTDIR)$(INCLUDEDIR)/parms.h
@ENABLE_CPLINT@ (cd cplint; $(MAKE) install)
@USE_CUDD@ (cd packages/ProbLog/simplecudd; $(MAKE) install)
@ -508,7 +539,8 @@ install_win32: startup.yss
for f in $(PL_SOURCES); do $(INSTALL) $$f $(DESTDIR)$(SHAREDIR)/Yap/pl; done
$(INSTALL) $(HEADERS) $(DESTDIR)$(INCLUDEDIR)
for h in $(INTERFACE_HEADERS); do $(INSTALL) $$h $(DESTDIR)$(INCLUDEDIR); done
$(INSTALL) config.h $(INCLUDEDIR)/config.h
$(INSTALL) config.h $(DESTDIR)$(INCLUDEDIR)/config.h
$(INSTALL) parms.h $(DESTDIR)$(INCLUDEDIR)/parms.h
(cd packages/PLStream; $(MAKE) install)
(cd packages/sgml; $(MAKE) install)
(cd library/random; $(MAKE) install)

View File

@ -1,4 +1,6 @@
#include "parms.h"
/* are we using gcc */
#undef HAVE_GCC

60
configure vendored
View File

@ -683,6 +683,7 @@ SHLIB_SUFFIX
SHLIB_CFLAGS
MERGE_DLL_OBJS
INSTALL_DLLS
ARCH
M4GENHDRS
M4
EXTEND_DYNLOADER_PATH
@ -719,6 +720,7 @@ build
C_PARSER_FLAGS
C_INTERF_FLAGS
GCC
AWK
OBJEXT
EXEEXT
ac_ct_CC
@ -2872,6 +2874,48 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
for ac_prog in gawk mawk nawk awk
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_AWK+set}" = set; then
$as_echo_n "(cached) " >&6
else
if test -n "$AWK"; then
ac_cv_prog_AWK="$AWK" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_AWK="$ac_prog"
$as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
AWK=$ac_cv_prog_AWK
if test -n "$AWK"; then
{ $as_echo "$as_me:$LINENO: result: $AWK" >&5
$as_echo "$AWK" >&6; }
else
{ $as_echo "$as_me:$LINENO: result: no" >&5
$as_echo "no" >&6; }
fi
test -n "$AWK" && break
done
@ -13867,6 +13911,21 @@ fi
if test "x$ARCH" = "x"; then
case "$host" in
*linux*)
ARCH=`echo $host | sed 's/-.*/-linux/'`
;;
*-gnu)
ARCH=`echo $host | sed 's/\([^-]*\)-[^-]*-\([^-]*\)-gnu/\1-\2/'`
;;
*)
ARCH=`echo $host | sed 's/\([^-]*\)-[^-]*-\([^-]*\)/\1-\2/'`
;;
esac
fi
@ -17677,6 +17736,7 @@ gives unlimited permission to copy, distribute and modify it."
ac_pwd='$ac_pwd'
srcdir='$srcdir'
INSTALL='$INSTALL'
AWK='$AWK'
test -n "\$AWK" || AWK=awk
_ACEOF

View File

@ -11,6 +11,7 @@ dnl store the environment's compilation flags
mycflags="$CFLAGS"
AC_PROG_CC
AC_PROG_AWK
AC_SUBST(GCC)
AC_SUBST(C_INTERF_FLAGS)
AC_SUBST(C_PARSER_FLAGS)
@ -1218,6 +1219,24 @@ fi
AC_SUBST(M4)
AC_SUBST(M4GENHDRS)
dnl SWI compatibility, I don't know why just use host...
changequote(,)dnl
if test "x$ARCH" = "x"; then
case "$host" in
*linux*)
ARCH=`echo $host | sed 's/-.*/-linux/'`
;;
*-gnu)
ARCH=`echo $host | sed 's/\([^-]*\)-[^-]*-\([^-]*\)-gnu/\1-\2/'`
;;
*)
ARCH=`echo $host | sed 's/\([^-]*\)-[^-]*-\([^-]*\)/\1-\2/'`
;;
esac
fi
changequote([,])dnl
AC_SUBST(ARCH)
dnl System stuff for dynamic linking.
dnl
dnl Exports:

View File

@ -292,6 +292,11 @@ add_end_dot(char arg[])
return arg;
}
static int
dump_runtime_variables(void)
{
}
/*
* proccess command line arguments: valid switches are: -b boot -s
* stack area size (K) -h heap area size -a aux stack size -e
@ -336,8 +341,13 @@ parse_yap_arguments(int argc, char *argv[], YAP_init_args *iap)
ssize = &(iap->NumberWorkers);
goto GetSize;
case 'd':
if (!strcmp("dump-runtime-variables",p))
return dump_runtime_variables();
ssize = &(iap->DelayedReleaseLoad);
goto GetSize;
#else
if (!strcmp("dump-runtime-variables",p))
return dump_runtime_variables();
#endif /* ENV_COPY || ACOW || SBA */
#ifdef USE_SOCKET
case 'c': /* running as client */
@ -746,14 +756,15 @@ init_standard_system(int argc, char *argv[], YAP_init_args *iap)
iap->ErrorNo = 0;
iap->ErrorCause = NULL;
iap->QuietMode = FALSE;
iap->Argv0 = argv[0];
BootMode = parse_yap_arguments(argc,argv,iap);
if (BootMode == YAP_FULL_BOOT_FROM_PROLOG) {
#if HAVE_STRNCAT
strncpy(boot_file, PL_SRC_DIR, 256);
strncpy(boot_file, YAP_PL_SRCDIR, 256);
#else
strcpy(boot_file, PL_SRC_DIR);
strcpy(boot_file, YAP_PL_SRCDIR);
#endif
#if HAVE_STRNCAT
strncat(boot_file, BootFile, 255);
@ -805,9 +816,9 @@ exec_top_level(int BootMode, YAP_init_args *iap)
YAP_Term goal, as[2];
#if HAVE_STRNCAT
strncpy(init_file, PL_SRC_DIR, 256);
strncpy(init_file, YAP_PL_SRCDIR, 256);
#else
strcpy(init_file, PL_SRC_DIR);
strcpy(init_file, YAP_PL_SRCDIR);
#endif
#if HAVE_STRNCAT
strncat(init_file, InitFile, 255);

View File

@ -142,6 +142,8 @@ typedef struct {
int ErrorNo;
/* errorstring */
char *ErrorCause;
/* argv[0] */
char *Argv0;
} YAP_init_args;