From a7c4cdaa2f8bff7051f635c2c7b3cc80ae576b63 Mon Sep 17 00:00:00 2001 From: Chen Zhang Date: Mon, 18 Apr 2016 11:14:32 -0400 Subject: [PATCH] update cmake build system --- CMakeLists.txt | 29 ++++++++++++++++------------- build_spectral.sh | 8 ++++---- code/.gitattributes | 8 -------- code/.gitignore | 3 --- src/CMakeLists.txt | 8 ++++---- src/quit__genmod.f90 | 2 +- 6 files changed, 25 insertions(+), 33 deletions(-) delete mode 100644 code/.gitattributes delete mode 100644 code/.gitignore diff --git a/CMakeLists.txt b/CMakeLists.txt index 255c8a6ff..6d802b18b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,6 +48,12 @@ compilerc: linker: \t@echo \${LINKERNAME}") +# Find DAMASK version (DAMASK_V) in DAMASK_ROOT +find_program (CAT_EXECUTABLE NAMES cat) +execute_process(COMMAND ${CAT_EXECUTABLE} ../../VERSION + RESULT_VARIABLE DAMASK_VERSION_RETURN + OUTPUT_VARIABLE DAMASK_V + OUTPUT_STRIP_TRAILING_WHITESPACE) # CMake will execute each target in the ${petsc_config_makefile} # to acquire corresponding PETSc Variables. @@ -69,11 +75,11 @@ execute_process(COMMAND ${MAKE_EXECUTABLE} -f ${petsc_config_makefile} "extlibs" # //its version information is used to identify whether it is INTEL FORTRAN # //or GNU FORTRAN, # //e.g. for PETSc configured with INTEL FORTRAN compiler -# // >>${MPIEXEC} -v +# // >>${MPIFC} -v # // ifort version 14.0.3 --> This line is captured and parsed by CMake execute_process(COMMAND ${MAKE_EXECUTABLE} -f ${petsc_config_makefile} "compilerf" - RESULT_VARIABLE MPIEXEC_RETURN - OUTPUT_VARIABLE MPIEXEC + RESULT_VARIABLE MPIFC_RETURN + OUTPUT_VARIABLE MPIFC OUTPUT_STRIP_TRAILING_WHITESPACE) # PETSc specified linker (MPIF90 + PETSc linking flags) execute_process(COMMAND ${MAKE_EXECUTABLE} -f ${petsc_config_makefile} "linker" @@ -95,14 +101,14 @@ foreach (exlib ${TMP_LIST}) set(PETSC_EXTERNAL_LIB "${PETSC_EXTERNAL_LIB} ${exlib}") endforeach(exlib) -set(CMAKE_Fortran_COMPILER "${MPIEXEC}") +set(CMAKE_Fortran_COMPILER "${MPIFC}") project (DAMASK Fortran) message("***Found PETSC_DIR:\n${PETSC_DIR}\n" ) message("***Found PETSC_INCLUDES:\n${PETSC_INCLUDES}\n" ) message("***Found PETSC_EXTERNAL_LIB:\n${PETSC_EXTERNAL_LIB}\n") message("***Found PETSC_LINKER:\n${PETSC_LINKER}\n" ) -message("***Found FORTRAN MPI COMPILER:\n${MPIEXEC}\n" ) +message("***Found FORTRAN MPI COMPILER:\n${MPIFC}\n" ) # # https://cmake.org/Wiki/CMake_FAQ#How_do_I_use_a_different_compiler.3F @@ -116,9 +122,9 @@ set (DAMASK_VERSION_MINOR ${DAMASK_V}) # Built-in options for DAMASK build system # -> can be overwritten from commandline/install_script option(OPENMP "Use OpenMP libaries for DAMASK" ON ) -option(OPTIMIZATION "DAMASK optimization level[NONE,DEFENSIVE,AGGRESSIVE,ULTRA]" "NONE") +option(OPTIMIZATION "DAMASK optimization level [OFF,DEFENSIVE,AGGRESSIVE]" "DEFENSIVE" ) option(SPECTRAL "Build spectral sovler for DAMASAK" OFF ) -option(FEM "Builb FEM solver for DAMASK" OFF ) +option(FEM "Build FEM solver for DAMASK" OFF ) # COMPILE VARIABLES add_definitions(-DDAMASKVERSION="${DAMASK_V}") @@ -148,7 +154,7 @@ endif() set (DAMASK_INCLUDE_FLAGS "${DAMASK_INCLUDE_FLAGS} ${PETSC_INCLUDES}" ) set (DAMASK_INCLUDE_FLAGS "${DAMASK_INCLUDE_FLAGS} -I${PROJECT_SOURCE_DIR}/lib") -if ("${OPTIMIZATION}" STREQUAL "NONE") +if ("${OPTIMIZATION}" STREQUAL "OFF") set (OPTIMIZATION_ifort "-O0 -no-ip") set (OPTIMIZATION_gfortran "-O0" ) elseif ("${OPTIMIZATION}" STREQUAL "DEFENSIVE") @@ -157,9 +163,6 @@ elseif ("${OPTIMIZATION}" STREQUAL "DEFENSIVE") elseif ("${OPTIMIZATION}" STREQUAL "AGGRESSIVE") #ToDo: this is not fully correct here, check old makefile set (OPTIMIZATION_ifort "-ipo -O3 -no-prec-div -fp-model fast=2 -xHost" ) #-fast = -ipo, -O3, -no-prec-div, -static, -fp-model fast=2, and -xHost" set (OPTIMIZATION_gfortran "-O3 -ffast-math -funroll-loops -ftree-vectorize") -elseif ("${OPTIMIZATION}" STREQUAL "ULTRA") - set (OPTIMIZATION_ifort "-ipo -O3 -no-prec-div -fp-model fast=2 -xHost" ) #-fast = -ipo, -O3, -no-prec-div, -static, -fp-model fast=2, and -xHost" - set (OPTIMIZATION_gfortran "-O3 -ffast-math -funroll-loops -ftree-vectorize") else() set (OPTIMIZATION_ifort "-O2") set (OPTIMIZATION_gfortran "-O2") @@ -445,10 +448,10 @@ add_subdirectory(src) # INSTALL BUILT BINARIES if (SPECTRAL) - INSTALL(PROGRAMS ${PROJECT_BINARY_DIR}/src/DAMASKSpectral.exe + INSTALL(PROGRAMS ${PROJECT_BINARY_DIR}/src/DAMASK_spectral DESTINATION ${CMAKE_INSTALL_PREFIX}) elseif (FEM) - INSTALL(PROGRAMS ${PROJECT_BINARY_DIR}/src/DAMASK_FEM.exe + INSTALL(PROGRAMS ${PROJECT_BINARY_DIR}/src/DAMASK_FEM DESTINATION ${CMAKE_INSTALL_PREFIX}) endif(SPECTRAL) diff --git a/build_spectral.sh b/build_spectral.sh index 0034554a5..874f6d4a8 100755 --- a/build_spectral.sh +++ b/build_spectral.sh @@ -41,8 +41,8 @@ cd $BUILDDIR # OPTIMIZATION | [OFF,DEFENSIVE,AGGRESSIVE,ULTRA] # DAMASK_DRIVER | [SPECTRAL, FEM] # DAMASK_INSTALL | Directory to install binary output -# DAMASK_PREFIX | Compiler prefix -# DAMASK_SUFFIX | Compiler suffix, +# BUILDCMD_PRE | Compiler prefix +# BUILDCMD_POST | Compiler suffix, # | e.g. DAMASK_SUFFIX="-Wl,--verbose" cmake -D PETSC_DIR=${PETSC_DIR} \ -D DAMASK_V=${DAMASKVERSION} \ @@ -52,8 +52,8 @@ cmake -D PETSC_DIR=${PETSC_DIR} \ -D OPTIMIZATION=DEFENSIVE \ -D DAMASK_DRIVER=SPECTRAL \ -D DAMASK_INSTALL=${HOME}/bin \ - -D DAMASK_PREFIX="" \ - -D DAMASK_SUFFIX="-Wl,--verbose" \ + -D BUILDCMD_PRE="" \ + -D BUILDCMD_POST="-Wl,--verbose" \ ../.. echo diff --git a/code/.gitattributes b/code/.gitattributes deleted file mode 100644 index 8035e26a7..000000000 --- a/code/.gitattributes +++ /dev/null @@ -1,8 +0,0 @@ -# from https://help.github.com/articles/dealing-with-line-endings/ -# -# always use LF, even if the files are edited on windows, they need to be compiled/used on unix -* text eol=lf - -# Denote all files that are truly binary and should not be modified. -*.png binary -*.jpg binary diff --git a/code/.gitignore b/code/.gitignore deleted file mode 100644 index bc33403b4..000000000 --- a/code/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -DAMASK_marc*.f90 -quit__genmod.f90 -*.marc diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 553ad3836..25e56f4ed 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -168,8 +168,8 @@ if (FEM) add_library(DAMASK_FEM_DRIVER "DAMASK_FEM_driver.f90") target_link_libraries(DAMASK_FEM_DRIVER DAMASK_FEM_BASE) - add_executable(DAMASK_FEM.exe "DAMASK_FEM_driver.f90") - target_link_libraries(DAMASK_FEM.exe DAMASK_FEM_DRIVER) + add_executable(DAMASK_FEM "DAMASK_FEM_driver.f90") + target_link_libraries(DAMASK_FEM DAMASK_FEM_DRIVER) endif(FEM) if (SPECTRAL) @@ -193,6 +193,6 @@ if (SPECTRAL) target_link_libraries(DAMASK_EXE DAMASK_SPECTRAL_BASE) target_link_libraries(DAMASK_EXE DAMASK_SPECTRAL_MECH) - add_executable(DAMASKSpectral.exe "DAMASK_spectral.f90") - target_link_libraries(DAMASKSpectral.exe DAMASK_EXE) + add_executable(DAMASK_spectral "DAMASK_spectral.f90") + target_link_libraries(DAMASK_spectral DAMASK_EXE) endif(SPECTRAL) \ No newline at end of file diff --git a/src/quit__genmod.f90 b/src/quit__genmod.f90 index ef0a49bc0..61ef71f67 100644 --- a/src/quit__genmod.f90 +++ b/src/quit__genmod.f90 @@ -1,4 +1,4 @@ - !COMPILER-GENERATED INTERFACE MODULE: Thu Mar 3 12:28:23 2016 + !COMPILER-GENERATED INTERFACE MODULE: Mon Apr 18 09:43:53 2016 MODULE QUIT__genmod INTERFACE SUBROUTINE QUIT(STOP_ID)