[Insight-developers] redefinition of HAVE_SYS_TYPES_H and HAVE_STDINT_H

Tom Vercauteren tom.vercauteren at gmail.com
Mon Nov 23 13:25:34 EST 2009


Hi Brad,

I just tried to use some of your recent changes (to move on with the
unicode filename patch) and found two issues.

1) The availability of fenv.h is the last thing that is done in the
main CMakeLists.h
http://www.itk.org/cgi-bin/viewcvs.cgi/CMakeLists.txt?root=Insight&r1=1.355&r2=1.356&sortby=date
However HAVE_FENV_H is used by itkConfigure.h.in
http://www.itk.org/cgi-bin/viewcvs.cgi/itkConfigure.h.in?root=Insight&r1=1.35&r2=1.36&sortby=date

This means that when starting from a clean build tree
  CONFIGURE_FILE(${ITK_SOURCE_DIR}/itkConfigure.h.in
    ${ITK_BINARY_DIR}/itkConfigure.h)
will be called before checking for HAVE_FENV_H and ITK_HAVE_FENV_H will be false

The fix seems easy:
  CONFIGURE_FILE(${ITK_SOURCE_DIR}/itkConfigure.h.in
    ${ITK_BINARY_DIR}/itkConfigure.h)
should be the last thing done in the main CMakeLists.txt, right?



2) It looks like the following patch is wrong
http://www.itk.org/cgi-bin/viewcvs.cgi/itkConfigure.h.in?root=Insight&r1=1.35&r2=1.36&sortby=date

I don't get how this kind of code may work:
  #if @HAVE_FENV_H@
  #define ITK_HAVE_FENV_H
  #endif /* @HAVE_FENV_H@ */

What I just tried (with a cvs version of cmake) is to add this right
before the previous call to CONFIGURE_FILE
  CHECK_INCLUDE_FILES("unistd.h" HAVE_UNISTD_H)
  CHECK_INCLUDE_FILES("windows.h" HAVE_WINDOWS_H)
and
  #if @HAVE_UNISTD_H@
  #define ITK_HAVE_UNISTD_H
  #endif /* @HAVE_UNISTD_H@ */

  #ifdef @HAVE_WINDOWS_H@
  #define ITK_HAVE_WINDOWS_H
  #endif /* @HAVE_WINDOWS_H@ */


Looking at the generated itkConfigure.h, I get (on linux)
  #if 1
  #define ITK_HAVE_UNISTD_H
  #endif /* 1 */

  #if
  #define ITK_HAVE_WINDOWS_H
  #endif /*  */

This leads to a gcc error:
  error: #if with no expression


Reverting to cmakedefine works fine in this case.

I am not sure how to ideally achieve your goal but something like
  #ifndef HAVE_UNISTD_H
  #cmakedefine HAVE_UNISTD_H
  #endif
  #ifdef HAVE_UNISTD_H
  #define ITK_HAVE_UNISTD_H
  #endif
seems to do the trick (even thought it is quite ugly).


Regards,
Tom


On Mon, Nov 23, 2009 at 15:41, Bradley Lowekamp <blowekamp at mail.nih.gov> wrote:
> The complication is that the CHECK_TYPE_SIZE macro implicitly searches for
> some headers. So for this particular header there is no CHECK_INCLUDE_FILES
> directly called by Insight/CMake.
> I am trying my approach now, and hopefully will have a commit to remove
> those pesky warning shortly.
> Brad
> On Nov 23, 2009, at 3:43 AM, Gaëtan Lehmann wrote:
>
> Le 20 nov. 09 à 14:01, Bradley Lowekamp a écrit :
>
> But if  itkConfigure.h is included before phython then it wont work, because
> phython is not ifndef. I think what may be needed is similar to the
> following:
>
> #if @HAVE_STDINT_H@
>
> #define ITK_HAVE_STDINT_H
>
> #endif
>
> I'd need to look at what the value of @HAVE_STDINT_H@ would be. By doing
> this we can use the standard naming inside CMAKE, and convert it to our own
> in the ITK code.
>
>
> Why not using directly the ITK_ prefix in cmake?
> The chance to have a collision in that case seems quite low.
>
> Am I missing something?
>
> Gaëtan
>
> --
> Gaëtan Lehmann
> Biologie du Développement et de la Reproduction
> INRA de Jouy-en-Josas (France)
> tel: +33 1 34 65 29 66    fax: 01 34 65 29 09
> http://voxel.jouy.inra.fr  http://www.itk.org
> http://www.mandriva.org  http://www.bepo.fr
>
>
> ========================================================
>
> Bradley Lowekamp
>
> Lockheed Martin Contractor for
>
> Office of High Performance Computing and Communications
>
> National Library of Medicine
>
> blowekamp at mail.nih.gov
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://kitware.com/products/protraining.html
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-developers
>
>


More information about the Insight-developers mailing list