Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch E3SM build system to CMake! #3043

Merged
merged 50 commits into from
Nov 18, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
e2478f1
Make mpas-ocean build using CMake!
jgfouca Jun 7, 2019
d8ada07
Updates to bld_diff to accomodate MPAS
jgfouca Jun 10, 2019
cefd17b
Make MPAS seaice build using CMake!
jgfouca Jun 13, 2019
373a6ec
Upgrades to bld_diff for cpp handling
jgfouca Jun 14, 2019
6b0dde6
Make MPAS landice build using CMake!
jgfouca Jun 14, 2019
b2551e5
Switch data/stub modules to cmake
jgfouca Jun 24, 2019
b6ed1f2
The final link of e3sm.exe is now also done by cmake
jgfouca Jun 27, 2019
35006b1
Progress, need to work on CMakelists file now
jgfouca Jun 28, 2019
19c63f2
Progress
jgfouca Jun 28, 2019
abc854e
Progress, A cases now seem to build with a single cmake invocation
jgfouca Jun 28, 2019
403d62b
Progress, MPAS working with single CMake call
jgfouca Jun 29, 2019
39944af
Minor fixes for mosart buildlib script
jgfouca Jun 29, 2019
af2c41b
Compsets with multiple MPAS components are now working
jgfouca Jul 2, 2019
363b368
Add support for using old build system
jgfouca Jul 3, 2019
6fcca38
Add back Makefile
jgfouca Jul 3, 2019
95efeeb
Minor fix for old-style building of cime components
jgfouca Jul 3, 2019
1a02661
Now that we've exposed so much more parallelism in our builds,
jgfouca Jul 3, 2019
ce410c8
Fix linker language
jgfouca Jul 5, 2019
47f5bb1
Fix cice cppdef filename
jgfouca Jul 5, 2019
dbcdb6f
Fix threads, buildconf for 2-case tests
jgfouca Jul 5, 2019
b352f91
Do not add mpas subdir if not using any MPAS components
jgfouca Jul 5, 2019
f448171
Fix X cases
jgfouca Jul 6, 2019
3535750
Fix bug in cosp handling for cam
jgfouca Jul 7, 2019
387e84a
Add support for ninja backend
jgfouca Jul 8, 2019
f30ff29
Libs can live in their natural location
jgfouca Jul 8, 2019
34863ff
Progress towards separate build dirs for components
jgfouca Jul 8, 2019
ccc4d4f
With separate build dirs, special handling of xshare is no longer needed
jgfouca Jul 8, 2019
3c934e6
Only E3SM needs --use-old option to case.build
jgfouca Jul 9, 2019
3ebac4b
Fix pylint warnings
jgfouca Jul 10, 2019
7ce802c
change cmake bld dir
jgfouca Jul 10, 2019
2c66234
Add helper for setting flags for indv files.
jgfouca Jul 11, 2019
0e731f5
Fix generation of cmake macros for negated string checks
jgfouca Jul 19, 2019
695715f
Fix paths to cime files in Depends.intel.cmake
jgfouca Jul 22, 2019
64a7e19
Disable compiler checks that happen upon cmake launch
jgfouca Jul 22, 2019
33bb5de
Fix comment
jgfouca Jul 25, 2019
48fc5eb
Fix summit cxx linking
jgfouca Jul 25, 2019
1d1d12f
Fixes for summit + pgiacc
jgfouca Jul 25, 2019
17cd0ca
Significant refactor to support per-component macro settings
jgfouca Oct 29, 2019
6111f5a
Upstream merge
jgfouca Oct 30, 2019
b73cd36
MPAS' mandatory use of PIO2 should be caputured in make cmake files, …
jgfouca Oct 31, 2019
696e375
Add comment pertaining to MPAS
jgfouca Oct 31, 2019
ceb4a34
Make ninja the default backend
jgfouca Nov 1, 2019
ca66477
Make sure ninja builds are verbose
jgfouca Nov 1, 2019
35935f9
Fixes for cori
jgfouca Nov 4, 2019
9c2eb5e
Add dry-run capability to case.build
jgfouca Nov 5, 2019
9968604
Merge remote-tracking branch 'origin/master' into jgfouca/cime/case_b…
jgfouca Nov 14, 2019
d87e1ce
e3sm no longer uses MODEL in config_compilers
jgfouca Nov 14, 2019
c24b324
Forgot to push these compy fixes
jgfouca Nov 15, 2019
5f73364
Switch back to gmake as default backend
jgfouca Nov 16, 2019
9b74244
No need to set CMAKE_EXE_LINKER flags, target_link_libs already was h…
jgfouca Nov 17, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cime/config/e3sm/machines/Depends.gnu.cmake
Original file line number Diff line number Diff line change
@@ -1 +1 @@
set_property(SOURCE cam/src/dynamics/fv/geopk.F90 APPEND_STRING PROPERTY COMPILE_FLAGS " -fcray-pointer ")
e3sm_add_flags("cam/src/dynamics/fv/geopk.F90" "-fcray-pointer")
10 changes: 5 additions & 5 deletions cime/config/e3sm/machines/Depends.ibm.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ set(SSOBJS
cam/src/chemistry/mozart/mo_drydep.F90)

