Menu

#162 itk 4.0 build failure due to missing tclUnixPort.h

4.0*
closed
5
2014-08-16
2009-01-06
No

Platform: sparc solaris 8, sun c compiler

tcl/tk cvs head
itk 4.0b1, as downloaded from the incr tcl download page

After downloading the tar, I did this:

gtar xfz itk4.0b1.tar.gz
mkdir itk4.0/unix
cd itk4.0/unix
../configure --prefix=/projects/sprs_lwv/tcl86 --enable-shared --enable-symbols --enable-stubs

where /projects/sprs_lwv/tcl86 is where I have tcl/tk 8.6 cvs head installed.

The configure appears to have completed. So I did a

gmake all test install

and got:
/opt/SUNWspro/bin/cc -DPACKAGE_NAME=\"itk\" -DPACKAGE_TARNAME=\"itk\" -DPACKAGE_
VERSION=\"4.0\" -DPACKAGE_STRING=\"itk\ 4.0\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HE
ADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING
_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_UNISTD_H=1
-DWORDS_BIGENDIAN=1 -DHAVE_LIMITS_H=1 -DHAVE_SYS_PARAM_H=1 -DTCL_THREADS=1 -D_RE
ENTRANT=1 -D_POSIX_PTHREAD_SEMANTICS=1 -DTCL_WIDE_INT_TYPE=long\ long -DHAVE_STR
UCT_DIRENT64=1 -DHAVE_STRUCT_STAT64=1 -DHAVE_OPEN64=1 -DHAVE_LSEEK64=1 -DHAVE_TY
PE_OFF64_T=1 -DUSE_TCL_STUBS=1 -DUSE_TK_STUBS=1 -DUSE_ITCL_STUBS=1 -DITK_LIBRAR
Y=\"/projects/sprs_lwv/tcl86/lib/itk4.0\" -I"/vol/tclsrcsol/tcl86/itcl/itcl/gene
ric" -I"../generic" -I"/vol/tclsrcsol/tcl86/tcl/generic" -I"/projects/sprs_lwv/t
cl86/include" -I/usr/openwin/include -g -KPIC -c `echo ../generic/itkArchBa
se.c` -o itkArchBase.o
"/vol/tclsrcsol/tcl86/tcl/generic/tclPort.h", line 27: cannot find include file:
"tclUnixPort.h"

And indeed, tclUnixPort.h isn't in the installation directory. Since configure indicates that it wants the directories with the public headers as well as the directories with the public Config.sh files, it looks like itk has a dependency on an internal header. I just checked the files installed with tcl 8.5 and it doesn't make tclUnixPort.h publically available either.

The include directories in the Makefile are the public directories and the tcl generic directories.

It doesn't appear to look in the tcl/unix directory for headers.

HOWEVER, when I add the directory, so that make finds the header, the code still doesn't build. It now says:

cc [...] -I"/vol/tclsrcsol/tcl86/itcl/itcl/gene
ric" -I"../generic" -I"/vol/tclsrcsol/tcl86/tcl/generic" -I"/vol/tclsrcsol/tcl86
/tcl/unix" -I"/projects/sprs_lwv/tcl86/include" -I/usr/openwin/include -g -K
PIC -c `echo ../generic/itkArchBase.c` -o itkArchBase.o
"../generic/itkArchBase.c", line 185: warning: implicit function declaration: It
clShowArgs
"../generic/itkArchBase.c", line 283: improper member use: iclsPtr
"../generic/itkArchBase.c", line 289: improper member use: iclsPtr
"../generic/itkArchBase.c", line 294: warning: implicit function declaration: It
cl_RenameCommand
"../generic/itkArchBase.c", line 306: warning: implicit function declaration: It
cl_SetCallFrameResolver
"../generic/itkArchBase.c", line 306: undefined struct/union member: resolvePtr
"../generic/itkArchBase.c", line 312: undefined struct/union member: contextStac
k
"../generic/itkArchBase.c", line 312: non-unique member requires struct/union po
inter: len
"../generic/itkArchBase.c", line 312: warning: left operand of "->" must be poin
ter to struct/union
"../generic/itkArchBase.c", line 315: undefined symbol: ItclCallContext
"../generic/itkArchBase.c", line 315: undefined symbol: callContextPtr
"../generic/itkArchBase.c", line 316: improper member use: contextStack
"../generic/itkArchBase.c", line 317: improper member use: contextStack
"../generic/itkArchBase.c", line 317: non-unique member requires struct/union po
inter: len
"../generic/itkArchBase.c", line 317: warning: left operand of "->" must be poin
ter to struct/union
"../generic/itkArchBase.c", line 317: warning: argument #1 is incompatible with
prototype:
prototype: pointer to struct Itcl_Stack {pointer to pointer to void valu
es, int len, int max, array[5] of pointer to void space} : "unknown", line 0
argument : pointer to int
"../generic/itkArchBase.c", line 317: warning: improper pointer/integer combinat
ion: op "="
"../generic/itkArchBase.c", line 318: warning: implicit function declaration: It
cl_SetCallFrameNamespace
"../generic/itkArchBase.c", line 318: non-unique member requires struct/union po
inter: nsPtr
"../generic/itkArchBase.c", line 318: left operand of "->" must be pointer to st
ruct/union
"../generic/itkArchBase.c", line 361: improper member use: contextStack
"../generic/itkArchBase.c", line 361: warning: argument #1 is incompatible with
prototype:
prototype: pointer to struct Itcl_Stack {pointer to pointer to void valu
es, int len, int max, array[5] of pointer to void space} : "unknown", line 0
argument : pointer to int
"../generic/itkArchBase.c", line 361: warning: improper pointer/integer combinat
ion: op "="
"../generic/itkArchBase.c", line 362: non-unique member requires struct/union po
inter: nsPtr
"../generic/itkArchBase.c", line 362: left operand of "->" must be pointer to st
ruct/union

and so on for several more pages.

Discussion

  • David Gravereaux

    • assigned_to: davygrvy --> nobody
     
  • David Gravereaux

    • assigned_to: nobody --> wiede
     
  • Arnulf Wiedemann

    Larry, you will also need the appropriate itcl directory available, I can see that from some of the error messages.
    Here is how I configure itk:
    ./configure --prefix=$HOME --with-tcl=../../tclhead/tcl/unix --with-tk=../../tkhead/tk/unix --with-tkinclude=../../tkhead/tk/generic --with-itcl=../itcl
    you will have to adapt the directory names to your environment.
    Hope that helps, otherwise please let me know here.

     
  • Arnulf Wiedemann

    • status: open --> pending-accepted
     
  • Larry W. Virden

    Larry W. Virden - 2009-01-15

    The --with-itcl argument is going to be a tough one, now that the itcl code is incorporated into tcl 8.6 .

    What specific directory is expected with that argument? Without that argument, I get an error about not being able to locate itclInt.h . However, when I look in tcl 8.6, I don't see that file anywhere.

    It surely would be useful if itk made use of the $prefix/lib/tclConfig.sh file to get the values for the --with-tcl , --with-tk, and --with-tkinclude arguments if not specified.

     
  • Larry W. Virden

    Larry W. Virden - 2009-01-15
    • status: pending-accepted --> open-accepted
     
  • Arnulf Wiedemann

    I will have to work on that, as the current configure is only for the itcl source packages, not the bundled ones. I will also have to learn about how to better use the *Config.sh files. Will let you know when I make progress.

     
  • Larry W. Virden

    Larry W. Virden - 2009-02-16

    TodayI tried itk 4.0b3 against the latest tcl 8.6 cvs head, and was successful in getting things to build.

    I did have to specify an argument of --with-itcl=$prefix/lib/itcl4.0b3 - it would be great if, in a future version of itk, configure would look in $prefix/lib for itcl ...

     
  • Arnulf Wiedemann

    • status: open-accepted --> closed
     

Log in to post a comment.