summaryrefslogtreecommitdiffstats
path: root/Source/QtDialog/CMakeLists.txt
blob: d962d8d41d7b16a595ba27fcbe46853658f2f58c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#=============================================================================
# CMake - Cross Platform Makefile Generator
# Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
project(QtDialog)
set(QT_MIN_VERSION "4.4.0")
find_package(Qt4 REQUIRED)

if(NOT QT4_FOUND)
  message(SEND_ERROR "Failed to find Qt 4.4 or greater.")
else(NOT QT4_FOUND)

  include(${QT_USE_FILE})
  set(CMAKE_PACKAGE_QTGUI TRUE)
  set(SRCS
    AddCacheEntry.cxx
    AddCacheEntry.h
    CMakeSetup.cxx
    CMakeSetupDialog.cxx
    CMakeSetupDialog.h
    FirstConfigure.cxx
    FirstConfigure.h
    QCMake.cxx
    QCMake.h
    QCMakeCacheView.cxx
    QCMakeCacheView.h
    QCMakeWidgets.cxx
    QCMakeWidgets.h
    QMacInstallDialog.cxx
    QMacInstallDialog.h
    )
  QT4_WRAP_UI(UI_SRCS
    CMakeSetupDialog.ui
    Compilers.ui
    CrossCompiler.ui
    AddCacheEntry.ui
    MacInstallDialog.ui
    )
  QT4_WRAP_CPP(MOC_SRCS
    AddCacheEntry.h
    Compilers.h
    CMakeSetupDialog.h
    FirstConfigure.h
    QCMake.h
    QCMakeCacheView.h
    QCMakeWidgets.h
    QMacInstallDialog.h
    )
  QT4_ADD_RESOURCES(RC_SRCS CMakeSetup.qrc)

  set(SRCS ${SRCS} ${UI_SRCS} ${MOC_SRCS} ${RC_SRCS})
  if(Q_WS_WIN)
    set(SRCS ${SRCS} CMakeSetup.rc)
  endif(Q_WS_WIN)
  if(Q_WS_MAC)
    set(SRCS ${SRCS} CMakeSetup.icns)
    set(MACOSX_BUNDLE_ICON_FILE CMakeSetup.icns)
    set_source_files_properties(CMakeSetup.icns PROPERTIES
      MACOSX_PACKAGE_LOCATION Resources)
  endif(Q_WS_MAC)

  include_directories(${CMAKE_CURRENT_BINARY_DIR})
  include_directories(${CMAKE_CURRENT_SOURCE_DIR})

  add_executable(cmake-gui WIN32 MACOSX_BUNDLE ${SRCS})
  target_link_libraries(cmake-gui CMakeLib ${QT_QTMAIN_LIBRARY} ${QT_LIBRARIES})
  if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.4)
    if(APPLE)
      set_target_properties(cmake-gui PROPERTIES
       OUTPUT_NAME ${CMAKE_BUNDLE_NAME})
    endif(APPLE)
    set(CMAKE_INSTALL_DESTINATION_ARGS
      BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}")
  endif(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.4)

  install(TARGETS cmake-gui RUNTIME DESTINATION bin ${CMAKE_INSTALL_DESTINATION_ARGS})

  if(UNIX)
    # install a desktop file so CMake appears in the application start menu
    # with an icon
    install(FILES CMake.desktop DESTINATION share/applications )
    install(FILES CMakeSetup32.png DESTINATION share/pixmaps )
    install(FILES cmakecache.xml DESTINATION share/mime/packages )
  endif(UNIX)

  if(APPLE)
    set(CMAKE_POSTFLIGHT_SCRIPT
      "${CMake_BINARY_DIR}/Source/QtDialog/postflight.sh")
    set(CMAKE_POSTUPGRADE_SCRIPT
      "${CMake_BINARY_DIR}/Source/QtDialog/postupgrade.sh")
    configure_file("${CMake_SOURCE_DIR}/Source/QtDialog/postflight.sh.in"
      "${CMake_BINARY_DIR}/Source/QtDialog/postflight.sh")
    configure_file("${CMake_SOURCE_DIR}/Source/QtDialog/postupgrade.sh.in"
      "${CMake_BINARY_DIR}/Source/QtDialog/postupgrade.sh")
    install(CODE "execute_process(COMMAND ln -s \"../MacOS/${CMAKE_BUNDLE_NAME}\" cmake-gui
                  WORKING_DIRECTORY \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/bin)")
  endif(APPLE)

  if(APPLE OR WIN32)
    # install rules for including 3rd party libs such as Qt
    # if a system Qt is used (e.g. installed in /usr/lib/), it will not be included in the installation
    set(fixup_exe "\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/bin/cmake-gui${CMAKE_EXECUTABLE_SUFFIX}")
    if(APPLE)
      set(fixup_exe "\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/MacOS/${CMAKE_BUNDLE_NAME}")
    endif(APPLE)
    install(CODE "
      include(\"${CMake_SOURCE_DIR}/Modules/BundleUtilities.cmake\")
      set(BU_CHMOD_BUNDLE_ITEMS ON)
      fixup_bundle(\"${fixup_exe}\" \"\" \"${QT_LIBRARY_DIR};${QT_BINARY_DIR}\")
    ")
  endif(APPLE OR WIN32)

  configure_file("${QtDialog_SOURCE_DIR}/QtDialogCPack.cmake.in"
    "${QtDialog_BINARY_DIR}/QtDialogCPack.cmake" @ONLY)
endif(NOT QT4_FOUND)