foreach(ITEM IN LISTS SSOBJS)
set_property(SOURCE ${ITEM} APPEND_STRING PROPERTY COMPILE_FLAGS " -qsmallstack ")
e3sm_add_flags("${ITEM}" "-qsmallstack")
endforeach()

if (compile_threaded)
set_property(SOURCE share/util/shr_reprosum_mod.F90 APPEND_STRING PROPERTY COMPILE_FLAGS " -qsmp=noauto:noomp ")
e3sm_add_flags("share/util/shr_reprosum_mod.F90" "-qsmp=noauto:noomp")
endif()

# These routines benefit from -qnostrict without violating the bfb test
Expand Down Expand Up @@ -37,11 +37,11 @@ set(NOINLINE

if (NOT DEBUG)
foreach(ITEM IN LISTS PERFOBJS)
set_property(SOURCE ${ITEM} APPEND_STRING PROPERTY COMPILE_FLAGS " -qnostrict ")
e3sm_add_flags("${ITEM}" "-qnostrict")
endforeach()

foreach(ITEM IN LISTS REDUCEOPT)
set_property(SOURCE ${ITEM} APPEND_STRING PROPERTY COMPILE_FLAGS " -O2 ")
e3sm_add_flags("${ITEM}" "-O2")
endforeach()

endif()
Expand All @@ -52,5 +52,5 @@ endif()
list(APPEND NOOPT_FILES cam/src/utils/buffer.F90)

foreach(ITEN IN LISTS NOINLINE)
set_property(SOURCE ${ITEM} APPEND_STRING PROPERTY COMPILE_FLAGS " -Q! ")
e3sm_add_flags("${ITEM}" "-Q!")
endforeach()
31 changes: 13 additions & 18 deletions cime/config/e3sm/machines/Depends.intel.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -5,46 +5,41 @@ set(PERFOBJS
homme/src/share/derivative_mod_base.F90
homme/src/share/bndry_mod_base.F90
homme/src/theta-l/prim_advance_mod.F90
homme/src/pese/prim_advance_mod.F90
homme/src/theta/prim_advance_mod.F90
homme/src/preqx/share/prim_advance_mod.F90
homme/src/preqx/share/viscosity_preqx_base.F90
homme/src/share/viscosity_base.F90
homme/src/theta-l/viscosity_theta.F90
homme/src/theta/viscosity_theta.F90
homme/src/theta-l/eos.F90
homme/src/theta/eos.F90
homme/src/theta/hevi_mod.F90
cam/src/physics/cam/uwshcu.F90)

set(REDUCED_PRECISION_OBJS share/util/shr_wv_sat_mod.F90)
set(REDUCED_PRECISION_OBJS ${CIMESRC_PATH}/share/util/shr_wv_sat_mod.F90)

set(SHR_RANDNUM_FORT_OBJS
share/RandNum/src/kissvec/kissvec_mod.F90
share/RandNum/src/mt19937/mersennetwister_mod.F90
share/RandNum/src/dsfmt_f03/dSFMT_interface.F90
share/RandNum/src/shr_RandNum_mod.F90)
${CIMESRC_PATH}/share/RandNum/src/kissvec/kissvec_mod.F90
${CIMESRC_PATH}/share/RandNum/src/mt19937/mersennetwister_mod.F90
${CIMESRC_PATH}/share/RandNum/src/dsfmt_f03/dSFMT_interface.F90
${CIMESRC_PATH}/share/RandNum/src/shr_RandNum_mod.F90)

