Преглед изворни кода

Merge topic 'cmake-cleanup'

326d5fa7 Allow custom built libarchive to use custom built expat.
7d45db99 Don't require liblzma when using system libarchive
a28b8f95 Don't require libbz2 when using system libarchive
66c6144c CMakeCPack: remove obsolete conditions
Brad King пре 9 година
родитељ
комит
9c7fc00a45
2 измењених фајлова са 216 додато и 212 уклоњено
  1. 170 175
      CMakeCPack.cmake
  2. 46 37
      CMakeLists.txt

+ 170 - 175
CMakeCPack.cmake

@@ -1,205 +1,200 @@
 # Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
 # file Copyright.txt or https://cmake.org/licensing for details.
 
-# If the cmake version includes cpack, use it
-if(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
-  if(EXISTS "${CMAKE_ROOT}/Modules/InstallRequiredSystemLibraries.cmake")
-    option(CMAKE_INSTALL_DEBUG_LIBRARIES
-      "Install Microsoft runtime debug libraries with CMake." FALSE)
-    mark_as_advanced(CMAKE_INSTALL_DEBUG_LIBRARIES)
-
-    # By default, do not warn when built on machines using only VS Express:
-    if(NOT DEFINED CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
-      set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)
-    endif()
+option(CMAKE_INSTALL_DEBUG_LIBRARIES
+  "Install Microsoft runtime debug libraries with CMake." FALSE)
+mark_as_advanced(CMAKE_INSTALL_DEBUG_LIBRARIES)
 
-    if(CMake_INSTALL_DEPENDENCIES)
-      include(${CMake_SOURCE_DIR}/Modules/InstallRequiredSystemLibraries.cmake)
-    endif()
-  endif()
+# By default, do not warn when built on machines using only VS Express:
+if(NOT DEFINED CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
+  set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)
+endif()
 
-  set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "CMake is a build tool")
-  set(CPACK_PACKAGE_VENDOR "Kitware")
-  set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt")
-  set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt")
-  set(CPACK_PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
-  set(CPACK_PACKAGE_VERSION "${CMake_VERSION}")
-  set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}")
-  set(CPACK_SOURCE_PACKAGE_FILE_NAME "cmake-${CMake_VERSION}")
+if(CMake_INSTALL_DEPENDENCIES)
+  include(${CMake_SOURCE_DIR}/Modules/InstallRequiredSystemLibraries.cmake)
+endif()
 
-  # Installers for 32- vs. 64-bit CMake:
-  #  - Root install directory (displayed to end user at installer-run time)
-  #  - "NSIS package/display name" (text used in the installer GUI)
-  #  - Registry key used to store info about the installation
-  if(CMAKE_CL_64)
-    set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
-    set(CPACK_NSIS_PACKAGE_NAME "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION} (Win64)")
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "CMake is a build tool")
+set(CPACK_PACKAGE_VENDOR "Kitware")
+set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt")
+set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt")
+set(CPACK_PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
+set(CPACK_PACKAGE_VERSION "${CMake_VERSION}")
+set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}")
+set(CPACK_SOURCE_PACKAGE_FILE_NAME "cmake-${CMake_VERSION}")
+
+# Installers for 32- vs. 64-bit CMake:
+#  - Root install directory (displayed to end user at installer-run time)
+#  - "NSIS package/display name" (text used in the installer GUI)
+#  - Registry key used to store info about the installation
+if(CMAKE_CL_64)
+  set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
+  set(CPACK_NSIS_PACKAGE_NAME "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION} (Win64)")
+else()
+  set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES")
+  set(CPACK_NSIS_PACKAGE_NAME "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
+endif()
+set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_NSIS_PACKAGE_NAME}")
+
+if(NOT DEFINED CPACK_SYSTEM_NAME)
+  # make sure package is not Cygwin-unknown, for Cygwin just
+  # cygwin is good for the system name
+  if("x${CMAKE_SYSTEM_NAME}" STREQUAL "xCYGWIN")
+    set(CPACK_SYSTEM_NAME Cygwin)
   else()
