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