Hi George, You could (ab)use the "assembler plugin" system for that. Define your own CMake-ASM-BGQ*.cmake files and use the assembler to compile the sources.
Here's how I did this a couple of years ago for the BG/P.
In the CMakeLists.txt file for the files that need to be compiled with
the BG/P compiler I have:
## ---------------------------------------------------------------------------
## Enable BGP specific assembler.
## Use the BGP assembler also for linking C/C++ programs.
## ---------------------------------------------------------------------------
enable_language(ASM-BGP)
set(CMAKE_C_LINK_EXECUTABLE ${CMAKE_ASM-BGP_LINK_EXECUTABLE})
set(CMAKE_CXX_LINK_EXECUTABLE ${CMAKE_ASM-BGP_LINK_EXECUTABLE})
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)
CMakeDetermineASM-BGPCompiler.cmake:
set(ASM_DIALECT "-BGP")
set(CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT ${CMAKE_ASM_COMPILER})
include(CMakeDetermineASMCompiler)
set(ASM_DIALECT)
CMakeTestASM-BGPCompiler.cmake:
set(ASM_DIALECT "-BGP")
include(CMakeTestASMCompiler)
set(ASM_DIALECT)
Hope this helps.
Regards,
Marcel Loose.
On 15/10/14 04:23, George Zagaris wrote:
> Dear all,
>
> I am working on a project where on certain platforms, namely, on a
> BG/Q or Cray, we have to cross-compile the code, but still, there are
> parts of the code that should only be compiled for the front end,
> login nodes.
>
> Typically, we have a toolchain file, which among other things sets:
> - CMAKE_CXX_COMPILER
> - CMAKE_C_COMPILER
> - CMAKE_FORTRAN_COMPILER
>
> to the respective cross-compilers available on the target platform.
>
> This compiles everything for the back-end.
>
> The obvious way to compile front-end tools is to create another
> directory, e.g., "front-end-build" and run cmake therein to
> re-configure and build with a front-end compiler.
>
> However, since only a relatively small subset of the files needs to be
> compiled for the front-end, it is desirable to do this within the same
> build, which leads to my question:
>
> Is it possible to tell CMake to build certain files with a different
> compiler? I know there is a way to set file properties to control the
> compiler flags of certain files. Is there a "blessed" approach to
> control the compiler for certain files and/or directories (and avoid
> things like set(CMAKE_CXX_COMPILER...) within a CMakeLists file)?
>
> Thank you very much for all your help.
>
> Best,
> George
>
>
>
>
<<attachment: loose.vcf>>
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake
