From bug-octave-request at bevo dot che dot wisc dot edu Wed Oct 15 23:21:52 1997 Subject: mkoctfile -llib does not work From: Gary Holt To: bug-octave at bevo dot che dot wisc dot edu Date: 16 Oct 1997 04:21:26 -0000 [Sorry if you got a previous bug report which was blank or incomplete. Evidently my editor and octave-bug got confused somehow.] Bug report for Octave 2.0.9 configured for alpha-dec-osf4.0 Description: ----------- Although mkoctfile recognizes the -llib option, it ignores it. Note that ldflags is never used after it is set in the script. Repeat-By: --------- For example, if you do a script like this: mkoctfile pgplot_octave -lcpgplot -lpgplot -lX11 -lm and then try to use the extension inside octave, it crashes (on my DEC alpha) because none of the libraries are actually linked in, so it jumps off into hyperspace. Fix: --- The following patch fixes the -l option, and also adds support for several additional options: .a files specified by full name -L/path/to/libs -I/include/path -Dsym These options are convenient for some kinds of compilation. ******************************************************************************* *** mkoctfile Wed Oct 15 21:12:44 1997 --- mkoctfile.new Wed Oct 15 21:08:34 1997 *************** *** 40,45 **** --- 40,46 ---- cfiles= ccfiles= + ccflags= f77files= objfiles= octfiles= *************** *** 100,106 **** EOF exit 0 ;; ! -l*) ldflags="$ldflags $1";; "") break --- 101,109 ---- EOF exit 0 ;; ! -[ID]* ) ! ccflags="$ccflags $1";; ! -[lL]* | *.a ) ldflags="$ldflags $1";; "") break *************** *** 154,161 **** b=`echo $f | sed 's,\.c$,,'` o=$b.o objfiles="$objfiles $o" ! $dbg $CC -c $CPPFLAGS $CPICFLAG $ALL_CFLAGS $f -o $o ! eval $CC -c $CPPFLAGS $CPICFLAG $ALL_CFLAGS $f -o $o done fi --- 157,164 ---- b=`echo $f | sed 's,\.c$,,'` o=$b.o objfiles="$objfiles $o" ! $dbg $CC -c $CPPFLAGS $CPICFLAG $ALL_CFLAGS $ccflags $f -o $o ! eval $CC -c $CPPFLAGS $CPICFLAG $ALL_CFLAGS $ccflags $f -o $o done fi *************** *** 174,188 **** esac o=$b.o objfiles="$objfiles $o" ! $dbg $CXX -c $CPPFLAGS $CXXPICFLAG $ALL_CXXFLAGS $f -o $o ! eval $CXX -c $CPPFLAGS $CXXPICFLAG $ALL_CXXFLAGS $f -o $o done fi # Link all the object files. ! $dbg $SH_LD $SH_LDFLAGS -o $octfile $objfiles ! eval $SH_LD $SH_LDFLAGS -o $octfile $objfiles # Maybe strip it. --- 177,191 ---- esac o=$b.o objfiles="$objfiles $o" ! $dbg $CXX -c $CPPFLAGS $CXXPICFLAG $ALL_CXXFLAGS $ccflags $f -o $o ! eval $CXX -c $CPPFLAGS $CXXPICFLAG $ALL_CXXFLAGS $ccflags $f -o $o done fi # Link all the object files. ! $dbg $SH_LD $SH_LDFLAGS -o $octfile $objfiles $ldflags ! eval $SH_LD $SH_LDFLAGS -o $octfile $objfiles $ldflags # Maybe strip it. ******************************************************************************* Configuration (please do not edit this section): ----------------------------------------------- uname output: OSF1 monet.klab.caltech.edu V4.0 464 alpha configure opts: --prefix=/home/dopey/octave-2.0.9 --with-f2c Fortran compiler: FFLAGS: F2C: f2c F2CFLAGS: FLIBS: -lf2c CPPFLAGS: INCFLAGS: -I/home/dopey/octave-2.0.9/include -I/home/dopey/octave-2.0.9/include/octave-2.0.9 C compiler: gcc, version 2.7.2.2 CFLAGS: -DHAVE_CONFIG_H -g -O2 -Wall CPICFLAG: C++ compiler: c++, version 2.7.2.2 CXXFLAGS: -DHAVE_CONFIG_H -fno-implicit-templates -g -O2 -Wall CXXPICFLAG: LDFLAGS: -g LIBFLAGS: -L/home/dopey/octave-2.0.9/lib RLD_FLAG: -Xlinker -rpath -Xlinker /home/dopey/octave-2.0.9/lib CXXLIBS: -lstdc++ -lm -L/home/dopey/gcc-2.7.2.2/lib/gcc-lib/alpha-dec-osf4.0/2.7.2.2 -L/usr/lib/cmplrs/cc -L/home/dopey/gcc-2.7.2.2/lib -lstdc++ -lm -lgcc -lc -lgcc TERMLIBS: -lcurses LIBS: LEXLIB: LIBPLPLOT: LIBDLFCN: DEFS: -DOCTAVE_SOURCE=1 -DSEPCHAR=':' -DSEPCHAR_STR=":" -DUSE_GNU_INFO=1 -DUSE_READLINE=1 -DF77_APPEND_UNDERSCORE=1 -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=8 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -DSTDC_HEADERS=1 -DHAVE_DIRENT_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_ASSERT_H=1 -DHAVE_CURSES_H=1 -DHAVE_FCNTL_H=1 -DHAVE_FLOAT_H=1 -DHAVE_GRP_H=1 -DHAVE_LIMITS_H=1 -DHAVE_MEMORY_H=1 -DHAVE_NAN_H=1 -DHAVE_PWD_H=1 -DHAVE_SGTTY_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_SELECT_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_TIMES_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_UTSNAME_H=1 -DHAVE_TERMCAP_H=1 -DHAVE_TERMIO_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_VARARGS_H=1 -DHAVE_ATEXIT=1 -DHAVE_BCOPY=1 -DHAVE_BZERO=1 -DHAVE_DUP2=1 -DHAVE_ENDGRENT=1 -DHAVE_ENDPWENT=1 -DHAVE_EXECVP=1 -DHAVE_FCNTL=1 -DHAVE_FORK=1 -DHAVE_GETCWD=1 -DHAVE_GETEGID=1 -DHAVE_GETEUID=1 -DHAVE_GETGID=1 -DHAVE_GETGRENT=1 -DHAVE_GETGRGID=1 -DHAVE_GETGRNAM=1 -DHAVE_GETHOSTNAME=1 -DHAVE_GETPGRP=1 -DHAVE_GETPID=1 -DHAVE_GETPPID=1 -DHAVE_GETPWENT=1 -DHAVE_GETPWNAM=1 -DHAVE_GETPWUID=1 -DHAVE_GETUID=1 -DHAVE_GETWD=1 -DHAVE_LSTAT=1 -DHAVE_MEMMOVE=1 -DHAVE_MKDIR=1 -DHAVE_MKFIFO=1 -DHAVE_PIPE=1 -DHAVE_PUTENV=1 -DHAVE_RENAME=1 -DHAVE_RINDEX=1 -DHAVE_RMDIR=1 -DHAVE_SETGRENT=1 -DHAVE_SETPWENT=1 -DHAVE_SETVBUF=1 -DHAVE_SIGACTION=1 -DHAVE_SIGPENDING=1 -DHAVE_SIGPROCMASK=1 -DHAVE_SIGSUSPEND=1 -DHAVE_STAT=1 -DHAVE_STRCASECMP=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRNCASECMP=1 -DHAVE_TEMPNAM=1 -DHAVE_UMASK=1 -DHAVE_UNLINK=1 -DHAVE_USLEEP=1 -DHAVE_VFPRINTF=1 -DHAVE_VSPRINTF=1 -DHAVE_WAITPID=1 -DHAVE_DLOPEN=1 -DHAVE_DLSYM=1 -DHAVE_DLERROR=1 -DHAVE_DLCLOSE=1 -DWITH_DL=1 -DWITH_DYNAMIC_LINKING=1 -DHAVE_LIBM=1 -DHAVE_FINITE=1 -DHAVE_ISNAN=1 -DHAVE_ACOSH=1 -DHAVE_ASINH=1 -DHAVE_ATANH=1 -DHAVE_ERF=1 -DHAVE_ERFC=1 -DHAVE_ST_BLKSIZE=1 -DHAVE_ST_BLOCKS=1 -DHAVE_ST_RDEV=1 -DHAVE_TM_ZONE=1 -DHAVE_GR_PASSWD=1 -DEXCEPTION_IN_MATH=1 -DRETSIGTYPE=void -DHAVE_SYS_SIGLIST=1 -DHAVE_POSIX_SIGNALS=1 -DHAVE_GETRUSAGE=1 -DHAVE_TIMES=1 -DGNUPLOT_HAS_MULTIPLOT=1 -DGNUPLOT_HAS_FRAMES=1 -- Gary Holt (626)-395-2882 holt at klab dot caltech dot edu http://www dot klab dot caltech dot edu/~holt/