set(SHR_RANDNUM_C_OBJS
share/RandNum/src/dsfmt_f03/dSFMT.c
share/RandNum/src/dsfmt_f03/dSFMT_utils.c
share/RandNum/src/kissvec/kissvec.c)
${CIMESRC_PATH}/share/RandNum/src/dsfmt_f03/dSFMT.c
${CIMESRC_PATH}/share/RandNum/src/dsfmt_f03/dSFMT_utils.c
${CIMESRC_PATH}/share/RandNum/src/kissvec/kissvec.c)

if (NOT DEBUG)
foreach(ITEM IN LISTS PERFOBJS)
set_property(SOURCE ${ITEM} APPEND_STRING PROPERTY COMPILE_FLAGS " -O3 -fp-model fast -no-prec-div ")
e3sm_add_flags("${ITEM}" "-O3 -fp-model fast -no-prec-div")
endforeach()

foreach(ITEM IN LISTS REDUCED_PRECISION_OBJS)
set_property(SOURCE ${ITEM} APPEND_STRING PROPERTY COMPILE_FLAGS " -fimf-precision=low -fp-model fast ")
e3sm_add_flags("${ITEM}" "-fimf-precision=low -fp-model fast")
endforeach()

foreach(ITEM IN LISTS SHR_RANDNUM_FORT_OBJS)
set_property(SOURCE ${ITEM} APPEND_STRING PROPERTY COMPILE_FLAGS " -O3 -fp-model fast -no-prec-div -no-prec-sqrt -qoverride-limits ")
e3sm_add_flags("${ITEM}" "-O3 -fp-model fast -no-prec-div -no-prec-sqrt -qoverride-limits")
endforeach()

foreach(ITEM IN LISTS SHR_RANDNUM_C_OBJS)
set_property(SOURCE ${ITEM} APPEND_STRING PROPERTY COMPILE_FLAGS " -O3 -fp-model fast ")
e3sm_add_flags("${ITEM}" "-O3 -fp-model fast")
endforeach()

endif()
endif()
2 changes: 1 addition & 1 deletion cime/config/e3sm/machines/Depends.summit.pgiacc.cmake
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
foreach(ITEM IN LISTS FILES_NEED_CUDA_FLAGS)
set_property(SOURCE ${ITEM} APPEND_STRING PROPERTY COMPILE_FLAGS " -DUSE_OPENACC=1 -acc -ta=tesla,cc70,pinned -Minfo=accel ")
e3sm_add_flags("${ITEM}" "-DUSE_OPENACC=1 -acc -ta=tesla,cc70,pinned -Minfo=accel")
endforeach()
2 changes: 1 addition & 1 deletion cime/config/e3sm/machines/Depends.summitdev.pgiacc.cmake
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
foreach(ITEM IN LISTS FILES_NEED_CUDA_FLAGS)
set_property(SOURCE ${ITEM} APPEND_STRING PROPERTY COMPILE_FLAGS " -DUSE_OPENACC=1 -acc -ta=tesla,cc60,pinned -Minfo=accel ")
e3sm_add_flags("${ITEM}" "-DUSE_OPENACC=1 -acc -ta=tesla,cc60,pinned -Minfo=accel")
endforeach()
4 changes: 1 addition & 3 deletions cime/config/e3sm/machines/Depends.theta.intel.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

if (NOT DEBUG)
foreach(ITEM IN LISTS PERFOBJS)
get_property(ITEM_FLAGS SOURCE ${ITEM} PROPERTY COMPILE_FLAGS)
string(REPLACE "-fp-model fast" "" ITEM_FLAGS "${ITEM_FLAGS}")
set_property(SOURCE ${ITEM} PROPERTY COMPILE_FLAGS "${ITEM_FLAGS}")
e3sm_remove_flags("${ITEM}" "-fp-model fast")
endforeach()
endif()
Loading