# # module: CMakeLists.txt # author: Bruce Palmer # description: CMake build for GA. Only MPI-based runtimes are supported. # # DISCLAIMER # # This material was prepared as an account of work sponsored by an # agency of the United States Government. Neither the United States # Government nor the United States Department of Energy, nor Battelle, # nor any of their employees, MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR # ASSUMES ANY LEGAL LIABILITY OR RESPONSIBILITY FOR THE ACCURACY, # COMPLETENESS, OR USEFULNESS OF ANY INFORMATION, APPARATUS, PRODUCT, # SOFTWARE, OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT # INFRINGE PRIVATELY OWNED RIGHTS. # # # ACKNOWLEDGMENT # # This software and its documentation were produced with United States # Government support under Contract Number DE-AC06-76RLO-1830 awarded by # the United States Department of Energy. The United States Government # retains a paid-up non-exclusive, irrevocable worldwide license to # reproduce, prepare derivative works, perform publicly and display # publicly by or for the US Government, including the right to # distribute to other US Government contractors. # # -*- mode: cmake -*- # ------------------------------------------------------------- # file: CMakeLists.txt # ------------------------------------------------------------- include_directories(BEFORE ${PROJECT_SOURCE_DIR}/global/src ${PROJECT_BINARY_DIR}/global/src ${PROJECT_SOURCE_DIR}/ma ${PROJECT_BINARY_DIR}/ma ${PROJECT_BINARY_DIR}/gaf2c ${PROJECT_SOURCE_DIR}/comex/src-armci # ${PROJECT_SOURCE_DIR}/tcgmsg ${PROJECT_SOURCE_DIR}/LinAlg/lapack+blas ${PROJECT_SOURCE_DIR}/global/testing ${PROJECT_BINARY_DIR}) set(TEST_NPROCS_1 1) set(TEST_NPROCS_2 2) if(MPI_PR) set(TEST_NPROCS_1 2) set(TEST_NPROCS_2 3) endif() # ------------------------------------------------------------- # Build test executables # ------------------------------------------------------------- # This test uses random() and srandom() which are not available on Windows if(NOT MSVC) ga_add_parallel_test (mulmatpatchc "mulmatpatchc.c util.c" ${TEST_NPROCS_1}) endif() ga_add_parallel_test (elempatch "elempatch.c util.c" ) ga_add_parallel_test (getmem "getmem.c util.c" ) ga_add_parallel_test (mtest "mtest.c util.c" ) ga_add_parallel_test (normc "normc.c util.c" ) ga_add_parallel_test (matrixc "matrixc.c" ) ga_add_parallel_test (ntestc "ntestc.c" ) ga_add_parallel_test (nbtestc "nbtestc.c" ) ga_add_parallel_test (ntestfc "ntestfc.c" ) ga_add_parallel_test (packc "packc.c util.c" ) ga_add_parallel_test (print "print.c util.c" ) ga_add_parallel_test (scan_addc "scan_addc.c util.c" ) ga_add_parallel_test (scan_copyc "scan_copyc.c util.c") ga_add_parallel_test (testc "testc.c util.c" ) ga_add_parallel_test (testmult "testmult.c util.c" ) ga_add_parallel_test (testmatmultc "testmatmultc.c" ) ga_add_parallel_test (testmultrect "testmultrect.c" ) ga_add_parallel_test (gemmtest "gemmtest.c" ) ga_add_parallel_test (read_only "read_only.c" ) ga_add_parallel_test (cache_test "cache_test.c" ) ga_add_parallel_test (unpackc "unpackc.c util.c" ) ga_add_parallel_test (perf2 "perf2.c" ) ga_add_parallel_test (ga-mpi "ga-mpi.c util.c" ) ga_add_parallel_test (lock "lock.c util.c" ) ga_add_parallel_test (comm_init "comm_init.c util.c" ) ga_add_parallel_test (patch_enumc "patch_enumc.c util.c" ) ga_add_parallel_test (simple_groups_commc "simple_groups_commc.c util.c") ga_add_parallel_test (thread_perf_contig "thread_perf_contig.c util.c" ) ga_add_parallel_test (thread_perf_strided "thread_perf_strided.c util.c") ga_add_parallel_test (threadsafec "threadsafec.c util.c" ) if(LAPACK_FOUND) ga_add_parallel_test (ga_lu "ga_lu.c util.c") endif() if (ENABLE_FORTRAN) ga_add_parallel_test (bin "bin.F ffflush.F" Fortran) ga_add_parallel_test (blktest "blktest.F ffflush.F" Fortran) ga_add_parallel_test (g2test "g2test.F ffflush.F util.c" Fortran) ga_add_parallel_test (g3test "g3test.F ffflush.F util.c" Fortran) ga_add_parallel_test (ga_shift "ga_shift.F ffflush.F" Fortran) ga_add_parallel_test (ghosts "ghosts.F ffflush.F util.c" Fortran) ga_add_parallel_test (jacobi "jacobi.F ffflush.F" Fortran) ga_add_parallel_test (mir_perf2 "mir_perf2.F ffflush.F util.c" Fortran) ga_add_parallel_test (mmatrix "mmatrix.F ffflush.F util.c" Fortran) ga_add_parallel_test (mulmatpatch "mulmatpatch.F ffflush.F testblas.F" Fortran) ga_add_parallel_test (nbtest "nbtest.F ffflush.F util.c" Fortran) ga_add_parallel_test (nb2test "nb2test.F ffflush.F util.c" Fortran) ga_add_parallel_test (ndim "ndim.F ffflush.F util.c" Fortran) ga_add_parallel_test (patch "patch.F ffflush.F testblas.F" Fortran) ga_add_parallel_test (patch2 "patch2.F ffflush.F" Fortran) ga_add_parallel_test (patch_enumf "patch_enumf.F ffflush.F" Fortran) ga_add_parallel_test (perfmod "perfmod.F ffflush.F util.c" Fortran) ga_add_parallel_test (perform "perform.F ffflush.F util.c" Fortran) ga_add_parallel_test (perf "perf.F ffflush.F util.c" Fortran) ga_add_parallel_test (pg2test "pg2test.F ffflush.F util.c" Fortran) ga_add_parallel_test (pgtest "pgtest.F ffflush.F util.c" Fortran) ga_add_parallel_test (scan "scan.F ffflush.F" Fortran) ga_add_parallel_test (sparse "sparse.F ffflush.F" Fortran) ga_add_parallel_test (sprsmatmult "sprsmatmult.F ffflush.F" Fortran) ga_add_parallel_test (sprs_testf "sprs_testf.F ffflush.F" Fortran) ga_add_parallel_test (stride "stride.F ffflush.F" Fortran) ga_add_parallel_test (test "test.F ffflush.F util.c" Fortran) ga_add_parallel_test (testmatmult "testmatmult.F ffflush.F util.c" Fortran) ga_add_parallel_test (testsolve "testsolve.F ffflush.F" Fortran) ga_add_parallel_test (overlay "overlay.F ffflush.F util.c" Fortran) ga_add_parallel_test (testeig "testeig.F ffflush.F" Fortran) ga_add_parallel_test (simple_groups "simple_groups.F ffflush.F" Fortran) ga_add_parallel_test (simple_groups_comm "simple_groups_comm.F ffflush.F" Fortran) # Generated Tests function(generate_ngatests testname) add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/${testname}.F COMMAND ${ga_m4_cmd} ${PROJECT_SOURCE_DIR}/global/testing/${testname}.m4 > ${CMAKE_BINARY_DIR}/${testname}.F WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/global/testing COMMENT "Generating ${testname} test" ) endfunction() generate_ngatests(nga-onesided) generate_ngatests(nga-patch) generate_ngatests(nga-periodic) generate_ngatests(nga-scatter) generate_ngatests(ngatest) generate_ngatests(nga-util) set (NGATEST_GEN_SRCS ${CMAKE_BINARY_DIR}/nga-onesided.F ${CMAKE_BINARY_DIR}/nga-patch.F ${CMAKE_BINARY_DIR}/nga-periodic.F ${CMAKE_BINARY_DIR}/nga-scatter.F ${CMAKE_BINARY_DIR}/ngatest.F ${CMAKE_BINARY_DIR}/nga-util.F ) add_custom_target( GenerateNGATests ALL DEPENDS ${NGATEST_GEN_SRCS} ) set_source_files_properties( ${NGATEST_GEN_SRCS} PROPERTIES GENERATED TRUE ) ga_add_parallel_test (nga-onesided "${CMAKE_BINARY_DIR}/nga-onesided.F ffflush.F util.c" ${TEST_NPROCS_2} Fortran) ga_add_parallel_test (nga-patch "${CMAKE_BINARY_DIR}/nga-patch.F ffflush.F util.c" ${TEST_NPROCS_1} Fortran) ga_add_parallel_test (nga-periodic "${CMAKE_BINARY_DIR}/nga-periodic.F ffflush.F util.c" Fortran ) ga_add_parallel_test (nga-scatter "${CMAKE_BINARY_DIR}/nga-scatter.F ffflush.F util.c" Fortran ) ga_add_parallel_test (ngatest "${CMAKE_BINARY_DIR}/ngatest.F ffflush.F util.c" ${TEST_NPROCS_1} Fortran) ga_add_parallel_test (nga-util "${CMAKE_BINARY_DIR}/nga-util.F ffflush.F util.c" Fortran ) add_dependencies(nga-onesided.x GenerateNGATests) add_dependencies(nga-patch.x GenerateNGATests) add_dependencies(nga-periodic.x GenerateNGATests) add_dependencies(nga-scatter.x GenerateNGATests) add_dependencies(ngatest.x GenerateNGATests) add_dependencies(nga-util.x GenerateNGATests) endif()