help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: make error about log2 for octave-3.1.51 (Not 3.1.50)


From: Jaroslav Hajek
Subject: Re: make error about log2 for octave-3.1.51 (Not 3.1.50)
Date: Thu, 24 Jul 2008 14:59:59 +0200

On Thu, Jul 24, 2008 at 11:54 AM, Tatsuro MATSUOKA
<address@hidden> wrote:
> Hello Jaroslav
>
> Thank you for your reply
>
>
>> This looks really weird given that there is no / token on the line. I
>> suspect that
>> you have log2 defined to some macro and that causes problems.
>
> I do not define log2 myself.  Perhaps gcc on cygwin defines it.
> Since octave 3.0.1, the log2 fuction has no problem at building.
>

Yes, that's what I meant. I didn't mean to accuse you of causing the mess :)

>
>
>> Can you try running:
>>
>> /opt/octave/gcc-3.4.4dw2/bin/g++ -E -C
>> -I/opt/octave/gcc-3.4.4dw2/include -I/usr/include
>>  -I/opt/octave/octave-3.1.51/include  -I. -I.. -I../liboctave -I../src
>> -I../libcruft/misc
>>  -DHAVE_CONFIG_H -mieee-fp -Wall -W -Wshadow -Wold-style-cast -g -O2 Cell.cc
>>
>> in the directory where the make failure occured and posting the output?
> I will show the results of which the log2 related.

Sorry, but this tells me nothing new. I wanted to see the lines that
correspond to the
log2 methods definitions in ov.h and ov-base.h. They will have
different line numbers in this output - that's why I wanted the whole
output. If you don't want to clutter the ML with large dumps, please
use an attachment or some service like pastebin.
I suspect that some macro like

#define log2(x) (log(x)/log(2))

or similar interferes with the definition

virtual octave_value log2 (void) const;

turning it into a nonsense. As John says, it will probably be
necessary to add #undef log2 to some proper place. Anyway, he is right
- please report this to address@hidden, as this list is not dedicated
to bug fixing.

