I worked some on the patch, trying to incorporate the suggestions from: http://lists.nongnu.org/archive/html/axiom-developer/2006-11/msg00687.html
How does it look now? ==== Patch <openpty-again> level 1 Source: [No source] Target: 10b040b6-da22-0410-adf4-f09dab594101:/local:349 Log: === ChangeLog.build-improvements ================================================================== --- ChangeLog.build-improvements (revision 349) +++ ChangeLog.build-improvements (patch openpty-again level 1) @@ -1,3 +1,13 @@ +2006-12-01 Humberto Ortiz-Zuazaga <[EMAIL PROTECTED]> + + * configure.ac.pamphlet: incorporated suggested changes from: + http://lists.nongnu.org/archive/html/axiom-developer/2006-11/msg00687.html + +2006-11-29 Humberto Ortiz-Zuazaga <[EMAIL PROTECTED]> + + * configure.ac.pamphlet: added tests for openpty, pty.h, + util.h and libutil + 2006-11-29 Gabriel Dos Reis <[EMAIL PROTECTED]> * configure.ac.pamphlet: Fix typo. === config/axiom-c-macros.h.in ================================================================== --- config/axiom-c-macros.h.in (revision 349) +++ config/axiom-c-macros.h.in (patch openpty-again level 1) @@ -9,6 +9,12 @@ /* Define to 1 if you have the <memory.h> header file. */ #undef HAVE_MEMORY_H +/* Define to 1 if you have the `openpty' function. */ +#undef HAVE_OPENPTY + +/* Define to 1 if you have the <pty.h> header file. */ +#undef HAVE_PTY_H + /* Define to 1 if you have the <stdint.h> header file. */ #undef HAVE_STDINT_H @@ -30,6 +36,9 @@ /* Define to 1 if you have the <unistd.h> header file. */ #undef HAVE_UNISTD_H +/* Define to 1 if you have the <util.h> header file. */ +#undef HAVE_UTIL_H + /* Linux flavour */ #undef LINUXplatform === config/var-def.mk ================================================================== --- config/var-def.mk (revision 349) +++ config/var-def.mk (patch openpty-again level 1) @@ -118,6 +118,7 @@ AXIOM_X11_CFLAGS = @X_CFLAGS@ AXIOM_X11_LDFLAGS = @X_LIBS@ @X_PRE_LIBS@ -lX11 @X_EXTRA_LIBS@ +EXTRA_LIBS = @EXTRA_LIBS@ axiom_includes = -I$(axiom_src_srcdir)/include -I$(axiom_configdir) === configure.ac.pamphlet ================================================================== --- configure.ac.pamphlet (revision 349) +++ configure.ac.pamphlet (patch openpty-again level 1) @@ -683,8 +683,41 @@ fi @ +\subsubsection{openpty} +[[clef]] and [[sman]] use ptys to communicate with [[AXIOMsys]]. The +existing code in silver doesn't work on MacOS X. We will try to build +with the Unix98 standard [[openpty]] function. We need to detect two +headers and a library. Linux has openpty defined in [[pty.h]], MacOS X +define it in [[util.h]]. FreeBSD is supposed to have a definition in +[[libutil.h]]. +<<headers>>= + AC_CHECK_HEADER([util.h], + [AC_DEFINE([HAVE_UTIL_H])], + [AC_CHECK_HEADER([pty.h]) + ]) # HAVE_UTIL_H or HAVE_PTY_H + + AC_CHECK_DECL([openpty], [], [], + [#if HAVE_UTIL_H + # include <util.h> + #elif HAVE_PTY_H + # include <pty.h> + #endif + ]) # HAVE_OPENPTY_DECL +@ + +On linux the openpty function is in [[libutil]]. We need to add that to +the list of libraries, at least for [[sman]] and [[clef]]. + +<<extra libraries>>= +AC_CHECK_LIB([util], [openpty], + [AC_DEFINE([HAVE_OPENPTY]) + EXTRA_LIBS="$EXTRA_LIBS -lutil" + ]) # HAVE_OPENPTY +AC_SUBST(EXTRA_LIBS) +@ + \section{A note about comments} \label{sec:comment} @@ -727,6 +760,8 @@ <<headers>> +<<extra libraries>> + <<define AXIOM>> <<platform specific bits>> === src/clef/ChangeLog.build-improvements ================================================================== --- src/clef/ChangeLog.build-improvements (revision 349) +++ src/clef/ChangeLog.build-improvements (patch openpty-again level 1) @@ -1,3 +1,7 @@ +2006-11-29 Humberto Ortiz-Zuazaga <[EMAIL PROTECTED]> + + * Makefile.pamphlet: add -lutil to clef link flags if needed + 2006-11-26 Gabriel Dos Reis <[EMAIL PROTECTED]> * edible.c.pamphlet: Include "axiom-c-macros.h" === src/clef/Makefile.pamphlet ================================================================== --- src/clef/Makefile.pamphlet (revision 349) +++ src/clef/Makefile.pamphlet (patch openpty-again level 1) @@ -23,7 +23,7 @@ clef_objects = $(clef_sources:.c=.$(OBJEXT)) -clef_LDADD = -L$(abs_top_builddir)/src/lib -lspad +clef_LDADD = -L$(abs_top_builddir)/src/lib -lspad $(EXTRA_LIBS) clef_DEPENDENCIES = @ === src/lib/ChangeLog.build-improvements ================================================================== --- src/lib/ChangeLog.build-improvements (revision 349) +++ src/lib/ChangeLog.build-improvements (patch openpty-again level 1) @@ -1,3 +1,7 @@ +2006-11-29 Humberto Ortiz Zuazaga <[EMAIL PROTECTED]> + + * openpty.c.pamphlet: use openpty if available + 2006-11-26 Gabriel Dos Reis <[EMAIL PROTECTED]> * XDither.c.pamphlet: Include axiom-c-macros.h === src/lib/openpty.c.pamphlet ================================================================== --- src/lib/openpty.c.pamphlet (revision 349) +++ src/lib/openpty.c.pamphlet (patch openpty-again level 1) @@ -10,17 +10,9 @@ \tableofcontents \eject \section{MAC OSX and BSD platform changes} -Since we have no other information we are adding the [[MACOSXplatform]] variable -to the list everywhere we find [[LINUXplatform]]. This may not be correct but -we have no way to know yet. We have also added the [[BSDplatform]] variable. -MAC OSX is some variant of BSD. These should probably be merged but we -cannot yet prove that. -<<mac osx platform change 1>>= -#if defined(SUN4OS5platform) ||defined(ALPHAplatform) || defined(HP10platform) || defined(LINUXplatform) || defined(MACOSXplatform) || defined(BSDplatform) -@ -<<mac osx platform change 2>>= -#if defined(SUNplatform) || defined(HP9platform) || defined(LINUXplatform) || defined(MACOSXplatform) || defined(BSDplatform) -@ +We should really use autotools to check for Unix 98 pty support. +Before this is done below we hardcode information about each platform. + \section{License} <<license>>= /* @@ -71,7 +63,24 @@ #include <stropts.h> #endif +#ifdef HAVE_OPENPTY_DECL +# if HAVE_UTIL_H +# include <util.h> +# elif HAVE_PTY_H +# include <pty.h> +# endif +#elif HAVE_OPENPTY +/* The symbol openpty is allegedly present but its + declaration was not found in any of the above headers. + So, we fake it here. Note this is NOT a prototype + declaration. */ +int openpty(); +#else +# define AXIOM_DONT_USE_OPENPTY 1 +#endif +#define AXIOM_USE_OPENPTY !AXIOM_DONT_USE_OPENPTY + #include "openpty.H1" @@ -97,6 +106,9 @@ int ptyopen(int *controller,int * server, char *controllerPath,char * serverPath) { +#if AXIOM_USE_OPENPTY + return openpty(controller, server, serverPath, 0, 0); +#else #if defined(SUNplatform) || defined (HP9platform) || defined(RTplatform) ||defined(AIX370platform) || defined(BSDplatform) int looking = 1, i; int oflag = O_RDWR; /* flag for opening the pty */ @@ -140,7 +152,8 @@ return(fdm); #endif -<<mac osx platform change 1>> +/* MAC OS X 10.3 does not support Unix 98 pty's */ +#if defined(SUN4OS5platform) ||defined(ALPHAplatform) || defined(HP10platform) || defined(LINUXplatform) || defined(BSDplatform) extern int grantpt(int); extern int unlockpt(int); extern char* ptsname(int); @@ -192,6 +205,7 @@ return (*controller); #endif +#endif } @@ -204,7 +218,7 @@ sprintf(serv, "/dev/ttyp%02x", channelNo); channelNo++; #endif -<<mac osx platform change 2>> +#if defined(SUNplatform) || defined(HP9platform) || defined(LINUXplatform) || defined(MACOSXplatform) || defined(BSDplatform) static int channelNo = 0; static char group[] = "pqrstuvwxyzPQRST"; static int groupNo = 0; === src/sman/ChangeLog.build-improvements ================================================================== --- src/sman/ChangeLog.build-improvements (revision 349) +++ src/sman/ChangeLog.build-improvements (patch openpty-again level 1) @@ -1,3 +1,7 @@ +2006-11-29 Humberto Ortiz-Zuazaga <[EMAIL PROTECTED]> + + * Makefile.pamphlet: add -lutil to sman link flags if needed + 2006-11-29 Gabriel Dos Reis <[EMAIL PROTECTED]> * sman.c.pamphlet (should_I_clef): Recover lost return type. === src/sman/Makefile.pamphlet ================================================================== --- src/sman/Makefile.pamphlet (revision 349) +++ src/sman/Makefile.pamphlet (patch openpty-again level 1) @@ -47,7 +47,7 @@ sman_sources = sman.c sman_SOURCES = $(addsuffix .pamphlet, $(sman_sources)) sman_objects = $(sman_sources:.c=.$(OBJEXT)) -sman_LDADD = -L$(build_libdir) -lspad +sman_LDADD = -L$(build_libdir) -lspad $(EXTRA_LIBS) sman_DEPENDENCIES = ==== BEGIN SVK PATCH BLOCK ==== Version: svk 1.08 (darwin) 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 ==== END SVK PATCH BLOCK ==== _______________________________________________ Axiom-developer mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/axiom-developer
