Oops! Forgot to CC to the list.

Hi Tod,

I'll try to answer some of your questions below inline (I've snipped off
parts of your mail). We're also using a BlueGeneP, but not for so many
packages/executables as you probably do.

On Wed, 2010-06-23 at 01:02 -0700, Todd Gamblin wrote:
> Hi,

-- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< --

> I was able to build with either if I just manually specified the
> compilers and linker like this:
> 
> 
> > env CC=gcc C++=g++ LD=ld ./bootstrap --prefix=${CMAKE_HOME}
> 
> 
> > env CC=xlc C++=xlC LD=xlC ./bootstrap --prefix=${CMAKE_HOME}
> 
> 
That is probably the safest way to do it, anyways. You then have full
control over which compiler is used to build your stuff.

> But It would've been nice if I didn't have to do all that.  Is PPC
> Linux not used many other places anymore?  I guess this is a
> sles10/ppc64 environment, so maybe that is throwing the script off.
> 
> 
> 
> 
> 2. The FindMPI module's library search breaks because the the
> cross-compiler name on BlueGene/P contains -l. Specifically, the GNU
> compute node compilers on BlueGene/P are named like this:
> 
> 
> > powerpc-bgp-linux-g++
> 
> 
> And the FindMPI module claims that it can't find the '-inux-g++'
> library, or something similar.  I was able to fix this by modifying
> FindMPI's search to look for -l only when it's followed by a space.
>  This is a little worrisome because I think that is a standard gnu
> naming convention, so other platforms with compilers named blah-linux
> are going to have the same bug.
> 
> 
That is a known bug. I've filed it in the bug tracker
http://www.vtk.org/Bug/view.php?id=9093. I've also uploaded a patch
(take the second one), that fixes that problem.

I didn't have any further problems with FindMPI, though. 
For what it's worth, here are the settings I'm using:

set(BGPCN_C         /usr/bin/gcc)
set(BGPCN_CXX       /usr/bin/g++)
set(BGPCN_ASM      
/bgsys/drivers/ppcfloor/gnu-linux/bin/powerpc-bgp-linux-g++)

set(BGPCN_COMPILE_DEFINITIONS
  -B/bgsys/drivers/ppcfloor/gnu-linux/powerpc-bgp-linux/bin
  -DHAVE_BGP
  -DHAVE_BGP_CN
  -DHAVE_FCNP
  -DHAVE_MPI
  -I/bgsys/drivers/ppcfloor/comm/include
  -I/bgsys/drivers/ppcfloor/arch/include)

set(CMAKE_FIND_ROOT_PATH
/bgsys/drivers/ppcfloor/gnu-linux/powerpc-bgp-linux)

Note that these BGPCN_* variables are set before the project() statement
and they are used to set the CMAKE_* equivalents. For the assembler, we
use the GCC frontend and the BGP backend, because the latter knows how
to handle double-hummer instructions. 

You also need the following three files:

$ cat CMakeASM-BGPInformation.cmake
set(ASM_DIALECT "-BGP")
set(CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS S)
set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT
"<CMAKE_ASM${ASM_DIALECT}_COMPILER> <DEFINES> <FLAGS> -c -o <OBJECT>
<SOURCE>")
set(CMAKE_ASM${ASM_DIALECT}_LINK_EXECUTABLE
"<CMAKE_ASM${ASM_DIALECT}_COMPILER> <FLAGS> <LINK_FLAGS> <OBJECTS>  -o
<TARGET> <LINK_LIBRARIES>")
include(CMakeASMInformation)
set(ASM_DIALECT)

$ cat CMakeDetermineASM-BGPCompiler.cmake
set(ASM_DIALECT "-BGP")
set(CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT ${CMAKE_ASM_COMPILER})
include(CMakeDetermineASMCompiler)
set(ASM_DIALECT)

$ cat CMakeTestASM-BGPCompiler.cmake
set(ASM_DIALECT "-BGP")
include(CMakeTestASMCompiler)
set(ASM_DIALECT)

Also note that we do NOT set CMAKE_SYSTEM_NAME, because with the above
setup this is not needed, and will even screw up things. I know that
it's a bit hackish, but it needed to be done this way, because we're not
really cross-compiling but merely swapping compiler back-ends.

> 
> 
> 3. Finding system libraries in directories not named 'lib'
> 
> 

-- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< --

I cannot really comment on the issues you mentioned here. Hope you found
my contribution useful.

> Thanks!
> 
You're welcome ;-)

> 
> Todd Gamblin
> Center for Applied Scientific Computing
> Lawrence Livermore National Laboratory

Best regards.

-- 
Marcel Loose
Senior Software Engineer, Computing Group, R&D, Astron, the Netherlands



_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to