>
> 493: /* Define to 1 if you have the `log2' function. */
> 494: /* #undef HAVE_LOG2 */
>
>
> The below lines perhaps are not related but I will show them as a reference
> 47686: extern double xlog2 (double x);
> 47687: extern Complex xlog2 (const Complex& x);
> 47688: extern double xlog2 (double x, int& exp);
> 47689: extern Complex xlog2 (const Complex& x, int& exp);
>
> 47740: extern float xlog2 (float x);
> 47741: extern FloatComplex xlog2 (const FloatComplex& x);
> 47742: extern float xlog2 (float x, int& exp);
> 47743: extern FloatComplex xlog2 (const FloatComplex& x, int& exp);
>
> To see the how configure detect log2
> configure:25965: checking for log2
> configure:26029: /opt/octave/gcc-3.4.4dw2/bin/gcc -o conftest.exe -g -O2
> -I/opt/octave/gcc-3.4.4dw2/include -I/usr/include 
> -I/opt/octave/octave-3.1.51/include
> -L/opt/octave/gcc-3.4.4dw2/lib -L/opt/octave/octave-3.1.51/lib conftest.c 
> -ldl -lwsock32 -lblas -lhdf5
> -lz -lm  -lwsock32 >&5
> conftest.c:265: warning: conflicting types for built-in function 'log2'
> /cygdrive/c/DOCUME~1/Tatsu/LOCALS~1/Temp/cccEhDNQ.o: In function `main':
> /home/octaves/octave-3.1.51/conftest.c:284: undefined reference to `_log2'
> collect2: ld returned 1 exit status
> configure:26035: $? = 1
> configure: failed program was:
> | /* confdefs.h.  */
> | #define PACKAGE_NAME ""
> | #define PACKAGE_TARNAME ""
> | #define PACKAGE_VERSION ""
> | #define PACKAGE_STRING ""
> | #define PACKAGE_BUGREPORT ""
> | #define OCTAVE_SOURCE 1
> | #define _GNU_SOURCE 1
> | #define STDC_HEADERS 1
> | #define HAVE_SYS_TYPES_H 1
> | #define HAVE_SYS_STAT_H 1
> | #define HAVE_STDLIB_H 1
> | #define HAVE_STRING_H 1
> | #define HAVE_MEMORY_H 1
> | #define HAVE_STRINGS_H 1
> | #define HAVE_INTTYPES_H 1
> | #define HAVE_STDINT_H 1
> | #define HAVE_UNISTD_H 1
> | #define SEPCHAR ':'
> | #define SEPCHAR_STR ":"
> | #define __NO_MATH_INLINES 1
> | #define CXX_NEW_FRIEND_TEMPLATE_DECL 1
> | #define CXX_ISO_COMPLIANT_LIBRARY 1
> | #define CXX_BROKEN_REINTERPRET_CAST 1
> | #define CXX_ABI gnu_v3
> | #define HAVE_LIBM 1
> | #define HAVE_QHULL 1
> | #define HAVE_PCRE 1
> | #define HAVE_REGEXEC 1
> | #define HAVE_REGEX 1
> | #define HAVE_ZLIB_H 1
> | #define HAVE_ZLIB 1
> | #define HAVE_HDF5_H 1
> | #define HAVE_HDF5 1
> | #define HAVE_H5GGET_NUM_OBJS 1
> | #define HAVE_FFTW3 1
> | #define HAVE_GLPK_H 1
> | #define HAVE_GLPK 1
> | #define HAVE_CURL_CURL_H 1
> | #define HAVE_CURL 1
> | #define HAVE_MAGICK 1
> | #define HAVE_GL_GL_H 1
> | #define HAVE_GL_GLU_H 1
> | #define HAVE_OPENGL 1
> | #define HAVE_FLTK 1
> | #define HAVE_IEEE754_DATA_FORMAT 1
> | #define F77_FUNC(name,NAME) name ## _
> | #define F77_FUNC_(name,NAME) name ## __
> | #define HAVE_BLAS 1
> | #define HAVE_SUITESPARSE_AMD_H 1
> | #define HAVE_AMD 1
> | #define HAVE_SUITESPARSE_UMFPACK_H 1
> | #define HAVE_UMFPACK 1
> | #define UMFPACK_SEPARATE_SPLIT 1
> | #define HAVE_SUITESPARSE_COLAMD_H 1
> | #define HAVE_COLAMD 1
> | #define HAVE_SUITESPARSE_CCOLAMD_H 1
> | #define HAVE_CCOLAMD 1
> | #define HAVE_SUITESPARSE_CHOLMOD_H 1
> | #define HAVE_CHOLMOD 1
> | #define HAVE_SUITESPARSE_CS_H 1
> | #define HAVE_CXSPARSE 1
> | #define HAVE_GETHOSTNAME 1
> | #define HAVE_GETPWNAM 1
> | #define HAVE_LIBWSOCK32 1
> | #define HAVE_DEV_T 1
> | #define HAVE_INO_T 1
> | #define HAVE_NLINK_T 1
> | #define HAVE_NLINK_T 1
> | #define HAVE_LONG_LONG_INT 1
> | #define HAVE_UNSIGNED_LONG_LONG_INT 1
> | #define HAVE_SIGSET_T 1
> | #define HAVE_SIG_ATOMIC_T 1
> | #define SIZEOF_SHORT 2
> | #define SIZEOF_INT 4
> | #define SIZEOF_LONG 4
> | #define SIZEOF_LONG_LONG 8
> | #define HAVE_ALLOCA_H 1
> | #define HAVE_ALLOCA 1
> | #define NPOS std::string::npos
> | #define HAVE_PLACEMENT_DELETE 1
> | #define HAVE_DYNAMIC_AUTO_ARRAYS 1
> | #define STDC_HEADERS 1
> | #define HAVE_DIRENT_H 1
> | #define TIME_WITH_SYS_TIME 1
> | #define HAVE_SYS_WAIT_H 1
> | #define HAVE_ASSERT_H 1
> | #define HAVE_CURSES_H 1
> | #define HAVE_DLFCN_H 1
> | #define HAVE_FCNTL_H 1
> | #define HAVE_FLOAT_H 1
> | #define HAVE_GRP_H 1
> | #define HAVE_IEEEFP_H 1
> | #define HAVE_INTTYPES_H 1
> | #define HAVE_LIMITS_H 1
> | #define HAVE_LOCALE_H 1
> | #define HAVE_MEMORY_H 1
> | #define HAVE_NCURSES_H 1
> | #define HAVE_POLL_H 1
> | #define HAVE_PTHREAD_H 1
> | #define HAVE_PWD_H 1
> | #define HAVE_STDINT_H 1
> | #define HAVE_STDLIB_H 1
> | #define HAVE_STRING_H 1
> | #define HAVE_SYS_IOCTL_H 1
> | #define HAVE_SYS_PARAM_H 1
> | #define HAVE_SYS_POLL_H 1
> | #define HAVE_SYS_RESOURCE_H 1
> | #define HAVE_SYS_SELECT_H 1
> | #define HAVE_SYS_STAT_H 1
> | #define HAVE_SYS_TIME_H 1
> | #define HAVE_SYS_TIMES_H 1
> | #define HAVE_SYS_TYPES_H 1
> | #define HAVE_SYS_UTSNAME_H 1
> | #define HAVE_SYS_UTIME_H 1
> | #define HAVE_TERMCAP_H 1
> | #define HAVE_UNISTD_H 1
> | #define HAVE_UTIME_H 1
> | #define HAVE_SSTREAM 1
> | #define HAVE_TERMIO_H 1
> | #define HAVE_GLOB_H 1
> | #define HAVE_FNMATCH_H 1
> | #define HAVE_FNMATCH 1
> | #define HAVE_GLOB 1
> | #define HAVE_ATEXIT 1
> | #define HAVE_BASENAME 1
> | #define HAVE_BCOPY 1
> | #define HAVE_BZERO 1
> | #define HAVE_CHMOD 1
> | #define HAVE_DUP2 1
> | #define HAVE_ENDGRENT 1
> | #define HAVE_ENDPWENT 1
> | #define HAVE_EXECVP 1
> | #define HAVE_EXPM1 1
> | #define HAVE_EXPM1F 1
> | #define HAVE_FCNTL 1
> | #define HAVE_FORK 1
> | #define HAVE_GETCWD 1
> | #define HAVE_GETEGID 1
> | #define HAVE_GETEUID 1
> | #define HAVE_GETGID 1
> | #define HAVE_GETGRENT 1
> | #define HAVE_GETGRGID 1
> | #define HAVE_GETGRNAM 1
> | #define HAVE_GETPGRP 1
> | #define HAVE_GETPID 1
> | #define HAVE_GETPPID 1
> | #define HAVE_GETPWENT 1
> | #define HAVE_GETPWUID 1
> | #define HAVE_GETTIMEOFDAY 1
> | #define HAVE_GETUID 1
> | #define HAVE_GETWD 1
> | #define HAVE_KILL 1
> | #define HAVE_LGAMMA 1
> | #define HAVE_LGAMMAF 1
> | #define HAVE_LGAMMA_R 1
> | #define HAVE_LGAMMAF_R 1
> | #define HAVE_LINK 1
> | #define HAVE_LOCALTIME_R 1
> | #define HAVE_LOG1P 1
> | #define HAVE_LOG1PF 1
> | #define HAVE_LSTAT 1
> | #define HAVE_MEMMOVE 1
> | #define HAVE_MKDIR 1
> | #define HAVE_MKFIFO 1
> | #define HAVE_MKSTEMP 1
> | #define HAVE_ON_EXIT 1
> | #define HAVE_PIPE 1
> | #define HAVE_POLL 1
> | #define HAVE_PUTENV 1
> | #define HAVE_RAISE 1
> | #define HAVE_READLINK 1
> | #define HAVE_REALPATH 1
> | #define HAVE_RENAME 1
> | #define HAVE_RINDEX 1
> | #define HAVE_RMDIR 1
> | #define HAVE_ROUND 1
> | #define HAVE_SELECT 1
> | #define HAVE_SETGRENT 1
> | #define HAVE_SETLOCALE 1
> | #define HAVE_SETPWENT 1
> | #define HAVE_SETVBUF 1
> | #define HAVE_SIGACTION 1
> | #define HAVE_SIGPENDING 1
> | #define HAVE_SIGPROCMASK 1
> | #define HAVE_SIGSUSPEND 1
> | #define HAVE_SNPRINTF 1
> | #define HAVE_STAT 1
> | #define HAVE_STRCASECMP 1
> | #define HAVE_STRDUP 1
> | #define HAVE_STRERROR 1
> | #define HAVE_STRNCASECMP 1
> | #define HAVE_STRPTIME 1
> | #define HAVE_STRSIGNAL 1
> | #define HAVE_SYMLINK 1
> | #define HAVE_TEMPNAM 1
> | #define HAVE_TGAMMA 1
> | #define HAVE_TGAMMAF 1
> | #define HAVE_TRUNC 1
> | #define HAVE_UMASK 1
> | #define HAVE_UNAME 1
> | #define HAVE_UNLINK 1
> | #define HAVE_USLEEP 1
> | #define HAVE_UTIME 1
> | #define HAVE_VFPRINTF 1
> | #define HAVE_VSPRINTF 1
> | #define HAVE_VSNPRINTF 1
> | #define HAVE_WAITPID 1
> | #define HAVE__CHMOD 1
> | #define HAVE__SNPRINTF 1
> | #define HAVE_STRFTIME 1
> | #define OCTAVE_HAVE_BROKEN_STRPTIME 1
> | #define HAVE_LIBDL 1
> | #define HAVE_DLOPEN 1
> | #define HAVE_DLSYM 1
> | #define HAVE_DLERROR 1
> | #define HAVE_DLCLOSE 1
> | #define HAVE_DLOPEN_API 1
> | #define ENABLE_DYNAMIC_LINKING 1
> | #define HAVE_TIMEVAL 1
> | #define HAVE_FINITE 1
> | #define HAVE_ISNAN 1
> | #define HAVE_ISINF 1
> | #define HAVE_COPYSIGN 1
> | #define HAVE__FINITE 1
> | #define HAVE__ISNAN 1
> | #define HAVE__COPYSIGN 1
> | #define HAVE_DECL_SIGNBIT 1
> | #define HAVE_ACOSH 1
> | #define HAVE_ACOSHF 1
> | #define HAVE_ASINH 1
> | #define HAVE_ASINHF 1
> | #define HAVE_ATANH 1
> | #define HAVE_ATANHF 1
> | #define HAVE_ERF 1
> | #define HAVE_ERFF 1
> | #define HAVE_ERFC 1
> | #define HAVE_ERFCF 1
> | #define HAVE_EXP2 1
> | #define HAVE_EXP2F 1
> | /* end confdefs.h.  */
> | /* Define log2 to an innocuous variant, in case <limits.h> declares log2.
> |    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
> | #define log2 innocuous_log2
> |
> | /* System header to define __stub macros and hopefully few prototypes,
> |     which can conflict with char log2 (); below.
> |     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
> |     <limits.h> exists even on freestanding compilers.  */
> |
> | #ifdef __STDC__
> | # include <limits.h>
> | #else
> | # include <assert.h>
> | #endif
> |
> | #undef log2
> |
> | /* Override any GCC internal prototype to avoid an error.
> |    Use char because int might match the return type of a GCC
> |    builtin and then its argument prototype would still apply.  */
> | #ifdef __cplusplus
> | extern "C"
> | #endif
> | char log2 ();
> | /* The GNU C library defines this for functions which it implements
> |     to always fail with ENOSYS.  Some functions are actually named
> |     something starting with __ and the normal name is an alias.  */
> | #if defined __stub_log2 || defined __stub___log2
> | choke me
> | #endif
> |
> | #ifdef F77_DUMMY_MAIN
> |
> | #  ifdef __cplusplus
> |      extern "C"
> | #  endif
> |    int F77_DUMMY_MAIN() { return 1; }
> |
> | #endif
> | int
> | main ()
> | {
> | return log2 ();
> |   ;
> |   return 0;
> | }
>
>
> I think that the lines like the following will be required
>
> #ifndef HAVE_LOG2
> #define log2(x) xlog2(x)
> #endif
>

Almost certainly not. Actually some hidden macro like this interferes
with the octave_value
method definitions.


> Regards
>
> Tatsuro
>
>
>
>
> --------------------------------------
> Stop! Global Warming ~ Yahoo! JAPAN Earth Project
> http://pr.mail.yahoo.co.jp/earthproject/
>



-- 
RNDr. Jaroslav Hajek
computing expert
Aeronautical Research and Test Institute (VZLU)
Prague, Czech Republic
url: www.highegg.matfyz.cz


reply via email to

[Prev in Thread] Current Thread [Next in Thread]