-    set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES")
-    set(CPACK_NSIS_PACKAGE_NAME "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
-  endif()
-  set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_NSIS_PACKAGE_NAME}")
-
-  if(NOT DEFINED CPACK_SYSTEM_NAME)
-    # make sure package is not Cygwin-unknown, for Cygwin just
-    # cygwin is good for the system name
-    if("x${CMAKE_SYSTEM_NAME}" STREQUAL "xCYGWIN")
-      set(CPACK_SYSTEM_NAME Cygwin)
-    else()
-      set(CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR})
-    endif()
+    set(CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR})
   endif()
-  if(${CPACK_SYSTEM_NAME} MATCHES Windows)
-    if(CMAKE_CL_64)
-      set(CPACK_SYSTEM_NAME win64-x64)
-      set(CPACK_IFW_TARGET_DIRECTORY "@RootDir@/Program Files/${CMAKE_PROJECT_NAME}")
-    else()
-      set(CPACK_SYSTEM_NAME win32-x86)
-    endif()
+endif()
+if(${CPACK_SYSTEM_NAME} MATCHES Windows)
+  if(CMAKE_CL_64)
+    set(CPACK_SYSTEM_NAME win64-x64)
+    set(CPACK_IFW_TARGET_DIRECTORY "@RootDir@/Program Files/${CMAKE_PROJECT_NAME}")
+  else()
+    set(CPACK_SYSTEM_NAME win32-x86)
   endif()
+endif()
 
-  # Components
-  if(CMake_INSTALL_COMPONENTS)
-    set(_CPACK_IFW_COMPONENTS_ALL cmake ctest cpack)
-    if(WIN32 AND NOT CYGWIN)
-        list(APPEND _CPACK_IFW_COMPONENTS_ALL cmcldeps)
-    endif()
-    if(APPLE)
-      list(APPEND _CPACK_IFW_COMPONENTS_ALL cmakexbuild)
-    endif()
-    if(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME)
-      set(_CPACK_IFW_COMPONENT_UNSPECIFIED_NAME
-        ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME})
-    else()
-      set(_CPACK_IFW_COMPONENT_UNSPECIFIED_NAME Unspecified)
-    endif()
-    list(APPEND _CPACK_IFW_COMPONENTS_ALL ${_CPACK_IFW_COMPONENT_UNSPECIFIED_NAME})
-    string(TOUPPER "${_CPACK_IFW_COMPONENT_UNSPECIFIED_NAME}"
-      _CPACK_IFW_COMPONENT_UNSPECIFIED_UNAME)
-    if(BUILD_CursesDialog)
-      list(APPEND _CPACK_IFW_COMPONENTS_ALL ccmake)
-    endif()
-    if(BUILD_QtDialog)
-      list(APPEND _CPACK_IFW_COMPONENTS_ALL cmake-gui)
-      if(USE_LGPL)
-        set(_CPACK_IFW_COMPONENT_CMAKE-GUI_LICENSES "set(CPACK_IFW_COMPONENT_CMAKE-GUI_LICENSES
-    \"LGPLv${USE_LGPL}\" \"${CMake_SOURCE_DIR}/Licenses/LGPLv${USE_LGPL}.txt\")")
-      endif()
-    endif()
-    if(SPHINX_MAN)
-      list(APPEND _CPACK_IFW_COMPONENTS_ALL sphinx-man)
-    endif()
-    if(SPHINX_HTML)
-      list(APPEND _CPACK_IFW_COMPONENTS_ALL sphinx-html)
-    endif()
-    if(SPHINX_SINGLEHTML)
-      list(APPEND _CPACK_IFW_COMPONENTS_ALL sphinx-singlehtml)
+# Components
+if(CMake_INSTALL_COMPONENTS)
+  set(_CPACK_IFW_COMPONENTS_ALL cmake ctest cpack)
+  if(WIN32 AND NOT CYGWIN)
+      list(APPEND _CPACK_IFW_COMPONENTS_ALL cmcldeps)
+  endif()
+  if(APPLE)
+    list(APPEND _CPACK_IFW_COMPONENTS_ALL cmakexbuild)
+  endif()
+  if(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME)
+    set(_CPACK_IFW_COMPONENT_UNSPECIFIED_NAME
+      ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME})
+  else()
+    set(_CPACK_IFW_COMPONENT_UNSPECIFIED_NAME Unspecified)
+  endif()
+  list(APPEND _CPACK_IFW_COMPONENTS_ALL ${_CPACK_IFW_COMPONENT_UNSPECIFIED_NAME})
+  string(TOUPPER "${_CPACK_IFW_COMPONENT_UNSPECIFIED_NAME}"
+    _CPACK_IFW_COMPONENT_UNSPECIFIED_UNAME)
+  if(BUILD_CursesDialog)
+    list(APPEND _CPACK_IFW_COMPONENTS_ALL ccmake)
+  endif()
+  if(BUILD_QtDialog)
+    list(APPEND _CPACK_IFW_COMPONENTS_ALL cmake-gui)
+    if(USE_LGPL)
+      set(_CPACK_IFW_COMPONENT_CMAKE-GUI_LICENSES "set(CPACK_IFW_COMPONENT_CMAKE-GUI_LICENSES
+  \"LGPLv${USE_LGPL}\" \"${CMake_SOURCE_DIR}/Licenses/LGPLv${USE_LGPL}.txt\")")
     endif()
