CMake fixes (#137)
* Fix CMakeLists to handle build as a subproject When several CMake generated projects are build together, it is common practice to have a 'superproject' CMakeLists that uses add_subdir(proj1) add_subdir(proj2) ... where each subproject is a self contained CMake based project (Example proj1=HPX, proj2=nestmc, proj3=another, ...) CMAKE_SOURCE_DIR always points to the top level directory which is the superproject dir in this case, whereas PROJECT_SOURCE_DIR always points to the root of the current project() in the CMakeLists so one shouod use PROJECT_SOURCE_DIR as this gets the relative paths correct. * Add option to turn off auto generation from *.mod files * Fix #134 : Change CMake WITH_OPTION to NMC_WITH_OPTION, compiler #define to NMC_HAVE_OPTION 1) The user may select an option by saying NMC_WITH_XXX 2) This may trigger CMake to use find_package(...) or setup some other variables. CMake can then set variable NMC_HAVE_XXX and add a what has actually been used. 3) Code should use #ifdef NMC_HAVE_XXX to check for a feature Old CMake/define New CMake Compiler #define ---------------- --------- ---------------- THREADING_MODEL NMC_THREAD_MODEL WITH_TBB NMC_WITH_TBB NMC_HAVE_TBB WITH_OMP NMC_WITH_OMP NMC_HAVE_OMP WITH_SERIAL NMC_WITH_SERiAL NMC_HAVE_SERIAL WITH_MPI NMC_WITH_MPI NMC_HAVE_MPI WITH_CUDA NMC_WITH_CUDA NMC_HAVE_CUDA WITH_GPU NMC_HAVE_GPU WITH_ASSERTIONS NMC_WITH_ASSERTIONS NMC_HAVE_ASSERTIONS WITH_TRACE NMC_WITH_TRACE NMC_HAVE_TRACE WITH_PROFILING NMC_WITH_PROFILING NMC_HAVE_PROFILING Other user visible CMake vars ----------------------------- VECTORIZE_TARGET -> NMC_VECTORIZE_TARGET USE_OPTIIZED_KERNELS -> NMC_USE_OPTIIZED_KERNELS BUILD_VALIDATION_DATA -> NMC_BUILD_VALIDATION_DATA BUILD_JULIA_VALIDATION_DATA -> NMC_BUILD_JULIA_VALIDATION_DATA BUILD_NRN_VALIDATION_DATA -> NMC_BUILD_NRN_VALIDATION_DATA VALIDATION_DATA_DIR -> NMC_VALIDATION_DATA_DIR Variables such as NMC_THREADING_MODEL and NMC_VECTORIZE_TARGET now use enumerated cmake values so you can toggle between them in ccmake gui. SYSTEM_TYPE_CRAY/BGQ -> NMC_SYSTEM_TYPE (Generic/Cray/BGQ) * Use generator expression for modcc path Some IDE's (like Xcode for example), override the CMake binary paths and add /Debug or /Release etc so rules that have hard coded paths to binaries will fail.
Showing
- .gitignore 2 additions, 0 deletions.gitignore
- .ycm_extra_conf.py 2 additions, 2 deletions.ycm_extra_conf.py
- CMakeLists.txt 116 additions, 64 deletionsCMakeLists.txt
- README.md 10 additions, 10 deletionsREADME.md
- mechanisms/CMakeLists.txt 2 additions, 2 deletionsmechanisms/CMakeLists.txt
- miniapp/CMakeLists.txt 2 additions, 2 deletionsminiapp/CMakeLists.txt
- miniapp/miniapp.cpp 2 additions, 2 deletionsminiapp/miniapp.cpp
- src/CMakeLists.txt 6 additions, 3 deletionssrc/CMakeLists.txt
- src/backends/fvm.hpp 1 addition, 1 deletionsrc/backends/fvm.hpp
- src/communication/global_policy.hpp 2 additions, 2 deletionssrc/communication/global_policy.hpp
- src/communication/mpi_global_policy.hpp 2 additions, 2 deletionssrc/communication/mpi_global_policy.hpp
- src/memory/allocator.hpp 5 additions, 5 deletionssrc/memory/allocator.hpp
- src/memory/gpu.hpp 1 addition, 1 deletionsrc/memory/gpu.hpp
- src/memory/host_coordinator.hpp 3 additions, 3 deletionssrc/memory/host_coordinator.hpp
- src/memory/memory.hpp 2 additions, 2 deletionssrc/memory/memory.hpp
- src/memory/wrappers.hpp 3 additions, 3 deletionssrc/memory/wrappers.hpp
- src/profiling/profiler.cpp 3 additions, 3 deletionssrc/profiling/profiler.cpp
- src/profiling/profiler.hpp 2 additions, 2 deletionssrc/profiling/profiler.hpp
- src/threading/omp.hpp 2 additions, 2 deletionssrc/threading/omp.hpp
- src/threading/serial.hpp 2 additions, 2 deletionssrc/threading/serial.hpp
Please register or sign in to comment