summaryrefslogtreecommitdiffstats
path: root/modules/FindTQt.cmake
blob: 1aeffb772d7551725eb0d53342a314642a9a269a (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
#################################################
#
#  (C) 2010-2011 Serghei Amelian
#  serghei (DOT) amelian (AT) gmail.com
#
#  Improvements and feedback are welcome
#
#  This file is released under GPL >= 2
#
#################################################

macro( tqt_message )
  message( STATUS "${ARGN}" )
endmacro( )

if( NOT TQT_FOUND )
  pkg_search_module( TQT tqt )

  if( NOT TQT_FOUND )
    tde_message_fatal( "Unable to find tqt!\n Try adding the directory in which the tqt.pc file is located\nto the PKG_CONFIG_PATH variable." )
  endif( )

  mark_as_advanced(
    TMOC_EXECUTABLE
    MOC_EXECUTABLE
    UIC_EXECUTABLE
  )

  # tmoc_executable
  tde_execute_process(
    COMMAND pkg-config tqt --variable=tmoc_executable
    OUTPUT_VARIABLE TMOC_EXECUTABLE
    CACHE FILEPATH "TQt tmoc executable path"
    OUTPUT_STRIP_TRAILING_WHITESPACE )

  if( NOT EXISTS ${TMOC_EXECUTABLE} )
    tde_message_fatal( "tmoc is not found!\n tqt is correctly installed?" )
  endif( )

  tqt_message( "  tmoc path: ${TMOC_EXECUTABLE}" )


  # moc_executable
  tde_execute_process(
    COMMAND pkg-config tqt --variable=moc_executable
    OUTPUT_VARIABLE MOC_EXECUTABLE
    CACHE FILEPATH "TQt moc executable path"
    OUTPUT_STRIP_TRAILING_WHITESPACE )

  if( NOT EXISTS ${MOC_EXECUTABLE} )
    tde_message_fatal( "Path to moc is not set.\n tqt is correctly installed?" )
  endif( )

  tqt_message( "  moc path: ${MOC_EXECUTABLE}" )


  # uic_executable
  tde_execute_process(
    COMMAND pkg-config tqt --variable=uic_executable
    OUTPUT_VARIABLE UIC_EXECUTABLE
    CACHE FILEPATH "TQt uic executable path"
    OUTPUT_STRIP_TRAILING_WHITESPACE )

  if( NOT EXISTS ${UIC_EXECUTABLE} )
    tde_message_fatal( "uic not found!\n tqt is correctly installed?" )
  endif( )

  tqt_message( "  uic path: ${UIC_EXECUTABLE}" )


  # tqt-replace script
  set( TQT_REPLACE_SCRIPT "${TQT_PREFIX}/bin/tqt-replace"
       CACHE FILEPATH "TQt replace script path" )

  if( NOT EXISTS ${TQT_REPLACE_SCRIPT} )
    tde_message_fatal( "tqt-replace not found!\n Check tqt installation." )
  endif( )

  tqt_message( "  tqt-replace path: ${TQT_REPLACE_SCRIPT}" )


  # check if tqt is usable
  tde_save( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )
  set( CMAKE_REQUIRED_INCLUDES ${TQT_INCLUDE_DIRS} )
  foreach( _dirs ${TQT_LIBRARY_DIRS} )
    list( APPEND CMAKE_REQUIRED_LIBRARIES "-L${_dirs}" )
  endforeach()
  list( APPEND CMAKE_REQUIRED_LIBRARIES ${TQT_LIBRARIES} )

  check_cxx_source_compiles("
    #include <tqapplication.h>
    int main(int argc, char **argv) { TQApplication app(argc, argv); return 0; } "
    HAVE_USABLE_TQT )

  if( NOT HAVE_USABLE_TQT )
    tde_message_fatal( "Unable to build a simple tqt test." )
  endif( )

  tde_restore( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )


  # TQT_CMAKE_DIR
  if( NOT DEFINED TQT_CMAKE_DIR )
    set( TQT_CMAKE_DIR "${TQT_LIBDIR}/cmake"
         CACHE FILEPATH "Path for shared TQt CMake targets" )
  endif()


  # TQT_CXX_FLAGS
  foreach( _flag ${TQT_CFLAGS} ${TQT_CFLAGS_OTHER} )
    set( TQT_CXX_FLAGS "${TQT_CXX_FLAGS} ${_flag}" )
  endforeach()
  set( TQT_CXX_FLAGS "${TQT_CXX_FLAGS}" CACHE INTERNAL "" )

endif( NOT TQT_FOUND )

# Set compiler flags according to build type
set( CMAKE_CXX_FLAGS_RELWITHDEBINFO "-DNDEBUG" )
set( CMAKE_C_FLAGS_RELWITHDEBINFO   "-DNDEBUG" )

# Set the required minimum C++ standard
set( TDE_CXX_FEATURES cxx_nullptr )