INSTALL = $(srcdir)/../install-sh -c
INSTALL_DATA = $(INSTALL) -m 644
+INSTALL_PROGRAM = $(INSTALL) -m 755
# Programs to make tags files.
ETAGS = etags
INCLUDE_CFLAGS=-I. -I.. -I$(srcdir)/.. -I$(srcdir)
ALL_CFLAGS=$(X_CFLAGS) $(INCLUDE_CFLAGS) $(X11_INCLUDES) @DEFS@
CC=@CC@ $(ALL_CFLAGS)
+CPP=@CPP@
# CC used as a front end for ld
LDFLAGS = @LDFLAGS@
sequences.h \
simpos.h \
smob.h \
+ snarf.h \
socket.h \
srcprop.h \
stackchk.h \
configure \
configure.in \
scmconfig.h.in \
- fd.h.in
+ fd.h.in \
+ guile-snarf.sh
c_sources = $(c_files) $(h_files)
.SUFFIXES:
.SUFFIXES: .o .c .h .ps .dvi .info .texinfo .scm .x
-.c.x:
- $(CC) -DSCM_MAGIC_SNARFER -E $< | grep "^%%%" | sed -e "s/^%%%//" > $@
+.c.x: guile-snarf
+ ./guile-snarf $(ALL_CFLAGS) $< > $@
.PHONY: all
all: libguile.a
echo '/* generated by Makefile */' > libpath.h
echo '#define LIBRARY_PATH "$(pkgdatadir)/$(VERSION)"' >> libpath.h
+$(gen_c_files): guile-snarf
+guile-snarf: $(srcdir)/guile-snarf.sh
+ rm -f guile-snarf
+ sed -e 's,xCPPx,$(CPP),' $(srcdir)/guile-snarf.sh > guile-snarf-t
+ mv guile-snarf-t guile-snarf
+ chmod +x guile-snarf
+
# The `dist' target in the top-level Makefile uses this `dist-dir'
# target to select the appropriate files for distribution from the
# directory containing this Makefile.
for h in $(inner_h_files); do \
$(INSTALL_DATA) $(srcdir)/$$h $(innerincludedir); \
done
+ test -d $(bindir) || mkdir $(bindir)
+ $(INSTALL_PROGRAM) guile-snarf $(bindir)
uninstall:
-rm $(libdir)/libguile$(VERSION).a
-rm $(libdir)/libguile.a
-rm -rf $(guileincludedir)
-rm $(includedir)/guile
-
+ -rm $(bindir)/guile-snarf
TAGS:
etags $(c_sources)
-rm -f Makefile
-rm -f scmconfig.h
-rm -f fd.h
-
+ -rm -f guile-snarf
realclean: distclean
-rm -f $(gen_c_files)
#include "../threads/threads.h" /* Some thread packages does switching
at async ticks. */
#endif
+#include "snarf.h" /* Everyone snarfs. */
/* On VMS, GNU C's errno.h contains a special hack to get link attributes
* for errno correct for linking to the C RTL.
\f
-#ifndef SCM_MAGIC_SNARFER
-#define SCM_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \
- static char RANAME[]=STR
-#define SCM_PROC1(RANAME, STR, TYPE, CFN) \
- static char RANAME[]=STR
-#else
-#define SCM_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \
-%%% scm_make_gsubr (RANAME, REQ, OPT, VAR, CFN)
-#define SCM_PROC1(RANAME, STR, TYPE, CFN) \
-%%% scm_make_subr(RANAME, TYPE, CFN)
-#endif
-
-#ifndef SCM_MAGIC_SNARFER
-#define SCM_SYMBOL(c_name, scheme_name) \
- static SCM c_name = SCM_BOOL_F
-#else
-#define SCM_SYMBOL(C_NAME, SCHEME_NAME) \
-%%% C_NAME = scm_permanent_object (SCM_CAR (scm_intern0 (SCHEME_NAME)))
-#endif
-
-
-#ifndef SCM_MAGIC_SNARFER
-#define SCM_GLOBAL(c_name, scheme_name) \
- static SCM c_name = SCM_BOOL_F
-#else
-#define SCM_GLOBAL(C_NAME, SCHEME_NAME) \
-%%% C_NAME = scm_permanent_object (scm_intern0 (SCHEME_NAME)); SCM_SETCDR (C_NAME, SCM_BOOL_F)
-#endif
-
-
-#ifndef SCM_MAGIC_SNARFER
-#define SCM_CONST_LONG(C_NAME, SCHEME_NAME,VALUE) \
- static SCM C_NAME = SCM_BOOL_F
-#else
-#define SCM_CONST_LONG(C_NAME, SCHEME_NAME,VALUE) \
-%%% C_NAME = scm_permanent_object (scm_intern0 (SCHEME_NAME)); SCM_SETCDR (C_NAME, scm_long2num (VALUE))
-#endif
-
#define min(A,B) ((A) <= (B) ? (A) : (B))
#define max(A,B) ((A) >= (B) ? (A) : (B))
--- /dev/null
+/* classes: h_files */
+
+/* Macros for snarfing initialization actions from C source. */
+
+#ifndef LIBGUILE_SNARF_H
+#define LIBGUILE_SNARF_H
+
+/* Copyright (C) 1995,1996 Free Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING. If not, write to
+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * As a special exception, the Free Software Foundation gives permission
+ * for additional uses of the text contained in its release of GUILE.
+ *
+ * The exception is that, if you link the GUILE library with other files
+ * to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the GUILE library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by the
+ * Free Software Foundation under the name GUILE. If you copy
+ * code from other Free Software Foundation releases into a copy of
+ * GUILE, as the General Public License permits, the exception does
+ * not apply to the code that you add in this way. To avoid misleading
+ * anyone as to the status of such modified files, you must delete
+ * this exception notice from them.
+ *
+ * If you write modifications of your own for GUILE, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice. */
+\f
+
+#ifndef SCM_MAGIC_SNARFER
+#define SCM_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \
+ static char RANAME[]=STR
+#define SCM_PROC1(RANAME, STR, TYPE, CFN) \
+ static char RANAME[]=STR
+#else
+#ifdef __cplusplus
+#define SCM_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \
+%%% scm_make_gsubr (RANAME, REQ, OPT, VAR, (SCM (*) (...)) CFN)
+#define SCM_PROC1(RANAME, STR, TYPE, CFN) \
+%%% scm_make_subr(RANAME, TYPE, (SCM (*)(...)) CFN)
+#else /* not __cplusplus */
+#define SCM_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \
+%%% scm_make_gsubr (RANAME, REQ, OPT, VAR, CFN)
+#define SCM_PROC1(RANAME, STR, TYPE, CFN) \
+%%% scm_make_subr(RANAME, TYPE, CFN)
+#endif /* not __cplusplus */
+#endif
+
+#ifndef SCM_MAGIC_SNARFER
+#define SCM_SYMBOL(c_name, scheme_name) \
+ static SCM c_name = SCM_BOOL_F
+#else
+#define SCM_SYMBOL(C_NAME, SCHEME_NAME) \
+%%% C_NAME = scm_permanent_object (SCM_CAR (scm_intern0 (SCHEME_NAME)))
+#endif
+
+
+#ifndef SCM_MAGIC_SNARFER
+#define SCM_GLOBAL(c_name, scheme_name) \
+ static SCM c_name = SCM_BOOL_F
+#else
+#define SCM_GLOBAL(C_NAME, SCHEME_NAME) \
+%%% C_NAME = scm_permanent_object (scm_intern0 (SCHEME_NAME)); SCM_SETCDR (C_NAME, SCM_BOOL_F)
+#endif
+
+
+#ifndef SCM_MAGIC_SNARFER
+#define SCM_CONST_LONG(C_NAME, SCHEME_NAME,VALUE) \
+ static SCM C_NAME = SCM_BOOL_F
+#else
+#define SCM_CONST_LONG(C_NAME, SCHEME_NAME,VALUE) \
+%%% C_NAME = scm_permanent_object (scm_intern0 (SCHEME_NAME)); SCM_SETCDR (C_NAME, scm_long2num (VALUE))
+#endif
+
+#endif /* LIBGUILE_SNARF_H */