diff --git a/cmake/CMakeCPackOptions.cmake.in b/cmake/CMakeCPackOptions.cmake.in index 12043794bed..5a85571fd4e 100644 --- a/cmake/CMakeCPackOptions.cmake.in +++ b/cmake/CMakeCPackOptions.cmake.in @@ -7,7 +7,7 @@ if(CPACK_GENERATOR MATCHES "NSIS") set(CPACK_NSIS_PACKAGE_NAME "${CPACK_PACKAGING_INSTALL_PREFIX}") set(CPACK_NSIS_INSTALL_ROOT "C:") set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGING_INSTALL_PREFIX}") - set(CPACK_NSIS_DEFINES " + set(CPACK_NSIS_DEFINES " !define MUI_STARTMENUPAGE_DEFAULTFOLDER \"${CPACK_PACKAGING_INSTALL_PREFIX} Programs\" !include \"LogicLib.nsh\" !include \"x64.nsh\" @@ -16,15 +16,15 @@ if(CPACK_GENERATOR MATCHES "NSIS") set(CPACK_NSIS_MENU_LINKS "Documentation/index.html" "EnergyPlus Documentation" - "PostProcess/EP-Compare/EP-Compare.exe" "EP-Compare" - "PreProcess/EPDraw/EPDrawGUI.exe" "EPDrawGUI" + "PostProcess/EP-Compare/EP-Compare.exe" "EP-Compare" + "PreProcess/EPDraw/EPDrawGUI.exe" "EPDrawGUI" "EP-Launch.exe" "EP-Launch" "ExampleFiles/ExampleFiles.html" "Example Files Summary" - "ExampleFiles/ExampleFiles-ObjectsLink.html" "ExampleFiles Link to Objects" + "ExampleFiles/ExampleFiles-ObjectsLink.html" "ExampleFiles Link to Objects" "PreProcess/IDFEditor/IDFEditor.exe" "IDFEditor" "PreProcess/IDFVersionUpdater/IDFVersionUpdater.exe" "IDFVersionUpdater" - "readme.html" "Readme Notes" - "PreProcess/WeatherConverter/Weather.exe" "Weather Statistics and Conversions" + "readme.html" "Readme Notes" + "PreProcess/WeatherConverter/Weather.exe" "Weather Statistics and Conversions" ) set(CPACK_NSIS_PAGE_COMPONENTS " diff --git a/cmake/CPack.STGZ_Header.sh.in b/cmake/CPack.STGZ_Header.sh.in index da21d539e57..39768573415 100644 --- a/cmake/CPack.STGZ_Header.sh.in +++ b/cmake/CPack.STGZ_Header.sh.in @@ -1,40 +1,67 @@ #!/usr/bin/env sh +# vim: set tabstop=2:softtabstop=2:shiftwidth=2:noexpandtab + +# Reset +Color_Off='\033[0m' # Text Reset +BRed='\033[1;31m' # Bold Red package_name="EnergyPlus-@CPACK_PACKAGE_VERSION_MAJOR@-@CPACK_PACKAGE_VERSION_MINOR@-@CPACK_PACKAGE_VERSION_PATCH@" - cat << '____cpack__here_doc____' + cat << '____cpack__here_doc____' @CPACK_RESOURCE_FILE_LICENSE_CONTENT@ ____cpack__here_doc____ - echo - echo "Do you accept the license? [yN]: " - read line leftover - case ${line} in - y* | Y*) - cpack_license_accepted=TRUE;; - *) - echo "License not accepted. Exiting ..." - exit 1;; - esac - -default_install_directory="/usr/local" + echo + # Default is no + echo "Do you accept the license? [y/${BRed}N${Color_Off}]: " + read line leftover + case ${line} in + y* | Y*) + cpack_license_accepted=TRUE;; + *) + echo "License not accepted. Exiting ..." + exit 1;; + esac + +default_install_directory="/usr/local/${package_name}" install_directory="" -until [ -d "$install_directory" ]; do +install_dir_ok=0 + +# Add a check to make sure the parent directory exists, or ask user for confirmation +# This will ensure that the user doesn't make gross typos when installing to say /usr/local +until [ $install_dir_ok -eq 1 ]; do echo "EnergyPlus install directory [$default_install_directory]:" read install_directory if [ "$install_directory" = "" ]; then install_directory=$default_install_directory fi - if [ ! -d "$install_directory" ]; then - echo "Directory does not exist, please renter your selection." + pardir=$(dirname "$install_directory") + if [ ! -d "$pardir" ]; then + echo + echo "Parent Directory '$pardir' does not exist." + # Default is No + echo "Are you sure you want to continue? [y/${BRed}N${Color_Off}] " + read go_ahead leftover + case ${go_ahead} in + y* | Y*) + install_dir_ok=1;; + *) + install_dir_ok=0 + esac + else + install_dir_ok=1 fi done +# Make the install_directory, (creating as many intermediate directories as needed) +mkdir -p "${install_directory}" + + default_link_directory="/usr/local/bin" link_directory="" until [ -d "$link_directory" ]; do - echo "Symbolic link location (enter \"n\" for no links) [$default_link_directory]:" + echo "Symbolic link location (enter ${BRed}\"n\"${Color_Off} for no links) [$default_link_directory]:" read link_directory if [ "$link_directory" = "n" ]; then break @@ -59,11 +86,9 @@ echo "Extracting, please wait..." use_new_tail_syntax="-n" tail $use_new_tail_syntax +1 "$0" 2>&1 > /dev/null || use_new_tail_syntax="" -mkdir -p "${install_directory}" - tail $use_new_tail_syntax +###CPACK_HEADER_LENGTH### "$0" | gunzip | (cd "${install_directory}" && tar xf -) || exit 1 "Problem unpacking the @CPACK_PACKAGE_FILE_NAME@" -echo "Unpacking to directory ${install_directory} was successful." +echo "Unpacking to directory '${install_directory}' was successful." link_err () { @@ -71,75 +96,70 @@ link_err () exit 0 } -chmod o+w "${install_directory}/${package_name}/PreProcess/IDFVersionUpdater/" +chmod o+w "${install_directory}/PreProcess/IDFVersionUpdater/" if [ "$(id -u)" = "0" ]; then - # make the man page directory if it doesn't exist - mkdir -p /usr/local/share/man/man1 - # then move the man page in there - mv "${install_directory}/${package_name}/energyplus.1" /usr/local/share/man/man1/ + # make the man page directory if it doesn't exist + mkdir -p /usr/local/share/man/man1 + # then move the man page in there + mv "${install_directory}/energyplus.1" /usr/local/share/man/man1/ else - echo "Man page installation skipped since script is executing without root privileges" 1>&2 + echo "Man page installation skipped since script is executing without root privileges" 1>&2 fi if [ ! "$link_directory" = "n" ]; then - uninstall="$install_directory/$package_name/uninstall.sh" + uninstall="$install_directory/uninstall.sh" echo "#!/usr/bin/env sh" > $uninstall - ln -sf "${install_directory}/${package_name}/PreProcess/GrndTempCalc/Basement" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/PreProcess/GrndTempCalc/BasementGHT.idd" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/PostProcess/convertESOMTRpgm/convertESOMTR" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/energyplus" "${link_directory}/EnergyPlus" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/energyplus" "${link_directory}/energyplus" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/Energy+.idd" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/Energy+.schema.epJSON" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/PostProcess/EP-Compare/EP-Compare" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/EPMacro" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/ExpandObjects" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/PostProcess/HVAC-Diagram" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/PreProcess/IDFVersionUpdater/IDFVersionUpdater" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/PreProcess/ParametricPreProcessor/ParametricPreprocessor" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/PreProcess/FMUParser/parser" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/PostProcess/ReadVarsESO" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/runenergyplus" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/runepmacro" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/runreadvars" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/PreProcess/GrndTempCalc/Slab" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/PreProcess/GrndTempCalc/SlabGHT.idd" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/PreProcess/IDFVersionUpdater/Transition-V8-2-0-to-V8-3-0" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/PreProcess/IDFVersionUpdater/V8-2-0-Energy+.idd" "${link_directory}" 2> /dev/null > /dev/null || link_err - ln -sf "${install_directory}/${package_name}/PreProcess/IDFVersionUpdater/V8-3-0-Energy+.idd" "${link_directory}" 2> /dev/null > /dev/null || link_err - ( - cat <<-HERE - rm -f "${link_directory}/Basement" - rm -f "${link_directory}/BasementGHT.idd" - rm -f "${link_directory}/convertESOMTR" - rm -f "${link_directory}/EnergyPlus" - rm -f "${link_directory}/Energy+.idd" - rm -f "${link_directory}/Energy+.schema.epJSON" - rm -f "${link_directory}/EP-Compare" - rm -f "${link_directory}/EPMacro" - rm -f "${link_directory}/ExpandObjects" - rm -f "${link_directory}/HVAC-Diagram" - rm -f "${link_directory}/IDFVersionUpdater" - rm -f "${link_directory}/ParametricPreprocessor" - rm -f "${link_directory}/parser" - rm -f "${link_directory}/ReadVarsESO" - rm -f "${link_directory}/runenergyplus" - rm -f "${link_directory}/runepmacro" - rm -f "${link_directory}/runreadvars" - rm -f "${link_directory}/Slab" - rm -f "${link_directory}/SlabGHT.idd" - rm -f "${link_directory}/Transition-V8-2-0-to-V8-3-0" - rm -f "${link_directory}/V8-2-0-Energy+.idd" - rm -f "${link_directory}/V8-3-0-Energy+.idd" - rm -f /usr/local/share/man/man1/energyplus.1 - echo "Symbolic links to this installation of EnergyPlus have been removed." - echo "You may remove the EnergyPlus directory to completely uninstall the software." - HERE - ) >> $uninstall - chmod +x "$uninstall" - echo "Symbolic links were successful." + ln -sf "${install_directory}/PreProcess/GrndTempCalc/Basement" "${link_directory}" 2> /dev/null > /dev/null || link_err + ln -sf "${install_directory}/PreProcess/GrndTempCalc/BasementGHT.idd" "${link_directory}" 2> /dev/null > /dev/null || link_err + ln -sf "${install_directory}/PostProcess/convertESOMTRpgm/convertESOMTR" "${link_directory}" 2> /dev/null > /dev/null || link_err + ln -sf "${install_directory}/energyplus" "${link_directory}/EnergyPlus" 2> /dev/null > /dev/null || link_err + ln -sf "${install_directory}/energyplus" "${link_directory}/energyplus" 2> /dev/null > /dev/null || link_err + ln -sf "${install_directory}/Energy+.idd" "${link_directory}" 2> /dev/null > /dev/null || link_err + ln -sf "${install_directory}/Energy+.schema.epJSON" "${link_directory}" 2> /dev/null > /dev/null || link_err + ln -sf "${install_directory}/PostProcess/EP-Compare/EP-Compare" "${link_directory}" 2> /dev/null > /dev/null || link_err + ln -sf "${install_directory}/EPMacro" "${link_directory}" 2> /dev/null > /dev/null || link_err + ln -sf "${install_directory}/ExpandObjects" "${link_directory}" 2> /dev/null > /dev/null || link_err + ln -sf "${install_directory}/PostProcess/HVAC-Diagram" "${link_directory}" 2> /dev/null > /dev/null || link_err + ln -sf "${install_directory}/PreProcess/IDFVersionUpdater/IDFVersionUpdater" "${link_directory}" 2> /dev/null > /dev/null || link_err + ln -sf "${install_directory}/PreProcess/ParametricPreprocessor/ParametricPreprocessor" "${link_directory}" 2> /dev/null > /dev/null || link_err + ln -sf "${install_directory}/PreProcess/FMUParser/parser" "${link_directory}" 2> /dev/null > /dev/null || link_err + ln -sf "${install_directory}/PostProcess/ReadVarsESO" "${link_directory}" 2> /dev/null > /dev/null || link_err + ln -sf "${install_directory}/runenergyplus" "${link_directory}" 2> /dev/null > /dev/null || link_err + ln -sf "${install_directory}/runepmacro" "${link_directory}" 2> /dev/null > /dev/null || link_err + ln -sf "${install_directory}/runreadvars" "${link_directory}" 2> /dev/null > /dev/null || link_err + ln -sf "${install_directory}/PreProcess/GrndTempCalc/Slab" "${link_directory}" 2> /dev/null > /dev/null || link_err + ln -sf "${install_directory}/PreProcess/GrndTempCalc/SlabGHT.idd" "${link_directory}" 2> /dev/null > /dev/null || link_err + + # Note: careful about tabs/spaces here. It HAS to be tabs or it'll fail cryptically + cat <<- _HERE_ >> $uninstall + rm -f "${link_directory}/Basement" + rm -f "${link_directory}/BasementGHT.idd" + rm -f "${link_directory}/convertESOMTR" + rm -f "${link_directory}/EnergyPlus" + rm -f "${link_directory}/energyplus" + rm -f "${link_directory}/Energy+.idd" + rm -f "${link_directory}/Energy+.schema.epJSON" + rm -f "${link_directory}/EP-Compare" + rm -f "${link_directory}/EPMacro" + rm -f "${link_directory}/ExpandObjects" + rm -f "${link_directory}/HVAC-Diagram" + rm -f "${link_directory}/IDFVersionUpdater" + rm -f "${link_directory}/ParametricPreprocessor" + rm -f "${link_directory}/parser" + rm -f "${link_directory}/ReadVarsESO" + rm -f "${link_directory}/runenergyplus" + rm -f "${link_directory}/runepmacro" + rm -f "${link_directory}/runreadvars" + rm -f "${link_directory}/Slab" + rm -f "${link_directory}/SlabGHT.idd" + rm -f /usr/local/share/man/man1/energyplus.1 + echo "Symbolic links to this installation of EnergyPlus have been removed." + echo "You may remove the EnergyPlus directory to completely uninstall the software." + _HERE_ + chmod +x "$uninstall" + echo "Symbolic links were successful." fi exit 0 diff --git a/cmake/CompilerFlags.cmake b/cmake/CompilerFlags.cmake index bef7ed283a5..f4627f47ae8 100644 --- a/cmake/CompilerFlags.cmake +++ b/cmake/CompilerFlags.cmake @@ -224,7 +224,12 @@ macro(AddFlagIfSupported flag test) CHECK_CXX_COMPILER_FLAG(${flag} ${test}) if( ${${test}} ) message(STATUS "Adding ${flag}") - add_compile_options("${flag}") + # On Mac with Ninja (kitware binary for fortran support) and brew gfortran, I get build errors due to this flag. + if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") AND BUILD_FORTRAN) + add_compile_options($<$>:${flag}>) + else() + add_compile_options("${flag}") + endif() else() message(STATUS "Flag ${flag} isn't supported") endif() diff --git a/cmake/Install.cmake b/cmake/Install.cmake index c14784b1b3d..eb47ed88cbb 100644 --- a/cmake/Install.cmake +++ b/cmake/Install.cmake @@ -18,6 +18,9 @@ else() set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}-${TARGET_ARCH}-${CMAKE_BUILD_TYPE}") endif() +# Installation directory on the target system (common to all CPack Genrators) +set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}-${CPACK_PACKAGE_VERSION_MINOR}-${CPACK_PACKAGE_VERSION_PATCH}") + if( WIN32 AND NOT UNIX ) set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE) include(InstallRequiredSystemLibraries) @@ -52,7 +55,7 @@ install(FILES "${DOCS_OUT}/ExampleFiles-ObjectsLink.html" DESTINATION "./Example # Watch out! GITHUB_TOKEN could go out of scope by the time install target is run. # Better to move this condition into the install CODE. if(NOT "$ENV{GITHUB_TOKEN}" STREQUAL "") - install(CODE "execute_process(COMMAND \"${PYTHON_EXECUTABLE}\" \"${CMAKE_SOURCE_DIR}/doc/tools/create_changelog.py\" \"${CMAKE_SOURCE_DIR}\" \"${DOCS_OUT}/changelog.md\" \"${DOCS_OUT}/changelog.html\" \"${GIT_EXECUTABLE}\" \"$ENV{GITHUB_TOKEN}\" \"${PREV_RELEASE_SHA}\" \"${CPACK_PACKAGE_VERSION}\")") + install(CODE "execute_process(COMMAND \"${PYTHON_EXECUTABLE}\" \"${CMAKE_SOURCE_DIR}/doc/tools/create_changelog.py\" \"${CMAKE_SOURCE_DIR}\" \"${DOCS_OUT}/changelog.md\" \"${DOCS_OUT}/changelog.html\" \"${GIT_EXECUTABLE}\" \"$ENV{GITHUB_TOKEN}\" \"${PREV_RELEASE_SHA}\" \"${CPACK_PACKAGE_VERSION}\")") install(FILES "${DOCS_OUT}/changelog.html" DESTINATION "./" OPTIONAL) else() message(WARNING "No GITHUB_TOKEN found in environment; package won't include the change log") @@ -289,20 +292,20 @@ configure_file("${CMAKE_SOURCE_DIR}/cmake/CMakeCPackOptions.cmake.in" set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_BINARY_DIR}/CMakeCPackOptions.cmake") if ( BUILD_DOCS ) - install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/Acknowledgments.pdf" DESTINATION "./Documentation") - install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/AuxiliaryPrograms.pdf" DESTINATION "./Documentation") - install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/EMSApplicationGuide.pdf" DESTINATION "./Documentation") - install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/EngineeringReference.pdf" DESTINATION "./Documentation") - install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/EnergyPlusEssentials.pdf" DESTINATION "./Documentation") - install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/ExternalInterfacesApplicationGuide.pdf" DESTINATION "./Documentation") - install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/GettingStarted.pdf" DESTINATION "./Documentation") - install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/InputOutputReference.pdf" DESTINATION "./Documentation") - install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/InterfaceDeveloper.pdf" DESTINATION "./Documentation") - install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/ModuleDeveloper.pdf" DESTINATION "./Documentation") - install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/OutputDetailsAndExamples.pdf" DESTINATION "./Documentation") - install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/PlantApplicationGuide.pdf" DESTINATION "./Documentation") - install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/TipsAndTricksUsingEnergyPlus.pdf" DESTINATION "./Documentation") - install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/UsingEnergyPlusForCompliance.pdf" DESTINATION "./Documentation") + install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/Acknowledgments.pdf" DESTINATION "./Documentation") + install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/AuxiliaryPrograms.pdf" DESTINATION "./Documentation") + install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/EMSApplicationGuide.pdf" DESTINATION "./Documentation") + install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/EngineeringReference.pdf" DESTINATION "./Documentation") + install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/EnergyPlusEssentials.pdf" DESTINATION "./Documentation") + install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/ExternalInterfacesApplicationGuide.pdf" DESTINATION "./Documentation") + install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/GettingStarted.pdf" DESTINATION "./Documentation") + install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/InputOutputReference.pdf" DESTINATION "./Documentation") + install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/InterfaceDeveloper.pdf" DESTINATION "./Documentation") + install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/ModuleDeveloper.pdf" DESTINATION "./Documentation") + install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/OutputDetailsAndExamples.pdf" DESTINATION "./Documentation") + install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/PlantApplicationGuide.pdf" DESTINATION "./Documentation") + install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/TipsAndTricksUsingEnergyPlus.pdf" DESTINATION "./Documentation") + install(FILES "${CMAKE_BINARY_DIR}/doc-pdf/UsingEnergyPlusForCompliance.pdf" DESTINATION "./Documentation") endif () INCLUDE(CPack)