|
From: Earnie B. <ea...@us...> - 2005-05-22 10:13:33
|
Update of /cvsroot/mingw/msys/packages/bash/2.05b/examples/loadables/perl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10360/2.05b/examples/loadables/perl Added Files: Makefile.in README bperl.c iperl.c Log Message: Pristine source --- NEW FILE: iperl.c --- #include <EXTERN.h> /* from the Perl distribution */ #include <perl.h> /* from the Perl distribution */ extern void xs_init _((void)); static PerlInterpreter *iperl; /*** The Perl interpreter ***/ int perl_main(int argc, char **argv, char **env) { int r; iperl = perl_alloc(); perl_construct(iperl); perl_parse(iperl, xs_init, argc, argv, (char **)NULL); r = perl_run(iperl); PerlIO_flush(PerlIO_stdout()); PerlIO_flush(PerlIO_stderr()); perl_destruct(iperl); perl_free(iperl); return (r); } --- NEW FILE: README --- This illustrates how to build a perl interpreter into bash. It's not especially useful; more a proof of concept (it provides none of the bash internals to the perl interpreter, for example). This *may* require adding "-rpath /path/to/perl/CORE" and -lperl options when compiling bash itself. --- NEW FILE: Makefile.in --- # # Makefile for builtin perl interpreter # # # Copyright (C) 1998 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 program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. # Include some boilerplate Gnu makefile definitions. prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ libdir = @libdir@ infodir = @infodir@ includedir = @includedir@ topdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ srcdir = @srcdir@ VPATH = .:@srcdir@ @SET_MAKE@ CC = @CC@ RM = rm -f SHELL = @MAKE_SHELL@ PERL5 = perl5 CFLAGS = @CFLAGS@ # # These values are generated for configure by ${topdir}/support/shobj-conf. # If your system is not supported by that script, but includes facilities for # dynamic loading of shared objects, please update the script and send the # changes to bas...@gn.... # SHOBJ_CC = @SHOBJ_CC@ SHOBJ_CFLAGS = @SHOBJ_CFLAGS@ SHOBJ_LD = @SHOBJ_LD@ SHOBJ_LDFLAGS = @SHOBJ_LDFLAGS@ SHOBJ_XLDFLAGS = @SHOBJ_XLDFLAGS@ SHOBJ_LIBS = @SHOBJ_LIBS@ SHOBJ_STATUS = @SHOBJ_STATUS@ # Values used for compiling the perl files PERL_LDOPTS = `${PERL5} -MExtUtils::Embed -e ldopts` PERL_CFLAGS = ${CCFLAGS} `${PERL5} -MExtUtils::Embed -e ccopts` SRC = bperl.c iperl.c perlxsi.c OBJ = bperl.o iperl.o perlxsi.o BUILTIN = bperl5 INC = -I. -I.. -I$(topdir) -I$(topdir)/lib -I$(topdir)/builtins \ -I$(topdir)/include -I$(BUILD_DIR) -I$(BUILD_DIR)/lib \ -I$(BUILD_DIR)/builtins ${BUILTIN}: ${OBJ} ${RM} $@ ${SHOBJ_LD} ${SHOBJ_LDFLAGS} ${SHOBJ_XLDFLAGS} -o $@ ${OBJ} ${PERL_LDOPTS} ${SHOBJ_LIBS} bperl.o: bperl.c ${RM} $@ $(SHOBJ_CC) $(SHOBJ_CFLAGS) $(CFLAGS) $(INC) -c -o $@ ${srcdir}/bperl.c iperl.o: iperl.c ${RM} $@ $(SHOBJ_CC) ${SHOBJ_CFLAGS} $(PERL_CFLAGS) -c -o $@ ${srcdir}/iperl.c perlxsi.c: ${PERL5} -MExtUtils::Embed -e xsinit -- -o $@ perlxsi.o: perlxsi.c ${RM} $@ ${SHOBJ_CC} ${SHOBJ_CFLAGS} $(PERL_CFLAGS) -c -o $@ perlxsi.c clean mostlyclean: ${RM} ${OBJ} ${RM} ${BUILTIN} distclean maintainer-clean: clean ${RM} perlxsi.c --- NEW FILE: bperl.c --- /* * perl builtin */ #include <config.h> #include <fcntl.h> #include <errno.h> #include "builtins.h" #include "shell.h" #ifndef errno extern int errno; #endif extern char **make_builtin_argv (); extern char **export_env; extern int perl_main(); bperl_builtin(list) WORD_LIST *list; { char **v; int c, r; v = make_builtin_argv(list, &c); r = perl_main(c, v, export_env); free(v); return r; } char *bperl_doc[] = { "An interface to a perl5 interpreter.", (char *)0 }; struct builtin bperl_struct = { "bperl", bperl_builtin, BUILTIN_ENABLED, bperl_doc, "bperl [perl options] [file ...]", 0 }; |