diff options
author | MyungJoo Ham <myungjoo.ham@samsung.com> | 2017-10-11 15:16:57 +0900 |
---|---|---|
committer | MyungJoo Ham <myungjoo.ham@samsung.com> | 2017-10-11 15:16:57 +0900 |
commit | 915c76ded744c0f5f151402b9fa69f3fd8452573 (patch) | |
tree | ca6a387466543248890f346847acaa8343989b22 /Utilities/Release | |
parent | 317dbdb79761ef65e45c7358cfc7571c6afa54ad (diff) | |
download | cmake-915c76ded744c0f5f151402b9fa69f3fd8452573.tar.gz cmake-915c76ded744c0f5f151402b9fa69f3fd8452573.tar.bz2 cmake-915c76ded744c0f5f151402b9fa69f3fd8452573.zip |
Imported Upstream version 3.9.4upstream/3.9.4
Diffstat (limited to 'Utilities/Release')
37 files changed, 591 insertions, 394 deletions
diff --git a/Utilities/Release/Cygwin/CMakeLists.txt b/Utilities/Release/Cygwin/CMakeLists.txt deleted file mode 100644 index c59a6fa94..000000000 --- a/Utilities/Release/Cygwin/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -file(GLOB INSTALLED_CURSES /usr/bin/cygncurses-*.dll) -set(MAX 0) -foreach(f ${INSTALLED_CURSES}) - if(NOT "${f}" MATCHES "\\+") - string(REGEX REPLACE ".*-([0-9]*).dll" "\\1" NUMBER "${f}") - if(NUMBER GREATER MAX) - set(MAX ${NUMBER}) - endif() - endif() -endforeach() -string(REGEX REPLACE "/usr/bin/" "\\1" NUMBER "${f}") -set(CMAKE_NCURSES_VERSION "libncurses${MAX}") -message(STATUS "Using curses version: libncurses${MAX}") -configure_file("${CMake_SOURCE_DIR}/Utilities/Release/Cygwin/cygwin-setup.hint.in" - "${CMake_BINARY_DIR}/setup.hint") -configure_file("${CMake_SOURCE_DIR}/Utilities/Release/Cygwin/README.cygwin.in" - "${CMake_BINARY_DIR}/Docs/@CPACK_PACKAGE_FILE_NAME@-@CPACK_CYGWIN_PATCH_NUMBER@.README") -install_files(/share/doc/Cygwin FILES - ${CMake_BINARY_DIR}/Docs/@CPACK_PACKAGE_FILE_NAME@-@CPACK_CYGWIN_PATCH_NUMBER@.README - ) -configure_file("${CMake_SOURCE_DIR}/Utilities/Release/Cygwin/cygwin-package.sh.in" - ${CPACK_CYGWIN_BUILD_SCRIPT}) -configure_file("${CMake_SOURCE_DIR}/Utilities/Release/Cygwin/cygwin-patch.diff.in" - ${CPACK_CYGWIN_PATCH_FILE}) - diff --git a/Utilities/Release/Cygwin/README.cygwin.in b/Utilities/Release/Cygwin/README.cygwin.in deleted file mode 100644 index 6c42a4c20..000000000 --- a/Utilities/Release/Cygwin/README.cygwin.in +++ /dev/null @@ -1,42 +0,0 @@ -cmake --------------------------------------- -Runtime requirements: - cygwin-1.5.21(0.156/4/2) or newer - -Build requirements - cygwin-1.5.21(0.156/4/2) or newer - make - -Canonical homepage: - http://www.cmake.org - -Canonical download: - ftp://www.cmake.org/pub/cmake/ - ------------------------------------- - -Build instructions: - unpack @CPACK_PACKAGE_FILE_NAME@-@CPACK_CYGWIN_PATCH_NUMBER@-src.tar.bz2 - if you use setup to install this src package, it will be - unpacked under /usr/src automatically - cd /usr/src - ./@CPACK_PACKAGE_FILE_NAME@-@CPACK_CYGWIN_PATCH_NUMBER@.sh all - -This will create: - /usr/src/@CPACK_PACKAGE_FILE_NAME@.tar.bz2 - /usr/src/@CPACK_PACKAGE_FILE_NAME@-@CPACK_CYGWIN_PATCH_NUMBER@-src.tar.bz2 - -------------------------------------------- - -Port Notes: - -The directory /usr/share/@CPACK_PACKAGE_FILE_NAME@/include is purposely not -located at /usr/include/@CPACK_PACKAGE_FILE_NAME@ or /usr/include/cmake. The -files it contains are not meant for inclusion in any C or C++ program. -They are used for compiling dynamically loadable CMake commands inside -projects that provide them. CMake will automatically provide the -proper include path when the files are needed. - ------------------- - -Cygwin port maintained by: CMake Developers <cmake@www.cmake.org> diff --git a/Utilities/Release/Cygwin/cygwin-package.sh.in b/Utilities/Release/Cygwin/cygwin-package.sh.in deleted file mode 100755 index dff27f14d..000000000 --- a/Utilities/Release/Cygwin/cygwin-package.sh.in +++ /dev/null @@ -1,90 +0,0 @@ -TOP_DIR=`cd \`echo "$0" | sed -n '/\//{s/\/[^\/]*$//;p;}'\`;pwd` - -# create build directory -mkdirs() -{ - ( - mkdir -p "$TOP_DIR/@CPACK_PACKAGE_FILE_NAME@/.build" - ) -} - -# cd into -# untar source tree and apply patch -prep() -{ - ( - cd "$TOP_DIR" && - tar xvfj @CPACK_PACKAGE_FILE_NAME@.tar.bz2 - patch -p0 < "@CPACK_PACKAGE_FILE_NAME@-@CPACK_CYGWIN_PATCH_NUMBER@.patch" && - mkdirs - ) -} - -conf() -{ - ( - cd "$TOP_DIR/@CPACK_PACKAGE_FILE_NAME@/.build" && - ../bootstrap --parallel=2 - ) -} - -build() -{ - ( - cd "$TOP_DIR/@CPACK_PACKAGE_FILE_NAME@/.build" && - make -j2 && - make test - ) -} - -clean() -{ - ( - cd "$TOP_DIR/@CPACK_PACKAGE_FILE_NAME@/.build" && - make clean - ) -} - -pkg() -{ - ( - cd "$TOP_DIR/@CPACK_PACKAGE_FILE_NAME@/.build" && - ./bin/cpack && - mv @CPACK_PACKAGE_FILE_NAME@-@CPACK_CYGWIN_PATCH_NUMBER@.tar.bz2 "$TOP_DIR" - ) -} - -spkg() -{ - ( - cd "$TOP_DIR/@CPACK_PACKAGE_FILE_NAME@/.build" && - ./bin/cpack --config CPackSourceConfig.cmake && - mv @CPACK_PACKAGE_FILE_NAME@-@CPACK_CYGWIN_PATCH_NUMBER@-src.tar.bz2 "$TOP_DIR" - ) -} - -finish() -{ - ( - rm -rf "@CPACK_PACKAGE_FILE_NAME@" - ) -} - -case $1 in - prep) prep ; STATUS=$? ;; - mkdirs) mkdirs ; STATUS=$? ;; - conf) conf ; STATUS=$? ;; - build) build ; STATUS=$? ;; - clean) clean ; STATUS=$? ;; - package) pkg ; STATUS=$? ;; - pkg) pkg ; STATUS=$? ;; - src-package) spkg ; STATUS=$? ;; - spkg) spkg ; STATUS=$? ;; - finish) finish ; STATUS=$? ;; - all) ( - prep && conf && build && pkg && spkg && finish ; - STATUS=$? - ) ;; - *) echo "Error: bad argument (all or one of these: prep mkdirs conf build clean package pkg src-package spkg finish)" ; exit 1 ;; -esac -exit ${STATUS} diff --git a/Utilities/Release/Cygwin/cygwin-patch.diff.in b/Utilities/Release/Cygwin/cygwin-patch.diff.in deleted file mode 100644 index e69de29bb..000000000 --- a/Utilities/Release/Cygwin/cygwin-patch.diff.in +++ /dev/null diff --git a/Utilities/Release/Cygwin/cygwin-setup.hint.in b/Utilities/Release/Cygwin/cygwin-setup.hint.in deleted file mode 100644 index a2532fc68..000000000 --- a/Utilities/Release/Cygwin/cygwin-setup.hint.in +++ /dev/null @@ -1,5 +0,0 @@ -# CMake setup.hint file for cygwin setup.exe program -category: Devel -requires: libgcc1 libidn11 @CMAKE_NCURSES_VERSION@ libstdc++6 -sdesc: "A cross platform build manager" -ldesc: "CMake is a cross platform build manager. It allows you to specify build parameters for C and C++ programs in a cross platform manner. For cygwin Makefiles will be generated. CMake is also capable of generating microsoft project files, nmake, and borland makefiles. CMake can also perform system inspection operations like finding installed libraries and header files." diff --git a/Utilities/Release/README b/Utilities/Release/README index 12eafe18f..11de1c325 100644 --- a/Utilities/Release/README +++ b/Utilities/Release/README @@ -1,7 +1,7 @@ To create a cmake release, make sure the "release" tag is pointing to the expected git commit: -http://cmake.org/gitweb?p=cmake.git;a=shortlog;h=refs/heads/release +https://cmake.org/gitweb?p=cmake.git;a=shortlog;h=refs/heads/release Then as kitware@hythloth, using an up-to-date CMake: @@ -15,7 +15,4 @@ Then as kitware@hythloth, using an up-to-date CMake: create-cmake-release.cmake: script to run to create release sh scripts Add or remove machines in create-cmake-release.cmake. -Cygwin -> directory that contains cpack cygwin package files used in - CMakeCPack.cmake - machine_release.cmake : config files for each machine diff --git a/Utilities/Release/WiX/CMakeLists.txt b/Utilities/Release/WiX/CMakeLists.txt new file mode 100644 index 000000000..cc0dbe1a6 --- /dev/null +++ b/Utilities/Release/WiX/CMakeLists.txt @@ -0,0 +1,12 @@ +add_subdirectory(CustomAction) + +if(CMAKE_CONFIGURATION_TYPES) + set(CUSTOM_ACTION_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/custom_action_dll-$<CONFIG>.wxs") +else() + set(CUSTOM_ACTION_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/custom_action_dll.wxs") +endif() + +file(GENERATE + OUTPUT "${CUSTOM_ACTION_OUTPUT}" + INPUT "${CMAKE_CURRENT_SOURCE_DIR}/custom_action_dll.wxs.in" + ) diff --git a/Utilities/Release/WiX/CustomAction/CMakeLists.txt b/Utilities/Release/WiX/CustomAction/CMakeLists.txt new file mode 100644 index 000000000..7efd01e00 --- /dev/null +++ b/Utilities/Release/WiX/CustomAction/CMakeLists.txt @@ -0,0 +1,13 @@ +foreach(CONFIG DEBUG MINSIZEREL RELEASE RELWITHDEBINFO) + string(REPLACE "/MD" "/MT" + "CMAKE_CXX_FLAGS_${CONFIG}" + "${CMAKE_CXX_FLAGS_${CONFIG}}" + ) +endforeach() + +add_library(CMakeWiXCustomActions MODULE + detect_nsis_overwrite.cpp + exports.def +) + +target_link_libraries(CMakeWiXCustomActions PRIVATE msi) diff --git a/Utilities/Release/WiX/CustomAction/detect_nsis_overwrite.cpp b/Utilities/Release/WiX/CustomAction/detect_nsis_overwrite.cpp new file mode 100644 index 000000000..4b178759d --- /dev/null +++ b/Utilities/Release/WiX/CustomAction/detect_nsis_overwrite.cpp @@ -0,0 +1,43 @@ +#include <windows.h> + +#include <msi.h> +#include <msiquery.h> + +#include <string> +#include <vector> + +std::wstring get_property(MSIHANDLE msi_handle, std::wstring const& name) +{ + DWORD size = 0; + + UINT status = MsiGetPropertyW(msi_handle, name.c_str(), L"", &size); + + if (status == ERROR_MORE_DATA) { + std::vector<wchar_t> buffer(size + 1); + MsiGetPropertyW(msi_handle, name.c_str(), &buffer[0], &size); + return std::wstring(&buffer[0]); + } else { + return std::wstring(); + } +} + +void set_property(MSIHANDLE msi_handle, std::wstring const& name, + std::wstring const& value) +{ + MsiSetPropertyW(msi_handle, name.c_str(), value.c_str()); +} + +extern "C" UINT __stdcall DetectNsisOverwrite(MSIHANDLE msi_handle) +{ + std::wstring install_root = get_property(msi_handle, L"INSTALL_ROOT"); + + std::wstring uninstall_exe = install_root + L"\\uninstall.exe"; + + bool uninstall_exe_exists = + GetFileAttributesW(uninstall_exe.c_str()) != INVALID_FILE_ATTRIBUTES; + + set_property(msi_handle, L"CMAKE_NSIS_OVERWRITE_DETECTED", + uninstall_exe_exists ? L"1" : L"0"); + + return ERROR_SUCCESS; +} diff --git a/Utilities/Release/WiX/CustomAction/exports.def b/Utilities/Release/WiX/CustomAction/exports.def new file mode 100644 index 000000000..0e448b20e --- /dev/null +++ b/Utilities/Release/WiX/CustomAction/exports.def @@ -0,0 +1,2 @@ +EXPORTS + DetectNsisOverwrite=DetectNsisOverwrite diff --git a/Utilities/Release/WiX/WIX.template.in b/Utilities/Release/WiX/WIX.template.in new file mode 100644 index 000000000..fe176ca90 --- /dev/null +++ b/Utilities/Release/WiX/WIX.template.in @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?include "cpack_variables.wxi"?> + +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" + RequiredVersion="3.6.3303.0"> + + <Product Id="$(var.CPACK_WIX_PRODUCT_GUID)" + Name="$(var.CPACK_PACKAGE_NAME)" + Language="1033" + Version="$(var.CPACK_PACKAGE_VERSION)" + Manufacturer="$(var.CPACK_PACKAGE_VENDOR)" + UpgradeCode="$(var.CPACK_WIX_UPGRADE_GUID)"> + + <Package InstallerVersion="301" Compressed="yes" InstallScope="perMachine"/> + + <Media Id="1" Cabinet="media1.cab" EmbedCab="yes"/> + + <MajorUpgrade + Schedule="afterInstallInitialize" + AllowDowngrades="yes"/> + + <WixVariable Id="WixUILicenseRtf" Value="$(var.CPACK_WIX_LICENSE_RTF)"/> + <Property Id="WIXUI_INSTALLDIR" Value="INSTALL_ROOT"/> + + <?ifdef CPACK_WIX_PRODUCT_ICON?> + <Property Id="ARPPRODUCTICON">ProductIcon.ico</Property> + <Icon Id="ProductIcon.ico" SourceFile="$(var.CPACK_WIX_PRODUCT_ICON)"/> + <?endif?> + + <?ifdef CPACK_WIX_UI_BANNER?> + <WixVariable Id="WixUIBannerBmp" Value="$(var.CPACK_WIX_UI_BANNER)"/> + <?endif?> + + <?ifdef CPACK_WIX_UI_DIALOG?> + <WixVariable Id="WixUIDialogBmp" Value="$(var.CPACK_WIX_UI_DIALOG)"/> + <?endif?> + + <DirectoryRef Id="TARGETDIR"> + <Component Id="CMakeRegistry"> + <RegistryKey Root="HKLM" Key="Software\Kitware\CMake"> + <RegistryValue Type="string" Name="InstallDir" + Value="[INSTALL_ROOT]" KeyPath="yes"/> + </RegistryKey> + </Component> + </DirectoryRef> + + <FeatureRef Id="ProductFeature"> + <ComponentRef Id="CMakeRegistry"/> + </FeatureRef> + + <UIRef Id="$(var.CPACK_WIX_UI_REF)" /> + + <?include "properties.wxi"?> + <?include "product_fragment.wxi"?> + </Product> +</Wix> diff --git a/Utilities/Release/WiX/cmake_extra_dialog.wxs b/Utilities/Release/WiX/cmake_extra_dialog.wxs new file mode 100644 index 000000000..0ee3d99e7 --- /dev/null +++ b/Utilities/Release/WiX/cmake_extra_dialog.wxs @@ -0,0 +1,36 @@ +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> + <Fragment> + <UI> + <Property Id="ADD_CMAKE_TO_PATH" Value="None"/> + <Dialog Id="CMakeExtraDialog" Width="370" Height="270" Title="Install Options"> + + <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)"/> + <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)"/> + + <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)"> + <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish> + </Control> + + <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes" Text="Choose options for installing CMake [ProductVersion]"/> + <Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes" Text="Install Options"/> + <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="!(loc.InstallDirDlgBannerBitmap)"/> + <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0"/> + <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0"/> + + <Control Id="Hint" Type="Text" X="26" Y="60" Width="250" Height="16" Transparent="yes" Text="By default CMake does not add its directory to the system PATH."/> + + <Control Id="ADD_CMAKE_TO_PATHOption" Type="RadioButtonGroup" X="26" Y="100" Width="305" Height="65" Property="ADD_CMAKE_TO_PATH"> + <RadioButtonGroup Property="ADD_CMAKE_TO_PATH"> + <RadioButton Value="None" X="0" Y="0" Width="295" Height="16" Text="Do not add CMake to the system PATH"/> + <RadioButton Value="System" X="0" Y="20" Width="295" Height="16" Text="Add CMake to the system PATH for all users"/> + <RadioButton Value="User" X="0" Y="40" Width="295" Height="16" Text="Add CMake to the system PATH for the current user"/> + </RadioButtonGroup> + </Control> + + <?ifdef BUILD_QtDialog ?> + <Control Id="DesktopShortcutCheckBox" Type="CheckBox" X="20" Y="170" Width="330" Height="18" CheckBoxValue="1" Property="DESKTOP_SHORTCUT_REQUESTED" Text="Create CMake Desktop Icon"/> + <?endif ?> + </Dialog> + </UI> + </Fragment> +</Wix> diff --git a/Utilities/Release/WiX/cmake_nsis_overwrite_dialog.wxs b/Utilities/Release/WiX/cmake_nsis_overwrite_dialog.wxs new file mode 100644 index 000000000..8fe60f2cd --- /dev/null +++ b/Utilities/Release/WiX/cmake_nsis_overwrite_dialog.wxs @@ -0,0 +1,21 @@ +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> + <Fragment> + <UI> + <Dialog Id="CMakeNsisOverwriteDialog" Width="310" Height="120" Title="NSIS Installation Conflict"> + <Control Id="OK" Type="PushButton" X="122" Y="90" Width="56" Height="17" Default="yes" Cancel="yes" Text="!(loc.WixUIOK)"> + <Publish Event="EndDialog" Value="Return">1</Publish> + </Control> + <Control Id="Text" Type="Text" X="48" Y="22" Width="260" Height="60"> + <Text> + Uninstall.exe was detected in your chosen installation prefix. + This indicates a conflicting NSIS based installation of CMake. + + Please uninstall your old CMake installation or choose a different + installation directory. + </Text> + </Control> + <Control Id="Icon" Type="Icon" X="15" Y="15" Width="24" Height="24" ToolTip="!(loc.InvalidDirDlgIconTooltip)" FixedSize="yes" IconSize="32" Text="!(loc.InvalidDirDlgIcon)" /> + </Dialog> + </UI> + </Fragment> +</Wix> diff --git a/Utilities/Release/WiX/custom_action_dll.wxs.in b/Utilities/Release/WiX/custom_action_dll.wxs.in new file mode 100644 index 000000000..021e63c5f --- /dev/null +++ b/Utilities/Release/WiX/custom_action_dll.wxs.in @@ -0,0 +1,6 @@ +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> + <Fragment> + <Binary Id="CMakeCustomActionsDll" + SourceFile="$<TARGET_FILE:CMakeWiXCustomActions>"/> + </Fragment> +</Wix> diff --git a/Utilities/Release/WiX/install_dir.wxs b/Utilities/Release/WiX/install_dir.wxs new file mode 100644 index 000000000..49b74e37d --- /dev/null +++ b/Utilities/Release/WiX/install_dir.wxs @@ -0,0 +1,72 @@ +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> + <Fragment> + <UI Id="CMakeUI_InstallDir"> + <TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" /> + <TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" /> + <TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" /> + + <Property Id="DefaultUIFont" Value="WixUI_Font_Normal" /> + <Property Id="WixUI_Mode" Value="InstallDir" /> + + <DialogRef Id="CMakeExtraDialog" /> + <?ifdef CHECK_NSIS ?> + <DialogRef Id="CMakeNsisOverwriteDialog" /> + <?endif ?> + + <DialogRef Id="BrowseDlg" /> + <DialogRef Id="DiskCostDlg" /> + <DialogRef Id="ErrorDlg" /> + <DialogRef Id="FatalError" /> + <DialogRef Id="FilesInUse" /> + <DialogRef Id="MsiRMFilesInUse" /> + <DialogRef Id="PrepareDlg" /> + <DialogRef Id="ProgressDlg" /> + <DialogRef Id="ResumeDlg" /> + <DialogRef Id="UserExit" /> + + <Publish Dialog="BrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath" Order="3">1</Publish> + <Publish Dialog="BrowseDlg" Control="OK" Event="SpawnDialog" Value="InvalidDirDlg" Order="4"><![CDATA[WIXUI_INSTALLDIR_VALID<>"1"]]></Publish> + + <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish> + + <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="LicenseAgreementDlg">NOT Installed</Publish> + <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">Installed AND PATCH</Publish> + + <Publish Dialog="LicenseAgreementDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish> + <Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="CMakeExtraDialog">LicenseAccepted = "1"</Publish> + + <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="CMakeExtraDialog">1</Publish> + <Publish Dialog="InstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish> + <Publish Dialog="InstallDirDlg" Control="Next" Event="DoAction" Value="WixUIValidatePath" Order="2">NOT WIXUI_DONTVALIDATEPATH</Publish> + <Publish Dialog="InstallDirDlg" Control="Next" Event="SpawnDialog" Value="InvalidDirDlg" Order="3"><![CDATA[NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID<>"1"]]></Publish> + <?ifdef CHECK_NSIS ?> + <Publish Dialog="InstallDirDlg" Control="Next" Event="DoAction" Value="CMakeDetectNsisOverwrite" Order="4">1</Publish> + <Publish Dialog="InstallDirDlg" Control="Next" Event="SpawnDialog" Value="CMakeNsisOverwriteDialog" Order="5">CMAKE_NSIS_OVERWRITE_DETECTED="1"</Publish> + <?endif ?> + <Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="6"><![CDATA[(WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1") AND CMAKE_NSIS_OVERWRITE_DETECTED<>1]]></Publish> + <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish> + <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Event="SpawnDialog" Value="BrowseDlg" Order="2">1</Publish> + + <Publish Dialog="CMakeExtraDialog" Control="Back" Event="NewDialog" Value="LicenseAgreementDlg">1</Publish> + <Publish Dialog="CMakeExtraDialog" Control="Next" Event="NewDialog" Value="InstallDirDlg">1</Publish> + + <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="InstallDirDlg" Order="1">NOT Installed</Publish> + <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="2">Installed AND NOT PATCH</Publish> + <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="2">Installed AND PATCH</Publish> + + <Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish> + + <Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish> + <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish> + <Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish> + + <Property Id="ARPNOMODIFY" Value="1" /> + </UI> + + <UIRef Id="WixUI_Common" /> + + <?ifdef CHECK_NSIS ?> + <CustomAction Id="CMakeDetectNsisOverwrite" BinaryKey="CMakeCustomActionsDll" DllEntry="DetectNsisOverwrite"/> + <?endif ?> + </Fragment> +</Wix> diff --git a/Utilities/Release/WiX/patch_desktop_shortcut.xml b/Utilities/Release/WiX/patch_desktop_shortcut.xml new file mode 100644 index 000000000..d30705dd1 --- /dev/null +++ b/Utilities/Release/WiX/patch_desktop_shortcut.xml @@ -0,0 +1,5 @@ +<CPackWiXPatch> + <CPackWiXFragment Id="CM_SHORTCUT_DESKTOP"> + <Condition>DESKTOP_SHORTCUT_REQUESTED = 1</Condition> + </CPackWiXFragment> +</CPackWiXPatch> diff --git a/Utilities/Release/WiX/patch_path_env.xml b/Utilities/Release/WiX/patch_path_env.xml new file mode 100644 index 000000000..0e335c4d5 --- /dev/null +++ b/Utilities/Release/WiX/patch_path_env.xml @@ -0,0 +1,26 @@ +<CPackWiXPatch> + <CPackWiXFragment Id="CM_DP_bin"> + <Component Id="CMakeSystemPathEntryCMP" KeyPath="yes" Guid="0E782367-5D68-4539-81D1-B9757AE496A1"> + + <Condition>ADD_CMAKE_TO_PATH = "System"</Condition> + + <Environment Id="CMakeSystemPathEntryENV" Action="set" Part="last" + Name="PATH" Value="[INSTALL_ROOT]bin" + System="yes"/> + </Component> + + <Component Id="CMakeUserPathEntryCMP" KeyPath="yes" Guid="392E524D-D5BF-4F16-A7AF-A82B07482CB9"> + + <Condition>ADD_CMAKE_TO_PATH = "User"</Condition> + + <Environment Id="CMakeUserPathEntryENV" Action="set" Part="last" + Name="PATH" Value="[INSTALL_ROOT]bin" + System="no"/> + </Component> + </CPackWiXFragment> + + <CPackWiXFragment Id="#PRODUCTFEATURE"> + <ComponentRef Id="CMakeSystemPathEntryCMP"/> + <ComponentRef Id="CMakeUserPathEntryCMP"/> + </CPackWiXFragment> +</CPackWiXPatch> diff --git a/Utilities/Release/WiX/ui_banner.jpg b/Utilities/Release/WiX/ui_banner.jpg Binary files differnew file mode 100644 index 000000000..8d950a6ba --- /dev/null +++ b/Utilities/Release/WiX/ui_banner.jpg diff --git a/Utilities/Release/WiX/ui_dialog.jpg b/Utilities/Release/WiX/ui_dialog.jpg Binary files differnew file mode 100644 index 000000000..bb6fa5ba7 --- /dev/null +++ b/Utilities/Release/WiX/ui_dialog.jpg diff --git a/Utilities/Release/consolidate-relnotes.bash b/Utilities/Release/consolidate-relnotes.bash new file mode 100755 index 000000000..91307ac51 --- /dev/null +++ b/Utilities/Release/consolidate-relnotes.bash @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +set -e + +usage='usage: consolidate-relnotes.bash <new-release-version> <prev-release-version>' + +die() { + echo "$@" 1>&2; exit 1 +} + +test "$#" = 2 || die "$usage" + +files="$(ls Help/release/dev/* | grep -v Help/release/dev/0-sample-topic.rst)" +title="CMake $1 Release Notes" +underline="$(echo "$title" | sed 's/./*/g')" +echo "$title +$underline + +.. only:: html + + .. contents:: + +Changes made since CMake $2 include the following." > Help/release/"$1".rst +tail -q -n +3 $files >> Help/release/"$1".rst +sed -i "/^ $2 / i\\ + $1 <$1>" Help/release/index.rst +rm $files diff --git a/Utilities/Release/create-cmake-release.cmake b/Utilities/Release/create-cmake-release.cmake index 37e223d28..3af1b035f 100644 --- a/Utilities/Release/create-cmake-release.cmake +++ b/Utilities/Release/create-cmake-release.cmake @@ -6,17 +6,13 @@ endif() file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/logs) set(RELEASE_SCRIPTS_BATCH_1 - dash2win64_release.cmake # Windows - dashmacmini2_release.cmake # Mac Darwin universal ppc;i386 - dashmacmini5_release.cmake # Mac Darwin64 universal x86_64;i386 - magrathea_release.cmake # Linux - v20n250_aix_release.cmake # AIX 5.3 - ferrari_sgi64_release.cmake # IRIX 64 - ferrari_sgi_release.cmake # IRIX + win32_release.cmake # Windows x86 + osx_release.cmake # OS X x86_64 + linux64_release.cmake # Linux x86_64 ) set(RELEASE_SCRIPTS_BATCH_2 - dash2win64_cygwin.cmake # Cygwin + win64_release.cmake # Windows x64 ) function(write_batch_shell_script filename) @@ -28,15 +24,53 @@ function(write_batch_shell_script filename) math(EXPR y "160*(${i}%4)") file(APPEND ${filename} " -${CMAKE_COMMAND} -DCMAKE_CREATE_VERSION=${CMAKE_CREATE_VERSION} -P ${CMAKE_ROOT}/Utilities/Release/${f} < /dev/null >& ${CMAKE_CURRENT_SOURCE_DIR}/logs/${f}-${CMAKE_CREATE_VERSION}.log & -xterm -geometry 64x6+${x}+${y} -sb -sl 2000 -T ${f}-${CMAKE_CREATE_VERSION}.log -e tail -f ${CMAKE_CURRENT_SOURCE_DIR}/logs/${f}-${CMAKE_CREATE_VERSION}.log& +\"${CMAKE_COMMAND}\" -DCMAKE_CREATE_VERSION=${CMAKE_CREATE_VERSION} -DCMAKE_DOC_TARBALL=\"${CMAKE_DOC_TARBALL}\" -P \"${CMAKE_ROOT}/Utilities/Release/${f}\" < /dev/null >& \"${CMAKE_CURRENT_SOURCE_DIR}/logs/${f}-${CMAKE_CREATE_VERSION}.log\" & +xterm -geometry 64x6+${x}+${y} -sb -sl 2000 -T ${f}-${CMAKE_CREATE_VERSION}.log -e tail -f \"${CMAKE_CURRENT_SOURCE_DIR}/logs/${f}-${CMAKE_CREATE_VERSION}.log\" & ") math(EXPR i "${i}+1") endforeach() execute_process(COMMAND chmod a+x ${filename}) endfunction() +function(write_docs_shell_script filename) + find_program(SPHINX_EXECUTABLE + NAMES sphinx-build sphinx-build.py + DOC "Sphinx Documentation Builder (sphinx-doc.org)" + ) + if(NOT SPHINX_EXECUTABLE) + message(FATAL_ERROR "SPHINX_EXECUTABLE (sphinx-build) is not found!") + endif() + + set(name cmake-${CMAKE_CREATE_VERSION}-docs) + file(WRITE "${filename}" "#!/usr/bin/env bash + +name=${name} && +inst=\"\$PWD/\$name\" +(GIT_WORK_TREE=x git archive --prefix=\${name}-src/ ${CMAKE_CREATE_VERSION}) | tar x && +rm -rf \${name}-build && +mkdir \${name}-build && +cd \${name}-build && +\"${CMAKE_COMMAND}\" ../\${name}-src/Utilities/Sphinx \\ + -DCMAKE_INSTALL_PREFIX=\"\$inst/\" \\ + -DCMAKE_DOC_DIR=doc/cmake \\ + -DSPHINX_EXECUTABLE=\"${SPHINX_EXECUTABLE}\" \\ + -DSPHINX_HTML=ON -DSPHINX_MAN=ON && +make install && +cd .. && +tar czf \${name}.tar.gz \${name} || +echo 'Failed to create \${name}.tar.gz' +") + execute_process(COMMAND chmod a+x ${filename}) + set(CMAKE_DOC_TARBALL "${name}.tar.gz" PARENT_SCOPE) +endfunction() + +write_docs_shell_script("create-${CMAKE_CREATE_VERSION}-docs.sh") write_batch_shell_script("create-${CMAKE_CREATE_VERSION}-batch1.sh" ${RELEASE_SCRIPTS_BATCH_1}) write_batch_shell_script("create-${CMAKE_CREATE_VERSION}-batch2.sh" ${RELEASE_SCRIPTS_BATCH_2}) -message("Run ./create-${CMAKE_CREATE_VERSION}-batch1.sh, then after all those builds complete, run ./create-${CMAKE_CREATE_VERSION}-batch2.sh") +message("Run one at a time: + ./create-${CMAKE_CREATE_VERSION}-docs.sh && + ./create-${CMAKE_CREATE_VERSION}-batch1.sh && + ./create-${CMAKE_CREATE_VERSION}-batch2.sh && + echo done +") diff --git a/Utilities/Release/dash2win64_cygwin.cmake b/Utilities/Release/dash2win64_cygwin.cmake deleted file mode 100644 index 663c61581..000000000 --- a/Utilities/Release/dash2win64_cygwin.cmake +++ /dev/null @@ -1,27 +0,0 @@ -set(CMAKE_RELEASE_DIRECTORY "c:/cygwin/home/dashboard/CMakeReleaseCygwin") -set(PROCESSORS 9) -set(MAKE_PROGRAM "make") -set(MAKE "${MAKE_PROGRAM} -j8") -set(HOST dash2win64) -set(CPACK_BINARY_GENERATORS "CygwinBinary") -set(CPACK_SOURCE_GENERATORS "CygwinSource") -set(MAKE_PROGRAM "make") -set(INITIAL_CACHE "CMAKE_BUILD_TYPE:STRING=Release -CMAKE_Fortran_COMPILER_FULLPATH:FILEPATH=FALSE -CTEST_TEST_TIMEOUT:STRING=7200 -DART_TESTING_TIMEOUT:STRING=7200 -") -set(CXX g++) -set(CC gcc) -set(SCRIPT_NAME dash2win64cygwin) -set(GIT_EXTRA "git config core.autocrlf true") -get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH) - -# WARNING: Temporary fix!! This exclusion of the ExternalProject test -# is temporary until we can set up a new cygwin build machine. -# It only fails because of cygwin/non-cygwin "svn" mismatches in this -# particular environment. This is less than ideal, but at least it -# allows us to produce cygwin builds in the short term. -set(EXTRA_CTEST_ARGS "-E ExternalProject") - -include(${path}/release_cmake.cmake) diff --git a/Utilities/Release/dash2win64_release.cmake b/Utilities/Release/dash2win64_release.cmake deleted file mode 100644 index 6d1ac767e..000000000 --- a/Utilities/Release/dash2win64_release.cmake +++ /dev/null @@ -1,20 +0,0 @@ -set(CMAKE_RELEASE_DIRECTORY "c:/cygwin/home/dashboard/CMakeReleaseDirectory") -set(CONFIGURE_WITH_CMAKE TRUE) -set(CMAKE_CONFIGURE_PATH "c:/Program\\ Files\\ \\(x86\\)/CMake\\ 2.8/bin/cmake.exe") -set(PROCESSORS 8) -set(HOST dash2win64) -set(CPACK_BINARY_GENERATORS "NSIS ZIP") -set(CPACK_SOURCE_GENERATORS "ZIP") -set(MAKE_PROGRAM "make") -set(MAKE "${MAKE_PROGRAM} -j8") -set(INITIAL_CACHE "CMAKE_BUILD_TYPE:STRING=Release -CMAKE_USE_OPENSSL:BOOL=ON -CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE -CMAKE_Fortran_COMPILER:FILEPATH=FALSE -CMAKE_GENERATOR:INTERNAL=Unix Makefiles -BUILD_QtDialog:BOOL:=TRUE -QT_QMAKE_EXECUTABLE:FILEPATH=c:/Dashboards/Support/qt-build/Qt/bin/qmake.exe -") -get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH) -set(GIT_EXTRA "git config core.autocrlf true") -include(${path}/release_cmake.cmake) diff --git a/Utilities/Release/dashmacmini2_release.cmake b/Utilities/Release/dashmacmini2_release.cmake deleted file mode 100644 index 5e57a70b2..000000000 --- a/Utilities/Release/dashmacmini2_release.cmake +++ /dev/null @@ -1,22 +0,0 @@ -set(PROCESSORS 2) -set(CMAKE_RELEASE_DIRECTORY /Users/kitware/CMakeReleaseDirectory) -set(USER_OVERRIDE "set(CMAKE_CXX_LINK_EXECUTABLE \\\"gcc <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES> -shared-libgcc -lstdc++-static\\\")") -set(INSTALL_PREFIX /) -set(HOST dashmacmini2) -set(MAKE_PROGRAM "make") -set(MAKE "${MAKE_PROGRAM} -j2") -set(CPACK_BINARY_GENERATORS "PackageMaker TGZ TZ") -set(INITIAL_CACHE " -CMAKE_BUILD_TYPE:STRING=Release -CMAKE_OSX_ARCHITECTURES:STRING=ppc;i386 -CMAKE_USE_OPENSSL:BOOL=ON -OPENSSL_CRYPTO_LIBRARY:FILEPATH=/Users/kitware/openssl-1.0.1c-install/lib/libcrypto.a -OPENSSL_INCLUDE_DIR:PATH=/Users/kitware/openssl-1.0.1c-install/include -OPENSSL_SSL_LIBRARY:FILEPATH=/Users/kitware/openssl-1.0.1c-install/lib/libssl.a -CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE -CPACK_SYSTEM_NAME:STRING=Darwin-universal -BUILD_QtDialog:BOOL=TRUE -QT_QMAKE_EXECUTABLE:FILEPATH=/Users/kitware/Support/qt-4.8.0/install/bin/qmake -") -get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH) -include(${path}/release_cmake.cmake) diff --git a/Utilities/Release/dashmacmini5_release.cmake b/Utilities/Release/dashmacmini5_release.cmake deleted file mode 100644 index 36b095287..000000000 --- a/Utilities/Release/dashmacmini5_release.cmake +++ /dev/null @@ -1,24 +0,0 @@ -set(PROCESSORS 4) -set(CMAKE_RELEASE_DIRECTORY /Users/kitware/CMakeReleaseDirectory) -# set(USER_OVERRIDE "set(CMAKE_CXX_LINK_EXECUTABLE \\\"gcc <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES> -shared-libgcc -lstdc++-static\\\")") -set(INSTALL_PREFIX /) -set(HOST dashmacmini5) -set(MAKE_PROGRAM "make") -set(MAKE "${MAKE_PROGRAM} -j5") -set(CPACK_BINARY_GENERATORS "PackageMaker TGZ TZ") -set(CPACK_SOURCE_GENERATORS "TGZ TZ") -set(INITIAL_CACHE " -CMAKE_USE_OPENSSL:BOOL=ON -OPENSSL_CRYPTO_LIBRARY:FILEPATH=/Users/kitware/openssl-1.0.1c-install/lib/libcrypto.a -OPENSSL_INCLUDE_DIR:PATH=/Users/kitware/openssl-1.0.1c-install/include -OPENSSL_SSL_LIBRARY:FILEPATH=/Users/kitware/openssl-1.0.1c-install/lib/libssl.a -CMAKE_BUILD_TYPE:STRING=Release -CMAKE_OSX_ARCHITECTURES:STRING=x86_64;i386 -CMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.5 -CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE -CPACK_SYSTEM_NAME:STRING=Darwin64-universal -BUILD_QtDialog:BOOL=TRUE -QT_QMAKE_EXECUTABLE:FILEPATH=/Users/kitware/Support/qt-4.8.0/install/bin/qmake -") -get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH) -include(${path}/release_cmake.cmake) diff --git a/Utilities/Release/ferrari_sgi64_release.cmake b/Utilities/Release/ferrari_sgi64_release.cmake deleted file mode 100644 index 4425f0557..000000000 --- a/Utilities/Release/ferrari_sgi64_release.cmake +++ /dev/null @@ -1,16 +0,0 @@ -set(CMAKE_RELEASE_DIRECTORY "/home/whoffman/CMakeReleaseDirectory64") -set(PROCESSORS 2) -set(CFLAGS "-64") -set(FFLAGS "-64") -set(CXXFLAGS "-64") -set(LDFLAGS="-64") -set(HOST sgi) -set(SCRIPT_NAME sgi64) -set(MAKE_PROGRAM "make") -set(MAKE "${MAKE_PROGRAM} -P") -set(INITIAL_CACHE "CMAKE_BUILD_TYPE:STRING=Release -CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE -CPACK_SYSTEM_NAME:STRING=IRIX64-64 -") -get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH) -include(${path}/release_cmake.cmake) diff --git a/Utilities/Release/ferrari_sgi_release.cmake b/Utilities/Release/ferrari_sgi_release.cmake deleted file mode 100644 index ee5121a9b..000000000 --- a/Utilities/Release/ferrari_sgi_release.cmake +++ /dev/null @@ -1,11 +0,0 @@ -set(CMAKE_RELEASE_DIRECTORY "/home/whoffman/CMakeReleaseDirectory") -set(PROCESSORS 2) -set(HOST sgi) -set(MAKE_PROGRAM "make") -set(MAKE "${MAKE_PROGRAM} -P") -set(INITIAL_CACHE "CMAKE_BUILD_TYPE:STRING=Release -CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE -CPACK_SYSTEM_NAME:STRING=IRIX64-n32 -") -get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH) -include(${path}/release_cmake.cmake) diff --git a/Utilities/Release/hythloth_release.cmake b/Utilities/Release/hythloth_release.cmake deleted file mode 100644 index d2f4ba58c..000000000 --- a/Utilities/Release/hythloth_release.cmake +++ /dev/null @@ -1,10 +0,0 @@ -set(PROCESSORS 2) -set(HOST hythloth) -set(MAKE_PROGRAM "make") -set(MAKE "${MAKE_PROGRAM} -j2") -set(INITIAL_CACHE " -CMAKE_BUILD_TYPE:STRING=Release -CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE -") -get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH) -include(${path}/release_cmake.cmake) diff --git a/Utilities/Release/linux64_release.cmake b/Utilities/Release/linux64_release.cmake new file mode 100644 index 000000000..3d8ddba3c --- /dev/null +++ b/Utilities/Release/linux64_release.cmake @@ -0,0 +1,50 @@ +set(PROCESSORS 4) +set(BOOTSTRAP_ARGS "--docdir=doc/cmake") +set(HOST linux64) +set(MAKE_PROGRAM "make") +set(CPACK_BINARY_GENERATORS "STGZ TGZ") +set(CC /opt/gcc-6.1.0/bin/gcc) +set(CXX /opt/gcc-6.1.0/bin/g++) +set(CFLAGS "") +set(CXXFLAGS "") +set(qt_prefix "/home/kitware/qt-5.7.0") +set(qt_xcb_libs + ${qt_prefix}/plugins/platforms/libqxcb.a + ${qt_prefix}/lib/libQt5XcbQpa.a + ${qt_prefix}/lib/libQt5PlatformSupport.a + ${qt_prefix}/lib/libxcb-static.a + -lX11-xcb + -lX11 + -lxcb + -lfontconfig + -lfreetype + ) +set(INITIAL_CACHE " +CMAKE_BUILD_TYPE:STRING=Release +CMAKE_C_STANDARD:STRING=11 +CMAKE_CXX_STANDARD:STRING=14 +CMAKE_C_FLAGS:STRING=-D_POSIX_C_SOURCE=199506L -D_POSIX_SOURCE=1 -D_SVID_SOURCE=1 -D_BSD_SOURCE=1 +CMAKE_EXE_LINKER_FLAGS:STRING=-static-libstdc++ -static-libgcc +CURSES_LIBRARY:FILEPATH=/home/kitware/ncurses-5.9/lib/libncurses.a +CURSES_INCLUDE_PATH:PATH=/home/kitware/ncurses-5.9/include +FORM_LIBRARY:FILEPATH=/home/kitware/ncurses-5.9/lib/libform.a +CMAKE_USE_OPENSSL:BOOL=ON +OPENSSL_CRYPTO_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.2j/lib/libcrypto.a +OPENSSL_INCLUDE_DIR:PATH=/home/kitware/openssl-1.0.2j/include +OPENSSL_SSL_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.2j/lib/libssl.a +PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3 +CPACK_SYSTEM_NAME:STRING=Linux-x86_64 +BUILD_QtDialog:BOOL:=TRUE +CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE +CMake_ENABLE_SERVER_MODE:BOOL=TRUE +CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3 +CMake_INSTALL_DEPENDENCIES:BOOL=ON +CMAKE_PREFIX_PATH:STRING=${qt_prefix} +CMake_QT_STATIC_QXcbIntegrationPlugin_LIBRARIES:STRING=${qt_xcb_libs} +") + +# Exclude Qt5 tests because our Qt5 is static. +set(EXTRA_CTEST_ARGS "-E Qt5") + +get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH) +include(${path}/release_cmake.cmake) diff --git a/Utilities/Release/magrathea_release.cmake b/Utilities/Release/magrathea_release.cmake deleted file mode 100644 index 4783fdad3..000000000 --- a/Utilities/Release/magrathea_release.cmake +++ /dev/null @@ -1,22 +0,0 @@ -set(PROCESSORS 1) -set(HOST magrathea) -set(MAKE_PROGRAM "make") -set(CC gcc332s) -set(CXX c++332s) -set(CFLAGS -DDT_RUNPATH=29) -set(CXXFLAGS -DDT_RUNPATH=29) -set(INITIAL_CACHE " -CMAKE_BUILD_TYPE:STRING=Release -CURSES_LIBRARY:FILEPATH=/usr/i686-gcc-332s/lib/libncurses.a -CURSES_INCLUDE_PATH:PATH=/usr/i686-gcc-332s/include/ncurses -FORM_LIBRARY:FILEPATH=/usr/i686-gcc-332s/lib/libform.a -CMAKE_USE_OPENSSL:BOOL=ON -OPENSSL_CRYPTO_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.1c-install/lib/libcrypto.a -OPENSSL_INCLUDE_DIR:PATH=/home/kitware/openssl-1.0.1c-install/include -OPENSSL_SSL_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.1c-install/lib/libssl.a -CPACK_SYSTEM_NAME:STRING=Linux-i386 -BUILD_QtDialog:BOOL:=TRUE -QT_QMAKE_EXECUTABLE:FILEPATH=/home/kitware/qt-4.43-install/bin/qmake -") -get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH) -include(${path}/release_cmake.cmake) diff --git a/Utilities/Release/osx_release.cmake b/Utilities/Release/osx_release.cmake new file mode 100644 index 000000000..36498a7ce --- /dev/null +++ b/Utilities/Release/osx_release.cmake @@ -0,0 +1,33 @@ +set(PROCESSORS 4) +set(CMAKE_RELEASE_DIRECTORY /Users/kitware/CMakeReleaseDirectory) +set(BOOTSTRAP_ARGS "--prefix=/ --docdir=doc/cmake") +set(HOST dragnipur) +set(MAKE_PROGRAM "make") +set(MAKE "${MAKE_PROGRAM} -j5") +set(CPACK_BINARY_GENERATORS "DragNDrop TGZ") +set(CPACK_SOURCE_GENERATORS "TGZ TZ") +set(CPACK_DMG_FORMAT "UDBZ") #build using bzip2 for smaller package size +set(CC clang) +set(CXX clang++) +set(CFLAGS "") +set(CXXFLAGS "-stdlib=libc++") +set(INITIAL_CACHE " +CMAKE_BUILD_TYPE:STRING=Release +CMAKE_C_STANDARD:STRING=11 +CMAKE_CXX_STANDARD:STRING=14 +CMAKE_OSX_ARCHITECTURES:STRING=x86_64 +CMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7 +CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE +CPACK_SYSTEM_NAME:STRING=Darwin-x86_64 +BUILD_QtDialog:BOOL=TRUE +CMake_ENABLE_SERVER_MODE:BOOL=TRUE +CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3 +CMake_INSTALL_DEPENDENCIES:BOOL=ON +CMAKE_SKIP_RPATH:BOOL=TRUE +CMake_TEST_NO_FindPackageModeMakefileTest:BOOL=TRUE +") +set(ENV [[ +export CMAKE_PREFIX_PATH='/Users/kitware/SDKs/qt-5.6.2-clang-x64' +]]) +get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH) +include(${path}/release_cmake.cmake) diff --git a/Utilities/Release/release_cmake.cmake b/Utilities/Release/release_cmake.cmake index f351ac8c0..b2c21b7dc 100644 --- a/Utilities/Release/release_cmake.cmake +++ b/Utilities/Release/release_cmake.cmake @@ -4,9 +4,6 @@ get_filename_component(SCRIPT_PATH "${CMAKE_CURRENT_LIST_FILE}" PATH) if(NOT DEFINED CPACK_BINARY_GENERATORS) set(CPACK_BINARY_GENERATORS "STGZ TGZ TZ") endif() -if(DEFINED EXTRA_COPY) - set(HAS_EXTRA_COPY 1) -endif() if(NOT DEFINED CMAKE_RELEASE_DIRECTORY) set(CMAKE_RELEASE_DIRECTORY "~/CMakeReleaseDirectory") endif() @@ -22,6 +19,9 @@ endif() if(NOT DEFINED RUN_SHELL) set(RUN_SHELL "/bin/sh") endif() +if(NOT DEFINED RUN_LAUNCHER) + set(RUN_LAUNCHER "") +endif() if(NOT DEFINED PROCESSORS) set(PROCESSORS 1) endif() @@ -32,9 +32,16 @@ if(NOT DEFINED GIT_COMMAND) set(GIT_COMMAND git) endif() -if(${CMAKE_CREATE_VERSION} MATCHES "^(release|maint|next|nightly)$") +if(CMAKE_CREATE_VERSION MATCHES "^(master|release)$") + set(GIT_FETCH "") set(GIT_BRANCH origin/${CMAKE_CREATE_VERSION}) +elseif(CMAKE_CREATE_VERSION STREQUAL "nightly") + set(nightly stage/master/nightly/latest) + set(GIT_FETCH "${GIT_COMMAND} fetch origin refs/${nightly}:refs/remotes/origin/${nightly}") + set(GIT_BRANCH origin/${nightly}) else() + set(stage stage/master/head) + set(GIT_FETCH "${GIT_COMMAND} fetch origin refs/${stage}:refs/remotes/origin/${stage}") set(GIT_BRANCH ${CMAKE_CREATE_VERSION}) endif() @@ -55,17 +62,29 @@ message("Creating CMake release ${CMAKE_CREATE_VERSION} on ${HOST} with parallel macro(remote_command comment command) message("${comment}") if(${ARGC} GREATER 2) - message("ssh ${HOST} ${EXTRA_HOP} ${command}") - execute_process(COMMAND ssh ${HOST} ${EXTRA_HOP} ${command} RESULT_VARIABLE result INPUT_FILE ${ARGV2}) + message("ssh ${HOST} ${RUN_LAUNCHER} ${command}") + execute_process(COMMAND ssh ${HOST} ${RUN_LAUNCHER} ${command} RESULT_VARIABLE result INPUT_FILE ${ARGV2}) else() - message("ssh ${HOST} ${EXTRA_HOP} ${command}") - execute_process(COMMAND ssh ${HOST} ${EXTRA_HOP} ${command} RESULT_VARIABLE result) + message("ssh ${HOST} ${RUN_LAUNCHER} ${command}") + execute_process(COMMAND ssh ${HOST} ${RUN_LAUNCHER} ${command} RESULT_VARIABLE result) endif() if(${result} GREATER 0) message(FATAL_ERROR "Error running command: ${command}, return value = ${result}") endif() endmacro() +if(CMAKE_DOC_TARBALL) + get_filename_component(CMAKE_DOC_TARBALL_NAME "${CMAKE_DOC_TARBALL}" NAME) + string(REPLACE ".tar.gz" "-${SCRIPT_NAME}.tar.gz" CMAKE_DOC_TARBALL_STAGED "${CMAKE_DOC_TARBALL_NAME}") + message("scp '${CMAKE_DOC_TARBALL}' '${HOST}:${CMAKE_DOC_TARBALL_STAGED}'") + execute_process(COMMAND + scp ${CMAKE_DOC_TARBALL} ${HOST}:${CMAKE_DOC_TARBALL_STAGED} + RESULT_VARIABLE result) + if(${result} GREATER 0) + message("error sending doc tarball with scp '${CMAKE_DOC_TARBALL}' '${HOST}:${CMAKE_DOC_TARBALL_STAGED}'") + endif() +endif() + # set this so configure file will work from script mode # create the script specific for the given host set(SCRIPT_FILE release_cmake-${SCRIPT_NAME}.sh) @@ -90,19 +109,18 @@ foreach(gen ${generators}) if("${gen}" STREQUAL "STGZ") set(SUFFIXES ${SUFFIXES} "*.sh") endif() - if("${gen}" STREQUAL "PackageMaker") + if("${gen}" STREQUAL "DragNDrop") set(SUFFIXES ${SUFFIXES} "*.dmg") endif() if("${gen}" STREQUAL "TBZ2") set(SUFFIXES ${SUFFIXES} "*.tar.bz2") endif() - if("${gen}" MATCHES "Cygwin") - set(SUFFIXES ${SUFFIXES} "*.tar.bz2") - set(extra_files setup.hint) - endif() if("${gen}" STREQUAL "TZ") set(SUFFIXES ${SUFFIXES} "*.tar.Z") endif() + if("${gen}" STREQUAL "WIX") + set(SUFFIXES ${SUFFIXES} "*.msi") + endif() if("${gen}" STREQUAL "ZIP") set(SUFFIXES ${SUFFIXES} "*.zip") endif() @@ -110,27 +128,38 @@ foreach(gen ${generators}) set(SUFFIXES ${SUFFIXES} "*.exe") endif() endforeach() + +if(SUFFIXES) + list(REMOVE_DUPLICATES SUFFIXES) +endif() + +if(LOCAL_DIR) + file(MAKE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${LOCAL_DIR}") +else() + set(LOCAL_DIR .) +endif() + # copy all the files over from the remote machine set(PROJECT_PREFIX cmake-) foreach(suffix ${SUFFIXES}) - message("scp ${HOST}:${FINAL_PATH}/${PROJECT_PREFIX}${suffix} .") + message("scp ${HOST}:${FINAL_PATH}/${PROJECT_PREFIX}${suffix} ${LOCAL_DIR}") execute_process(COMMAND - scp ${HOST}:${FINAL_PATH}/${PROJECT_PREFIX}${suffix} . + scp ${HOST}:${FINAL_PATH}/${PROJECT_PREFIX}${suffix} ${LOCAL_DIR} RESULT_VARIABLE result) if(${result} GREATER 0) - message("error getting file back scp ${HOST}:${FINAL_PATH}/${PROJECT_PREFIX}${suffix} .") + message("error getting file back scp ${HOST}:${FINAL_PATH}/${PROJECT_PREFIX}${suffix} ${LOCAL_DIR}") endif() endforeach() # if there are extra files to copy get them as well if(extra_files) foreach(f ${extra_files}) - message("scp ${HOST}:${FINAL_PATH}/${f} .") + message("scp ${HOST}:${FINAL_PATH}/${f} ${LOCAL_DIR}") execute_process(COMMAND - scp ${HOST}:${FINAL_PATH}/${f} . + scp ${HOST}:${FINAL_PATH}/${f} ${LOCAL_DIR} RESULT_VARIABLE result) if(${result} GREATER 0) - message("error getting file back scp ${HOST}:${FINAL_PATH}/${f} .") + message("error getting file back scp ${HOST}:${FINAL_PATH}/${f} ${LOCAL_DIR}") endif() endforeach() endif() diff --git a/Utilities/Release/release_cmake.sh.in b/Utilities/Release/release_cmake.sh.in index 82c039b43..f363b3d8a 100755 --- a/Utilities/Release/release_cmake.sh.in +++ b/Utilities/Release/release_cmake.sh.in @@ -5,6 +5,7 @@ echo "" echo "remove and create working directory @CMAKE_RELEASE_DIRECTORY@" rm -rf @CMAKE_RELEASE_DIRECTORY@ mkdir @CMAKE_RELEASE_DIRECTORY@ +@ENV@ check_exit_value() { @@ -15,6 +16,13 @@ check_exit_value() fi } +CMAKE_DOC_TARBALL="" +if [ ! -z "@CMAKE_DOC_TARBALL_NAME@" ] ; then + CMAKE_DOC_TARBALL=@CMAKE_RELEASE_DIRECTORY@/@CMAKE_DOC_TARBALL_NAME@ + mv "$HOME/@CMAKE_DOC_TARBALL_STAGED@" "$CMAKE_DOC_TARBALL" + check_exit_value $? "mv doc tarball" || exit 1 +fi + if [ ! -z "@CC@" ]; then export CC="@CC@" check_exit_value $? "set CC compiler env var" || exit 1 @@ -76,18 +84,25 @@ if [ ! -z "@USER_OVERRIDE@" ]; then echo "CMAKE_USER_MAKE_RULES_OVERRIDE:FILEPATH=@CMAKE_RELEASE_DIRECTORY@/@CMAKE_CREATE_VERSION@-build/user.txt" >> @CMAKE_RELEASE_DIRECTORY@/@CMAKE_CREATE_VERSION@-build/CMakeCache.txt fi +# Point build at pre-built documentation tarball, if any. +if [ ! -z "$CMAKE_DOC_TARBALL" ]; then + echo "CMAKE_DOC_TARBALL:FILEPATH=$CMAKE_DOC_TARBALL" >> @CMAKE_RELEASE_DIRECTORY@/@CMAKE_CREATE_VERSION@-build/CMakeCache.txt +fi + echo "Checkout the source for @CMAKE_CREATE_VERSION@" cd @CMAKE_RELEASE_DIRECTORY@ if [ ! -z "@GIT_COMMAND@" ]; then # clone the repo without creating any source files in the directory # matching the branch being built (i.e. master CMake-2-8, etc) - @GIT_COMMAND@ clone -n git://cmake.org/cmake.git @CMAKE_CREATE_VERSION@ - check_exit_value $? "Checkout git cmake source" || exit 1 + @GIT_COMMAND@ clone -n https://gitlab.kitware.com/cmake/cmake.git @CMAKE_CREATE_VERSION@ + check_exit_value $? "git clone cmake source" || exit 1 # go into the git directory cd @CMAKE_CREATE_VERSION@ # run any extra commands if they exist @GIT_EXTRA@ check_exit_value $? "git extra cmake source" || exit 1 + @GIT_FETCH@ + check_exit_value $? "git extra fetch" || exit 1 # now checkout a copy on the local branch working @GIT_COMMAND@ checkout -b working @GIT_BRANCH@ check_exit_value $? "git checkout" || exit 1 @@ -104,15 +119,9 @@ if [ ! -z "@CONFIGURE_WITH_CMAKE@" ]; then @CMAKE_CONFIGURE_PATH@ ../@CMAKE_CREATE_VERSION@ check_exit_value $? "Configure cmake" || exit 1 else - if [ -z "@INSTALL_PREFIX@" ]; then - echo "Run cmake bootstrap --parallel=@PROCESSORS@" - ../@CMAKE_CREATE_VERSION@/bootstrap --parallel=@PROCESSORS@ - check_exit_value $? "Bootstrap cmake" || exit 1 - else - echo "Run cmake bootstrap --prefix=@INSTALL_PREFIX@ --parallel=@PROCESSORS@" - ../@CMAKE_CREATE_VERSION@/bootstrap --prefix=@INSTALL_PREFIX@ --parallel=@PROCESSORS@ - check_exit_value $? "Bootstrap cmake" || exit 1 - fi + echo "Run cmake bootstrap @BOOTSTRAP_ARGS@ --parallel=@PROCESSORS@" + ../@CMAKE_CREATE_VERSION@/bootstrap @BOOTSTRAP_ARGS@ --parallel=@PROCESSORS@ + check_exit_value $? "Bootstrap cmake" || exit 1 fi echo "Build cmake with @MAKE@" @@ -143,11 +152,6 @@ done -# need to add an extra copy thing here -if [ ! -z "@EXTRA_COPY@" ]; then - @EXTRA_COPY@ - check_exit_value $? "Extra copy step @EXTRA_COPY@" || exit 1 -fi echo "End release" date echo "" diff --git a/Utilities/Release/upload_release.cmake b/Utilities/Release/upload_release.cmake index 9bf35236d..5b2cc5732 100644 --- a/Utilities/Release/upload_release.cmake +++ b/Utilities/Release/upload_release.cmake @@ -1,20 +1,19 @@ set(CTEST_RUN_CURRENT_SCRIPT 0) -if(NOT DEFINED PROJECT_PREFIX) - set(PROJECT_PREFIX cmake-) -endif() if(NOT VERSION) - set(VERSION 2.8) + set(VERSION 3.9) +endif() +if(NOT DEFINED PROJECT_PREFIX) + set(PROJECT_PREFIX cmake-${VERSION}) endif() -set(dir "v${VERSION}") -if("${VERSION}" MATCHES "master") - set(dir "dev") +if(NOT DEFINED DIR) + set(DIR "v${VERSION}") endif() file(GLOB FILES ${CMAKE_CURRENT_SOURCE_DIR} "${PROJECT_PREFIX}*") list(SORT FILES) list(REVERSE FILES) message("${FILES}") set(UPLOAD_LOC - "kitware@www.cmake.org:/projects/FTP/pub/cmake/${dir}") + "kitware@www.cmake.org:/projects/FTP/pub/cmake/${DIR}") set(count 0) foreach(file ${FILES}) if(NOT IS_DIRECTORY ${file}) diff --git a/Utilities/Release/v20n250_aix_release.cmake b/Utilities/Release/v20n250_aix_release.cmake deleted file mode 100644 index cc8cd058b..000000000 --- a/Utilities/Release/v20n250_aix_release.cmake +++ /dev/null @@ -1,22 +0,0 @@ -set(CMAKE_RELEASE_DIRECTORY "/bench1/noibm34/CMakeReleaseDirectory") -set(FINAL_PATH /u/noibm34/cmake-release) -set(PROCESSORS 2) -set(HOST "sshserv.centers.ihost.com") -set(EXTRA_HOP "rsh p90n03") -set(MAKE_PROGRAM "make") -set(CC "xlc_r") -set(CXX "xlC_r") -set(FC "xlf") -set(LDFLAGS "-Wl,-bmaxdata:0x80000000") # Push "Segmentation fault in extend_brk" over horizon -set(INITIAL_CACHE " -CMAKE_BUILD_TYPE:STRING=Release -CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE -") -set(EXTRA_COPY " -rm -rf ~/cmake-release -mkdir ~/cmake-release -mv *.sh ~/cmake-release -mv *.Z ~/cmake-release -mv *.gz ~/cmake-release") -get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH) -include(${path}/release_cmake.cmake) diff --git a/Utilities/Release/win32_release.cmake b/Utilities/Release/win32_release.cmake new file mode 100644 index 000000000..df9fe275b --- /dev/null +++ b/Utilities/Release/win32_release.cmake @@ -0,0 +1,33 @@ +set(CMAKE_RELEASE_DIRECTORY "c:/msys64/home/dashboard/CMakeReleaseDirectory") +set(CONFIGURE_WITH_CMAKE TRUE) +set(CMAKE_CONFIGURE_PATH "c:/Program\\ Files/CMake/bin/cmake.exe") +set(PROCESSORS 8) +set(HOST dash3win7) +set(RUN_LAUNCHER ~/rel/run) +set(CPACK_BINARY_GENERATORS "WIX ZIP") +set(CPACK_SOURCE_GENERATORS "ZIP") +set(MAKE_PROGRAM "ninja") +set(MAKE "${MAKE_PROGRAM} -j8") +set(INITIAL_CACHE "CMAKE_BUILD_TYPE:STRING=Release +CMAKE_DOC_DIR:STRING=doc/cmake +CMAKE_USE_OPENSSL:BOOL=OFF +CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE +CMAKE_Fortran_COMPILER:FILEPATH=FALSE +CMAKE_GENERATOR:INTERNAL=Ninja +BUILD_QtDialog:BOOL:=TRUE +CMake_ENABLE_SERVER_MODE:BOOL=TRUE +CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3 +CMake_INSTALL_DEPENDENCIES:BOOL=ON +CMAKE_EXE_LINKER_FLAGS:STRING=-machine:x86 -subsystem:console,5.01 +") +set(ppflags "-D_WIN32_WINNT=0x501 -DNTDDI_VERSION=0x05010000 -D_USING_V110_SDK71_") +set(CFLAGS "${ppflags}") +set(CXXFLAGS "${ppflags}") +set(ENV ". ~/rel/env") +get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH) +set(GIT_EXTRA "git config core.autocrlf true") +if(CMAKE_CREATE_VERSION STREQUAL "nightly") + # Some tests fail spuriously too often. + set(EXTRA_CTEST_ARGS "-E 'Qt5Autogen|ConsoleBuf'") +endif() +include(${path}/release_cmake.cmake) diff --git a/Utilities/Release/win64_release.cmake b/Utilities/Release/win64_release.cmake new file mode 100644 index 000000000..ab52d794d --- /dev/null +++ b/Utilities/Release/win64_release.cmake @@ -0,0 +1,34 @@ +set(CMAKE_RELEASE_DIRECTORY "c:/msys64/home/dashboard/CMakeReleaseDirectory64") +set(CONFIGURE_WITH_CMAKE TRUE) +set(CMAKE_CONFIGURE_PATH "c:/Program\\ Files/CMake/bin/cmake.exe") +set(PROCESSORS 8) +set(HOST dash3win7) +set(SCRIPT_NAME dash3win7x64) +set(RUN_LAUNCHER ~/rel/run) +set(CPACK_BINARY_GENERATORS "WIX ZIP") +set(CPACK_SOURCE_GENERATORS "") +set(MAKE_PROGRAM "ninja") +set(MAKE "${MAKE_PROGRAM} -j8") +set(INITIAL_CACHE "CMAKE_BUILD_TYPE:STRING=Release +CMAKE_DOC_DIR:STRING=doc/cmake +CMAKE_USE_OPENSSL:BOOL=OFF +CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE +CMAKE_Fortran_COMPILER:FILEPATH=FALSE +CMAKE_GENERATOR:INTERNAL=Ninja +BUILD_QtDialog:BOOL:=TRUE +CMake_ENABLE_SERVER_MODE:BOOL=TRUE +CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3 +CMake_INSTALL_DEPENDENCIES:BOOL=ON +CMAKE_EXE_LINKER_FLAGS:STRING=-machine:x64 -subsystem:console,5.02 +") +set(ppflags "-D_WIN32_WINNT=0x502 -DNTDDI_VERSION=0x05020000 -D_USING_V110_SDK71_") +set(CFLAGS "${ppflags}") +set(CXXFLAGS "${ppflags}") +set(ENV ". ~/rel/env64") +get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH) +set(GIT_EXTRA "git config core.autocrlf true") +if(CMAKE_CREATE_VERSION STREQUAL "nightly") + # Some tests fail spuriously too often. + set(EXTRA_CTEST_ARGS "-E 'Qt5Autogen|ConsoleBuf'") +endif() +include(${path}/release_cmake.cmake) |