From b67f4dd324e28a2c5efa1956fcb906dddf4dbca1 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Sat, 4 Feb 2017 01:01:42 +0100 Subject: [PATCH] Default cases seem to work --- CMakeLists.txt | 65 ++++++++++++++++++++++++++++++---------------- Makefile | 5 ++-- src/CMakeLists.txt | 7 ++--- 3 files changed, 48 insertions(+), 29 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c151a260..400a34cd8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -115,16 +115,33 @@ set(CMAKE_Fortran_COMPILER "${PETSC_MPIFC}") set(CMAKE_C_COMPILER "${PETSC_MPICC}") set(CMAKE_LINKER "${PETSC_LINKER}") -# 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 [OFF,DEFENSIVE,AGGRESSIVE]" "DEFENSIVE" ) - -if("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG") - set (OPENMP "OFF") - set (OPTIMIZATION "OFF") +# Predefined sets for OPTIMIZATION/OPENMP based on BUILD_TYPE +if("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG" OR "${CMAKE_BUILD_TYPE}" STREQUAL "SYNTAXONLY" ) + set (PARALLEL "OFF") + set (OPTI "OFF") + set (BUILDCMD_POST "${BUILDCMD_POST} -fsyntax-only") +elseif("${CMAKE_BUILD_TYPE}" STREQUAL "RELEASE") + set (PARALLEL "ON") + set (OPTI "DEFENSIVE") +elseif("${CMAKE_BUILD_TYPE}" STREQUAL "PERFORMANCE") + set (PARALLEL "ON") + set (OPTI "AGGRESSIVE") endif("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG") +# overwrite optimization if given +if("${OPTIMIZATION}" STREQUAL "") + set(OPTIMIZATION "${OPTI}") +else("${OPTIMIZATION}" STREQUAL "") + set(OPTIMIZATION "${OPTIMIZATION}") +endif("${OPTIMIZATION}" STREQUAL "") + +# overwrite optimization if given +if("${OPENMP}" STREQUAL "") + set(OPENMP "${PARALLEL}") +else("${OPENMP}" STREQUAL "") + set(OPENMP "${OPENMP}") +endif("${OPENMP}" STREQUAL "") + # Parse DAMASK_BIN from CONFIG file file(READ "CONFIG" CONFIGFILE) STRING(REGEX REPLACE ";" "\\\\;" CONFIGFILE "${CONFIGFILE}") @@ -132,13 +149,9 @@ STRING(REGEX REPLACE "\n" ";" CONFIGFILE "${CONFIGFILE}") FOREACH(item ${CONFIGFILE}) STRING(REGEX MATCH ".+DAMASK_BIN.+" item ${item}) IF(item) - message("${item}") string(REGEX REPLACE "set" "" item "${item}") - message("${item}") string(REGEX REPLACE "=" " " item "${item}") - message("${item}") - string(REGEX REPLACE "\\\${DAMASK_ROOT}" "${CMAKE_CURRENT_SOURCE_DIR}" item "${item}") - message("${item}") + string(REGEX REPLACE "\\\${DAMASK_ROOT}" "${PROJECT_SOURCE_DIR}" item "${item}") string(REPLACE "DAMASK_BIN" ";" STRING_LIST ${item}) list(GET STRING_LIST 1 item) string(STRIP "${item}" CMAKE_INSTALL_PREFIX) @@ -387,9 +400,9 @@ elseif(${CMAKE_Fortran_COMPILER_ID} STREQUAL "GNU") # stop execution if floating point exception is detected (NaN is silent) set (DEBUG_FLAGS "${DEBUG_FLAGS} -g") # Generate symbolic debugging information in the object file - set (DEBUG_FLAGS "${DEBUG_FLAGS} -fbacktrace" ) - set (DEBUG_FLAGS "${DEBUG_FLAGS} -fdump-core" ) - set (DEBUG_FLAGS "${DEBUG_FLAGS} -fcheck=all" ) + set (DEBUG_FLAGS "${DEBUG_FLAGS} -fbacktrace") + set (DEBUG_FLAGS "${DEBUG_FLAGS} -fdump-core") + set (DEBUG_FLAGS "${DEBUG_FLAGS} -fcheck=all") # checks for (array-temps,bounds,do,mem,pointer,recursion) # Additional options @@ -425,10 +438,16 @@ message("Linker Flags (Fortran):\n${CMAKE_Fortran_LINK_EXECUTABLE}\n") add_subdirectory(src) # INSTALL BUILT BINARIES -if ("${PROJECT_NAME}" STREQUAL "DAMASK_spectral") - INSTALL(PROGRAMS ${PROJECT_BINARY_DIR}/src/DAMASK_spectral - DESTINATION ${CMAKE_INSTALL_PREFIX}) -elseif ("${PROJECT_NAME}" STREQUAL "DAMASK_FEM") - INSTALL(PROGRAMS ${PROJECT_BINARY_DIR}/src/DAMASK_FEM - DESTINATION ${CMAKE_INSTALL_PREFIX}) -endif("${PROJECT_NAME}" STREQUAL "DAMASK_spectral") +if ("${BUILD_TYPE}" STREQUAL SYNTAXONLY) + if ("${PROJECT_NAME}" STREQUAL DAMASK_spectral) + INSTALL(PROGRAMS ${PROJECT_BINARY_DIR}/src/DAMASK_spectral + DESTINATION ${CMAKE_INSTALL_PREFIX}) + elseif ("${PROJECT_NAME}" STREQUAL DAMASK_FEM) + INSTALL(PROGRAMS ${PROJECT_BINARY_DIR}/src/DAMASK_FEM + DESTINATION ${CMAKE_INSTALL_PREFIX}) + endif("${PROJECT_NAME}" STREQUAL DAMASK_spectral) +else("${BUILD_TYPE}" STREQUAL SYNTAXONLY) + exec_program(mktemp ARGS -d OUTPUT_VARIABLE BLACK_HOLE) + INSTALL(PROGRAMS ${PROJECT_BINARY_DIR}/src/prec.mod + DESTINATION ${BLACK_HOLE}) +endif() diff --git a/Makefile b/Makefile index 29d76afee..b8cdfd71c 100644 --- a/Makefile +++ b/Makefile @@ -11,15 +11,14 @@ FEM: build/FEM @(cd build/FEM; make --no-print-directory -ws all install;) -OPTIONS="-Wno-dev -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DBUILDCMD_POST=${BUILDCMD_POST} -DBUILDCMD_PRE={BUILDCMD_PRE} -DOPTIMIZATION=${OPTIMIZATION} -DOPENMP=${OPENMP}" build/spectral: build @mkdir -p build/spectral - @(cd build/spectral; cmake -DDAMASK_SOLVER=SPECTRAL ${OPTIONS} ../..;) + @(cd build/spectral; cmake -Wno-dev -DDAMASK_SOLVER=SPECTRAL -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DBUILDCMD_POST=${BUILDCMD_POST} -DBUILDCMD_PRE=${BUILDCMD_PRE} -DOPTIMIZATION=${OPTIMIZATION} -DOPENMP=${OPENMP} ../../;) build/FEM: build @mkdir -p build/FEM - @(cd build/FEM; cmake -DDAMASK_SOLVER=FEM ${OPTIONS} ../..;) + @(cd build/FEM; cmake -Wno-dev -DDAMASK_SOLVER=FEM -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DBUILDCMD_POST=${BUILDCMD_POST} -DBUILDCMD_PRE=${BUILDCMD_PRE} -DOPTIMIZATION=${OPTIMIZATION} -DOPENMP=${OPENMP} ../../;) build: diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8b7cc44bb..56309a821 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -185,9 +185,10 @@ if ("${PROJECT_NAME}" STREQUAL "DAMASK_spectral") "spectral_mech_Basic.f90") add_dependencies(SPECTRAL_SOLVER SPECTRAL_UTILITIES) list(APPEND OBJECTFILES $) - - add_executable(DAMASK_spectral "DAMASK_spectral.f90" ${OBJECTFILES}) - add_dependencies(DAMASK_spectral SPECTRAL_SOLVER) + if(NOT "${CMAKE_BUILD_TYPE}" STREQUAL SYNTAXONLY) + add_executable(DAMASK_spectral "DAMASK_spectral.f90" ${OBJECTFILES}) + add_dependencies(DAMASK_spectral SPECTRAL_SOLVER) + endif() elseif ("${PROJECT_NAME}" STREQUAL "DAMASK_FEM") add_library(FEM_UTILITIES OBJECT "FEM_utilities.f90") add_dependencies(FEM_UTILITIES DAMASK_CPFE)