[CMake] CMake still broken post-2.8.1

David Cole david.cole at kitware.com
Tue Oct 25 13:41:07 EDT 2011


Is your project's source publicly available? And are these compilers freely
available, too?

It may be easier for us to help with a more complete picture of what's going
on...


On Tue, Oct 25, 2011 at 1:32 PM, Phil Smith <phil at voltage.com> wrote:

> Replying inline is getting unwieldy, so I've excerpted what I'm replying to
> here.
>
> > Do you have a platform file for IBM_ZOS as well?
> Yes, there's a platform file, IBM_ZOS.cmake:
>
> INCLUDE(Platform/UnixPaths)
>
> (exciting, huh?)
>
> > what is the compiler ID found?
> -- The C compiler identification is unknown
>
> > may be you could try for force compiler:
> I don't understand what that means. Well, maybe I partly do: it means
> skipping the compile-a-tiny-program. Since I don't understand why I care
> about that, I don't understand the rest. I inherited our use of CMake,
> hacked it into working three+ years ago, so maybe
>
> >You did this in a clean build tree, right?
> Well, I whacked the CMakeCache.txt and the CMakeFiles directory.
>
> > May be with a REXX script ?
> I don't think I can wrap it in a Rexx script -- that's how we got here, eh?
> I did try this:
>
> SET(CMAKE_C_COMPILER   "cc.rex")
> SET(CMAKE_C_FLAGS "dcc.exe")
>
> ...since .rex is associated with Regina anyway. That got further, but it
> got to:
> Check for working C compiler: C:/SVN/Dignus/cc.rex
> ...and that hung. It never called cc.rex in that case (I suspect this is
> why I was explicitly prefacing it with regina.exe -- it was a long time ago
> that I set this up!).
>
> > Line 29 for which CMake version?
> > Do you mean this line:
> Yes, that's the line I meant.
>
> > I think it means replace spaces with ";" in order to get a proper list.
> OK, but why are arguments to the compiler supposed to be separated with
> semicolons? That doesn't seem right. Is something later supposed to undo
> this?
>
> -----Original Message-----
> From: Eric Noulard [mailto:eric.noulard at gmail.com]
> Sent: Tuesday, October 25, 2011 12:40 PM
> To: Phil Smith
> Cc: Brad King; cmake at cmake.org; Bill Hoffman; David Cole; Janet Graff
> Subject: Re: [CMake] CMake still broken post-2.8.1
>
> 2011/10/25 Phil Smith <phil at voltage.com>:
> > OK, but it should then reject the extra parameters, since it used to
> work.
>
> Difficult to warn about a usage you did not even dream of ?
> Now that we know I agree there should be a warning
> (if not a clean failure with explanation).
>
> >
> > In any case, I've changed the toolchain file:
> > ----------------------------------------
> > # This is a CMake Toolchain file, required for cross-compiling using
> > # the Dignus cross-compilers on Windows, compiling for z/OS.
> >
> > # Tell CMAKE the target system name
> > SET(CMAKE_SYSTEM_NAME "IBM_ZOS")
>
> Do you have a platform file for IBM_ZOS as well?
>
> if not
> what is the compiler ID found?
> "The C compiler identification is <WhatsInHere>"
>
> may be you could try for force compiler:
> see
> http://www.cmake.org/Wiki/CMake_Cross_Compiling#The_toolchain_file
> and
> cmake --help-module CMakeForceCompiler
>
> [...]
>
> > ----------------------------------------
> > ...and the behavior persists:
> > C:/Program Files/Regina/regina.exe  cc.rex;dcc.exe  CMakeCCompilerId.c
>
> You did this in a clean build tree, right?
>
>
> > So it's not clear that that's a solution. I can't wrap the regina call
> because what will I wrap it in? BAT is criminally busted -- it eats equals
> signs. So later calls with -fwhatever=value will be broken.
>
> May be with a REXX script ?
> Just a wild guess because I did only write 2 lines of REXX in my life
> so I may be wrong about the REXX capability.
>
> > If I comment out line 29 in CMakeDetermineCompilerId.cmake, it works with
> my old toolchain file, but fails later with the new one, because it appears
> to call "the compiler" without the "flags", and regina with no arguments
> produces Help and exits.
>
> Line 29 for which CMake version?
> Do you mean this line:
> STRING(REGEX REPLACE " +" ";" CMAKE_${lang}_COMPILER_ID_ARG1
> "${CMAKE_${lang}_COMPILER_ID_ARG1}")
>
>
> >
> > Why are the semicolons being inserted? If I wanted semicolons between the
> parameters, why wouldn't I just specify them?
> >
> > Brad, your comment in the thread says:
> >>Teach compiler identification to support values such as
> >>  export CC='gcc -g -O2'
> >>by separating the arguments on spaces.
> >
> > Not sure what "on spaces" means, but again, it seems wrong to me that
> anything is messing with my option format.
>
> I think it means replace spaces with ";" in order to get a proper list.
>
> May be the compiler args handling is broken in the cross-compiling case?
> Such kind of setup?
>
> --
> Erk
> Membre de l'April - « promouvoir et défendre le logiciel libre » -
> http://www.april.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20111025/960a5b12/attachment-0001.htm>


More information about the CMake mailing list