-    if(SPHINX_QTHELP)
-      list(APPEND _CPACK_IFW_COMPONENTS_ALL sphinx-qthelp)
+  endif()
+  if(SPHINX_MAN)
+    list(APPEND _CPACK_IFW_COMPONENTS_ALL sphinx-man)
+  endif()
+  if(SPHINX_HTML)
+    list(APPEND _CPACK_IFW_COMPONENTS_ALL sphinx-html)
+  endif()
+  if(SPHINX_SINGLEHTML)
+    list(APPEND _CPACK_IFW_COMPONENTS_ALL sphinx-singlehtml)
+  endif()
+  if(SPHINX_QTHELP)
+    list(APPEND _CPACK_IFW_COMPONENTS_ALL sphinx-qthelp)
+  endif()
+  if(CMake_BUILD_DEVELOPER_REFERENCE)
+    if(CMake_BUILD_DEVELOPER_REFERENCE_HTML)
+      list(APPEND _CPACK_IFW_COMPONENTS_ALL cmake-developer-reference-html)
     endif()
-    if(CMake_BUILD_DEVELOPER_REFERENCE)
-      if(CMake_BUILD_DEVELOPER_REFERENCE_HTML)
-        list(APPEND _CPACK_IFW_COMPONENTS_ALL cmake-developer-reference-html)
-      endif()
-      if(CMake_BUILD_DEVELOPER_REFERENCE_QTHELP)
-        list(APPEND _CPACK_IFW_COMPONENTS_ALL cmake-developer-reference-qthelp)
-      endif()
+    if(CMake_BUILD_DEVELOPER_REFERENCE_QTHELP)
+      list(APPEND _CPACK_IFW_COMPONENTS_ALL cmake-developer-reference-qthelp)
     endif()
