From: <ha...@on...> - 2004-05-04 05:22:25
|
On Mon, May 03, 2004 at 05:48:58PM -0700, Ethan Merritt wrote: > Disclaimer: > I had never built, nor run, gnuplot under VMS until today. > I was just curious, and this is what I found. I'm working on updating CONFIGURE.VMS to gnuplot v4.0.0 and have encountered the same behaviour that you report. I want to make make sure my build fixes are incorporated into the script rather than only as edits to my working config.h, so the configuration script is not quite ready for testing. What VMS and CRTL version do you have and do you generate DESCRIP.MMS or BUILD.COM? > > %%%%%%%%% Unhappy TBOOLEANs > > $ cc /DEFINE=(NO_GIH,HAVE_CONFIG_H,DECCRTL)/INCLUDE=[-]/PREFIX=ALL axis.c > > TBOOLEAN checkrange; > .............^ > %CC-W-PROMOTMATCHW, In the definition of the function "axis_unlog_interval", > the promoted type of checkrange is incompatible with the type of the corresponding > parameter in a prior declaration. > at line number 188 in file $DISK1:[MERRITT.GNUPLOT.SRC]AXIS.C;1 > Do you have stdbool.h? If so, define HAVE_STDBOOL in config.h Question: why is _Bool defined as unsigned char in syscfg.h? My understanding is that C99 types it as unsigned int, which DECC appears to expect. > %%%%%%%%%%% Bad macro syntax in x11.trm > > And this one in x11.trm, which must not have been tested in ages: > > #define GO(x) \ > { \ > char buffer[512]; int status; struct iosb iosb;\ > [lots of complicated stuff] > if((status & SS$_NORMAL) != SS$_NORMAL) exit(status); \ > } > > #define PRINT0(fmt) GO( (buffer, fmt) ) > #define PRINT1(fmt,p1) GO( (buffer, fmt,p1) ) > > > if (something) > PRINT0(...); > else if (something) > PRINT1(...); > > This syntax doesn't work because of the trailing semicolons. > I propose to replace it with the standard work-around: > #define GO(x) \ > do {...} while (0) > A simpler fix is if (something) { PRINT0(...); } else if (something) { PRINT1(...); } > %%%%%%%%%%%%% failure to use local routines if necessary > > %LINK-W-NUDFSYMS, 2 undefined symbols: > %LINK-I-UDFSYM, ADD_HISTORY > %LINK-I-UDFSYM, STRDUP > %LINK-W-USEUNDEF, undefined symbol STRDUP referenced > in psect $LINK$ offset %X00000C50 > in module SET file $DISK1:[MERRITT.GNUPLOT.SRC]SET.OBJ;1 > %LINK-W-USEUNDEF, undefined symbol ADD_HISTORY referenced > in psect $LINK$ offset %X00001490 > in module SHOW file $DISK1:[MERRITT.GNUPLOT.SRC]SHOW.OBJ;1 > %LINK-W-USEUNDEF, undefined symbol STRDUP referenced > in psect $LINK$ offset %X000006D0 > in module UNSET file $DISK1:[MERRITT.GNUPLOT.SRC]UNSET.OBJ;1 > > Sure enough - both show.c and unset.c try to call strdup() directly > rather than going through gp_strdup(). That fails if the system does > not provide strdup(). > Yes - presumably an oversight. > I don't know what the problem is with add_history() in show.c; > the same function call seems to have been resolved correctly at > other call sites. > I fixed that by making the add_history() call in show.c conditional on #ifdef READLINE as it is in command.c > %%%%%%%%%%%%%% various type checking > > The type of time_t seems to have been picked up incorrectly. > This results in many warning messages, but it may well be due > to my extremely minimal VMS configuration. > Try putting #define HAVE_TIME_T_IN_TIME_H 1 in config.h. Haven't assembled my source code changes into a patch file yet :-( -- Lucas Hart <ha...@on...> |