Server Levent Yilmaz wrote:
However the executables are invalid. The reason, which took me a while to figure out, is the use of shared libraries, which as I mentioned, is not allowed in the Catamount system. The front-end wrappers unfortunately do not automatically detect a possible misuse and proceed with linkage to any shared library which happens to be present on the linker command line. It turns out that the culprit was find_package(BLAS) in my CMakeLists.txt which detects a shared library (correct one for the front ends, invalid for Catamount). How can I implement, locally at least, workarounds for such issues? (such as say, prohibit finding and building shared library targets all together for this particular system only)

You have to setup the toolchain and CMAKE_FIND_ROOT_PATH to deal with the target platform:

  http://www.cmake.org/Wiki/CMake_Cross_Compiling

On a further note, in case you may want to expand definitions for this compiler, here are my suggestiong for a set of PGI flags for various build types (from user's guide - http://www.pgroup.com/doc/pgiug.pdf)

Fortran_FLAGS = -Mpreprocess -Kieee -fpic
Fortran_FLAGS_DEBUG = -g -O0 -Mbounds
Fortran_FLAGS_MINSIZEREL = -O2 -s
Fortran_FLAGS_RELEASE = -fast -O3 -Mipa=fast
Fortran_FLAGS_RELWITHDEB = -O2 -gopt

Also, one particular weirdness using this compiler, as compared to Intel or GNU compiler, is that CMake is somehow unable to copy the generated module files to ${CMAKE_Fortran_MODULE_DIRECTORY}. It might be possible that the related flag is incompatible. It should be -module <dir> for the PGI compiler, as opposed to -M<dir> for GNU.

Thanks for the flag info.  I've updated support for the compiler to include it.

-Brad
_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to