-    set(_CPACK_IFW_COMPONENTS_CONFIGURATION "
-  # Components
-  set(CPACK_COMPONENTS_ALL \"${_CPACK_IFW_COMPONENTS_ALL}\")
-  set(CPACK_COMPONENTS_GROUPING IGNORE)
+  endif()
+  set(_CPACK_IFW_COMPONENTS_CONFIGURATION "
+# Components
+set(CPACK_COMPONENTS_ALL \"${_CPACK_IFW_COMPONENTS_ALL}\")
+set(CPACK_COMPONENTS_GROUPING IGNORE)
 ")
-  else()
-    if(BUILD_QtDialog AND USE_LGPL)
-      set(_CPACK_IFW_ADDITIONAL_LICENSES
-        "\"LGPLv${USE_LGPL}\" \"${CMake_SOURCE_DIR}/Licenses/LGPLv${USE_LGPL}.txt\"")
-    endif()
+else()
+  if(BUILD_QtDialog AND USE_LGPL)
+    set(_CPACK_IFW_ADDITIONAL_LICENSES
+      "\"LGPLv${USE_LGPL}\" \"${CMake_SOURCE_DIR}/Licenses/LGPLv${USE_LGPL}.txt\"")
   endif()
+endif()
 
-  # Components scripts configuration
-  foreach(_script
-    CMake
-    CMake.Documentation.SphinxHTML
-    CMake.DeveloperReference.HTML)
-    configure_file("${CMake_SOURCE_DIR}/Source/QtIFW/${_script}.qs.in"
-      "${CMake_BINARY_DIR}/${_script}.qs" @ONLY)
-  endforeach()
-
-  if(${CMAKE_SYSTEM_NAME} MATCHES Windows)
-    set(_CPACK_IFW_PACKAGE_ICON
-        "set(CPACK_IFW_PACKAGE_ICON \"${CMake_SOURCE_DIR}/Source/QtDialog/CMakeSetup.ico\")")
-    if(BUILD_QtDialog)
-      set(_CPACK_IFW_SHORTCUT_OPTIONAL "${_CPACK_IFW_SHORTCUT_OPTIONAL}component.addOperation(\"CreateShortcut\", \"@TargetDir@/bin/cmake-gui.exe\", \"@StartMenuDir@/CMake (cmake-gui).lnk\");\n")
-    endif()
-    if(SPHINX_HTML)
-      set(_CPACK_IFW_SHORTCUT_OPTIONAL "${_CPACK_IFW_SHORTCUT_OPTIONAL}component.addOperation(\"CreateShortcut\", \"@TargetDir@/doc/cmake-${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}/html/index.html\", \"@StartMenuDir@/CMake Documentation.lnk\");\n")
-    endif()
-    if(CMake_BUILD_DEVELOPER_REFERENCE)
-      if(CMake_BUILD_DEVELOPER_REFERENCE_HTML)
-      set(_CPACK_IFW_SHORTCUT_OPTIONAL "${_CPACK_IFW_SHORTCUT_OPTIONAL}component.addOperation(\"CreateShortcut\", \"@TargetDir@/doc/cmake-${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}/developer-reference/html/index.html\", \"@StartMenuDir@/CMake Developer Reference.lnk\");\n")
-      endif()
-    endif()
-    configure_file("${CMake_SOURCE_DIR}/Source/QtIFW/installscript.qs.in"
-      "${CMake_BINARY_DIR}/installscript.qs" @ONLY
-    )
-    install(FILES "${CMake_SOURCE_DIR}/Source/QtIFW/cmake.org.html"
-      DESTINATION "${CMAKE_DOC_DIR}"
-    )
-    if(CMake_INSTALL_COMPONENTS)
-      set(_CPACK_IFW_PACKAGE_SCRIPT "${CMake_BINARY_DIR}/CMake.qs")
-    else()
-      set(_CPACK_IFW_PACKAGE_SCRIPT "${CMake_BINARY_DIR}/installscript.qs")
+# Components scripts configuration
+foreach(_script
+  CMake
+  CMake.Documentation.SphinxHTML
+  CMake.DeveloperReference.HTML)
+  configure_file("${CMake_SOURCE_DIR}/Source/QtIFW/${_script}.qs.in"
+    "${CMake_BINARY_DIR}/${_script}.qs" @ONLY)
+endforeach()
+
+if(${CMAKE_SYSTEM_NAME} MATCHES Windows)
+  set(_CPACK_IFW_PACKAGE_ICON
+      "set(CPACK_IFW_PACKAGE_ICON \"${CMake_SOURCE_DIR}/Source/QtDialog/CMakeSetup.ico\")")
+  if(BUILD_QtDialog)
+    set(_CPACK_IFW_SHORTCUT_OPTIONAL "${_CPACK_IFW_SHORTCUT_OPTIONAL}component.addOperation(\"CreateShortcut\", \"@TargetDir@/bin/cmake-gui.exe\", \"@StartMenuDir@/CMake (cmake-gui).lnk\");\n")
+  endif()
+  if(SPHINX_HTML)
+    set(_CPACK_IFW_SHORTCUT_OPTIONAL "${_CPACK_IFW_SHORTCUT_OPTIONAL}component.addOperation(\"CreateShortcut\", \"@TargetDir@/doc/cmake-${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}/html/index.html\", \"@StartMenuDir@/CMake Documentation.lnk\");\n")
+  endif()
+  if(CMake_BUILD_DEVELOPER_REFERENCE)
+    if(CMake_BUILD_DEVELOPER_REFERENCE_HTML)
+    set(_CPACK_IFW_SHORTCUT_OPTIONAL "${_CPACK_IFW_SHORTCUT_OPTIONAL}component.addOperation(\"CreateShortcut\", \"@TargetDir@/doc/cmake-${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}/developer-reference/html/index.html\", \"@StartMenuDir@/CMake Developer Reference.lnk\");\n")
     endif()
   endif()
-
-  if(${CMAKE_SYSTEM_NAME} MATCHES Linux)
-    set(CPACK_IFW_TARGET_DIRECTORY "@HomeDir@/${CMAKE_PROJECT_NAME}")
-    set(CPACK_IFW_ADMIN_TARGET_DIRECTORY "@ApplicationsDir@/${CMAKE_PROJECT_NAME}")
+  configure_file("${CMake_SOURCE_DIR}/Source/QtIFW/installscript.qs.in"
+    "${CMake_BINARY_DIR}/installscript.qs" @ONLY
+  )
+  install(FILES "${CMake_SOURCE_DIR}/Source/QtIFW/cmake.org.html"
+    DESTINATION "${CMAKE_DOC_DIR}"
+  )
+  if(CMake_INSTALL_COMPONENTS)
+    set(_CPACK_IFW_PACKAGE_SCRIPT "${CMake_BINARY_DIR}/CMake.qs")
+  else()
+    set(_CPACK_IFW_PACKAGE_SCRIPT "${CMake_BINARY_DIR}/installscript.qs")
   endif()
+endif()
 
-  set(_CPACK_IFW_PACKAGE_VERSION ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}.${CMake_VERSION_PATCH})
+if(${CMAKE_SYSTEM_NAME} MATCHES Linux)
+  set(CPACK_IFW_TARGET_DIRECTORY "@HomeDir@/${CMAKE_PROJECT_NAME}")
+  set(CPACK_IFW_ADMIN_TARGET_DIRECTORY "@ApplicationsDir@/${CMAKE_PROJECT_NAME}")
+endif()
 
-  if(NOT DEFINED CPACK_PACKAGE_FILE_NAME)
-    # if the CPACK_PACKAGE_FILE_NAME is not defined by the cache
-    # default to source package - system, on cygwin system is not
-    # needed
-    if(CYGWIN)
-      set(CPACK_PACKAGE_FILE_NAME "${CPACK_SOURCE_PACKAGE_FILE_NAME}")
-    else()
-      set(CPACK_PACKAGE_FILE_NAME
-        "${CPACK_SOURCE_PACKAGE_FILE_NAME}-${CPACK_SYSTEM_NAME}")
-    endif()
+set(_CPACK_IFW_PACKAGE_VERSION ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}.${CMake_VERSION_PATCH})
+
+if(NOT DEFINED CPACK_PACKAGE_FILE_NAME)
+  # if the CPACK_PACKAGE_FILE_NAME is not defined by the cache
+  # default to source package - system, on cygwin system is not
+  # needed
+  if(CYGWIN)
+    set(CPACK_PACKAGE_FILE_NAME "${CPACK_SOURCE_PACKAGE_FILE_NAME}")
+  else()
+    set(CPACK_PACKAGE_FILE_NAME
+      "${CPACK_SOURCE_PACKAGE_FILE_NAME}-${CPACK_SYSTEM_NAME}")
   endif()
+endif()
 
-  set(CPACK_PACKAGE_CONTACT "[email protected]")
+set(CPACK_PACKAGE_CONTACT "[email protected]")
 
-  if(UNIX)
-    set(CPACK_STRIP_FILES "${CMAKE_BIN_DIR}/ccmake;${CMAKE_BIN_DIR}/cmake;${CMAKE_BIN_DIR}/cpack;${CMAKE_BIN_DIR}/ctest")
-    set(CPACK_SOURCE_STRIP_FILES "")
-    set(CPACK_PACKAGE_EXECUTABLES "ccmake" "CMake")
-  endif()
+if(UNIX)
+  set(CPACK_STRIP_FILES "${CMAKE_BIN_DIR}/ccmake;${CMAKE_BIN_DIR}/cmake;${CMAKE_BIN_DIR}/cpack;${CMAKE_BIN_DIR}/ctest")
+  set(CPACK_SOURCE_STRIP_FILES "")
+  set(CPACK_PACKAGE_EXECUTABLES "ccmake" "CMake")
+endif()
 
-  set(CPACK_WIX_UPGRADE_GUID "8ffd1d72-b7f1-11e2-8ee5-00238bca4991")
+set(CPACK_WIX_UPGRADE_GUID "8ffd1d72-b7f1-11e2-8ee5-00238bca4991")
 
-  if(MSVC AND NOT "$ENV{WIX}" STREQUAL "")
-    set(WIX_CUSTOM_ACTION_ENABLED TRUE)
-    if(CMAKE_CONFIGURATION_TYPES)
-      set(WIX_CUSTOM_ACTION_MULTI_CONFIG TRUE)
-    else()
-      set(WIX_CUSTOM_ACTION_MULTI_CONFIG FALSE)
-    endif()
+if(MSVC AND NOT "$ENV{WIX}" STREQUAL "")
+  set(WIX_CUSTOM_ACTION_ENABLED TRUE)
+  if(CMAKE_CONFIGURATION_TYPES)
+    set(WIX_CUSTOM_ACTION_MULTI_CONFIG TRUE)
   else()
-    set(WIX_CUSTOM_ACTION_ENABLED FALSE)
+    set(WIX_CUSTOM_ACTION_MULTI_CONFIG FALSE)
   endif()
+else()
+  set(WIX_CUSTOM_ACTION_ENABLED FALSE)
+endif()
 
-  # Set the options file that needs to be included inside CMakeCPackOptions.cmake
-  set(QT_DIALOG_CPACK_OPTIONS_FILE ${CMake_BINARY_DIR}/Source/QtDialog/QtDialogCPack.cmake)
-  configure_file("${CMake_SOURCE_DIR}/CMakeCPackOptions.cmake.in"
-    "${CMake_BINARY_DIR}/CMakeCPackOptions.cmake" @ONLY)
-  set(CPACK_PROJECT_CONFIG_FILE "${CMake_BINARY_DIR}/CMakeCPackOptions.cmake")
+# Set the options file that needs to be included inside CMakeCPackOptions.cmake
+set(QT_DIALOG_CPACK_OPTIONS_FILE ${CMake_BINARY_DIR}/Source/QtDialog/QtDialogCPack.cmake)
+configure_file("${CMake_SOURCE_DIR}/CMakeCPackOptions.cmake.in"
+  "${CMake_BINARY_DIR}/CMakeCPackOptions.cmake" @ONLY)
+set(CPACK_PROJECT_CONFIG_FILE "${CMake_BINARY_DIR}/CMakeCPackOptions.cmake")
 
-  # include CPack model once all variables are set
-  include(CPack)
-endif()
+# include CPack model once all variables are set
+include(CPack)

+ 46 - 37
CMakeLists.txt

@@ -366,31 +366,55 @@ macro (CMAKE_BUILD_UTILITIES)
   set(CMAKE_COMPRESS_LIBRARIES "cmcompress")
   add_subdirectory(Utilities/cmcompress)
   CMAKE_SET_TARGET_FOLDER(cmcompress "Utilities/3rdParty")
-  if(CMAKE_USE_SYSTEM_BZIP2)
-    find_package(BZip2)
+
+  #---------------------------------------------------------------------
+  # Build expat library for CMake, CTest, and libarchive.
+  if(CMAKE_USE_SYSTEM_EXPAT)
+    find_package(EXPAT)
+    if(NOT EXPAT_FOUND)
+      message(FATAL_ERROR
+        "CMAKE_USE_SYSTEM_EXPAT is ON but a expat is not found!")
+    endif()
+    set(CMAKE_EXPAT_INCLUDES ${EXPAT_INCLUDE_DIRS})
+    set(CMAKE_EXPAT_LIBRARIES ${EXPAT_LIBRARIES})
   else()
-    set(BZIP2_INCLUDE_DIR
-      "${CMAKE_CURRENT_SOURCE_DIR}/Utilities/cmbzip2")
-    set(BZIP2_LIBRARIES cmbzip2)
-    add_subdirectory(Utilities/cmbzip2)
-    CMAKE_SET_TARGET_FOLDER(cmbzip2 "Utilities/3rdParty")
+    set(CMAKE_EXPAT_INCLUDES)
+    set(CMAKE_EXPAT_LIBRARIES cmexpat)
+    add_subdirectory(Utilities/cmexpat)
+    CMAKE_SET_TARGET_FOLDER(cmexpat "Utilities/3rdParty")
+  endif()
+
+  #---------------------------------------------------------------------
+  # Build or use system libbz2 for libarchive.
+  if(NOT CMAKE_USE_SYSTEM_LIBARCHIVE)
+    if(CMAKE_USE_SYSTEM_BZIP2)
+      find_package(BZip2)
+    else()
+      set(BZIP2_INCLUDE_DIR
+        "${CMAKE_CURRENT_SOURCE_DIR}/Utilities/cmbzip2")
+      set(BZIP2_LIBRARIES cmbzip2)
+      add_subdirectory(Utilities/cmbzip2)
+      CMAKE_SET_TARGET_FOLDER(cmbzip2 "Utilities/3rdParty")
+    endif()
   endif()
 
   #---------------------------------------------------------------------
   # Build or use system liblzma for libarchive.
-  if(CMAKE_USE_SYSTEM_LIBLZMA)
-    find_package(LibLZMA)
-    if(NOT LIBLZMA_FOUND)
-      message(FATAL_ERROR "CMAKE_USE_SYSTEM_LIBLZMA is ON but LibLZMA is not found!")
+  if(NOT CMAKE_USE_SYSTEM_LIBARCHIVE)
+    if(CMAKE_USE_SYSTEM_LIBLZMA)
+      find_package(LibLZMA)
+      if(NOT LIBLZMA_FOUND)
+        message(FATAL_ERROR "CMAKE_USE_SYSTEM_LIBLZMA is ON but LibLZMA is not found!")
+      endif()
+      set(LZMA_INCLUDE_DIR ${LIBLZMA_INCLUDE_DIRS})
+      set(LZMA_LIBRARY ${LIBLZMA_LIBRARIES})
+    else()
+      add_subdirectory(Utilities/cmliblzma)
+      CMAKE_SET_TARGET_FOLDER(cmliblzma "Utilities/3rdParty")
+      set(LZMA_INCLUDE_DIR
+        "${CMAKE_CURRENT_SOURCE_DIR}/Utilities/cmliblzma/liblzma/api")
+      set(LZMA_LIBRARY cmliblzma)
     endif()
-    set(LZMA_INCLUDE_DIR ${LIBLZMA_INCLUDE_DIRS})
-    set(LZMA_LIBRARY ${LIBLZMA_LIBRARIES})
-  else()
-    add_subdirectory(Utilities/cmliblzma)
-    CMAKE_SET_TARGET_FOLDER(cmliblzma "Utilities/3rdParty")
-    set(LZMA_INCLUDE_DIR
-      "${CMAKE_CURRENT_SOURCE_DIR}/Utilities/cmliblzma/liblzma/api")
-    set(LZMA_LIBRARY cmliblzma)
   endif()
 
   #---------------------------------------------------------------------
@@ -403,6 +427,8 @@ macro (CMAKE_BUILD_UTILITIES)
     set(CMAKE_TAR_INCLUDES ${LibArchive_INCLUDE_DIRS})
     set(CMAKE_TAR_LIBRARIES ${LibArchive_LIBRARIES})
   else()
+    set(EXPAT_INCLUDE_DIR ${CMAKE_EXPAT_INCLUDES})
+    set(EXPAT_LIBRARY ${CMAKE_EXPAT_LIBRARIES})
     set(ZLIB_INCLUDE_DIR ${CMAKE_ZLIB_INCLUDES})
     set(ZLIB_LIBRARY ${CMAKE_ZLIB_LIBRARIES})
     add_definitions(-DLIBARCHIVE_STATIC)
@@ -412,7 +438,7 @@ macro (CMAKE_BUILD_UTILITIES)
     set(ENABLE_ZLIB ON CACHE INTERNAL "Enable the use of the system found ZLIB library if found")
     set(ENABLE_BZip2 ON CACHE INTERNAL "Enable the use of the system found BZip2 library if found")
     set(ENABLE_LIBXML2 OFF CACHE INTERNAL "Enable the use of the system found libxml2 library if found")
-    set(ENABLE_EXPAT OFF CACHE INTERNAL "Enable the use of the system found EXPAT library if found")
+    set(ENABLE_EXPAT ON CACHE INTERNAL "Enable the use of the system found EXPAT library if found")
     set(ENABLE_PCREPOSIX OFF CACHE INTERNAL "Enable the use of the system found PCREPOSIX library if found")
     set(ENABLE_LibGCC OFF CACHE INTERNAL "Enable the use of the system found LibGCC library if found")
     set(ENABLE_XATTR OFF CACHE INTERNAL "Enable extended attribute support")
@@ -424,23 +450,6 @@ macro (CMAKE_BUILD_UTILITIES)
     set(CMAKE_TAR_LIBRARIES cmlibarchive ${BZIP2_LIBRARIES})
   endif()
 
-  #---------------------------------------------------------------------
-  # Build expat library for CMake and CTest.
-  if(CMAKE_USE_SYSTEM_EXPAT)
-    find_package(EXPAT)
-    if(NOT EXPAT_FOUND)
-      message(FATAL_ERROR
-        "CMAKE_USE_SYSTEM_EXPAT is ON but a expat is not found!")
-    endif()
-    set(CMAKE_EXPAT_INCLUDES ${EXPAT_INCLUDE_DIRS})
-    set(CMAKE_EXPAT_LIBRARIES ${EXPAT_LIBRARIES})
-  else()
-    set(CMAKE_EXPAT_INCLUDES)
-    set(CMAKE_EXPAT_LIBRARIES cmexpat)
-    add_subdirectory(Utilities/cmexpat)
-    CMAKE_SET_TARGET_FOLDER(cmexpat "Utilities/3rdParty")
-  endif()
-
   #---------------------------------------------------------------------
   # Build jsoncpp library.
   if(CMAKE_USE_SYSTEM_JSONCPP)