Hi Zaak, Based on the test for fortran compilers, couldn't you do something similar?
As I am no fortran expert I am not really sure which types you are looking for, but I would suspect you could get what you want based on the attached example? Cheers, Yngve Den 19. sep. 2013 22:03, skrev Zaak Beekman: > Caveat: I am somewhat new to CMake. > > I am programming a library to compute diagnostic statistics on VERY > large data sets. (Possibly in parallel too.) The algorithm is > numerically stable and online/streaming. The Fortran standard makes no > guarantee of what (signed) integer types are available on a given > system, but provides a means of requesting integers of different sizes > and will let you know at run time whether or not they exist. However, > kind (type) specification of variables must occur at compile time. > (This isn't strictly true in F03/F08 but compiler support is limited > ATM.) Since the algorithm is designed for extremely large data sets > (9TB!) and the number of elements visited in the set so far appears in > the algorithm, I would like to use the largest available integer kind > to keep track of this quantity so that it doesn't overflow. > > I think what I need to do is create a test program and use try_run() > and then configure_file(), which leads me to my questions: > > 1. Can I have a multiple source file program and pass it to > try_run()? It seems like the answer is no. > 2. Since Fortran has no concept of a return value (not formally as > far as the standard is concerned) it looks like I need to pass the > information about available kind types in the RUN_OUTPUT_VARIABLE > back to CMake and manipulate it there. Does this variable just get > populated with a string which is whatever your code (that you > try_ran) outputs to stdout? > 3. Has someone written a module to diagnose available Fortran kind > types? That they're willing to share? > 4. If not, where do I look for advice and best practices to write one > myself? > > TIA, > Izaak Beekman > =================================== > (301)244-9367 > Princeton University Doctoral Candidate > Mechanical and Aerospace Engineering > ibeek...@princeton.edu <mailto:ibeek...@princeton.edu> > > UMD-CP Visiting Graduate Student > Aerospace Engineering > ibeek...@umiacs.umd.edu <mailto:ibeek...@umiacs.umd.edu> > ibeek...@umd.edu <mailto:ibeek...@umd.edu> > > > -- > > 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://www.cmake.org/mailman/listinfo/cmake
cmake_minimum_required(VERSION 2.8) project(test_fortran_integers Fortran) macro(test_integer i) message("Checking for integer*${i}..") set(filename ${CMAKE_BINARY_DIR}/test_integer_${i}.f) file(WRITE ${filename} " program main\n") file(APPEND ${filename} " integer*${i} myinteger\n") file(APPEND ${filename} " end program main\n") try_compile(HAVE_INTEGER_${i} ${CMAKE_BINARY_DIR} ${filename}) message("Checking for integer*${i}.. ${HAVE_INTEGER_${i}}") endmacro() test_integer(2) test_integer(4) test_integer(6)
-- 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://www.cmake.org/mailman/listinfo/cmake