[CMake] CMake still broken post-2.8.1

Phil Smith phil at voltage.com
Tue Oct 25 13:54:25 EDT 2011


No, alas. Code is proprietary and the compiler is licensed too.

From: David Cole [mailto:david.cole at kitware.com]
Sent: Tuesday, October 25, 2011 1:41 PM
To: Phil Smith
Cc: Eric Noulard; Brad King; cmake at cmake.org; Bill Hoffman; Janet Graff
Subject: Re: [CMake] CMake still broken post-2.8.1

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<mailto: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<mailto:eric.noulard at gmail.com>]
Sent: Tuesday, October 25, 2011 12:40 PM
To: Phil Smith
Cc: Brad King; cmake at cmake.org<mailto: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<mailto: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/42580def/attachment.htm>


More information about the CMake mailing list