f0791ec6366eb6b233f04b85421ed3ba9232fcf6
[quassel.git] / cmake / QuasselMacros.cmake
1 # This macro sets variables for the Qt modules we need.
2
3 macro(setup_qt_variables)
4   set(QUASSEL_QT_LIBRARIES )
5   set(QUASSEL_QT_INCLUDES ${QT_INCLUDE_DIR})    # Qt4
6   set(QUASSEL_QT_DEFINITIONS ${QT_DEFINITIONS}) # Qt4
7
8   IF(WIN32)
9     set(MAIN Main)
10   ENDIF(WIN32)
11   foreach(qtmod Core ${ARGV} ${MAIN})
12     if(WITH_QT5)
13       find_package(Qt5${qtmod} ${QT_MIN_VERSION} REQUIRED)
14       list(APPEND QUASSEL_QT_LIBRARIES ${Qt5${qtmod}_LIBRARIES})
15       list(APPEND QUASSEL_QT_INCLUDES ${Qt5${qtmod}_INCLUDE_DIRS})
16       list(APPEND QUASSEL_QT_DEFINITIONS ${Qt5${qtmod}_DEFINITIONS} ${Qt5${qtmod}_EXECUTABLE_COMPILE_FLAGS})
17     else(WITH_QT5)
18       string(TOUPPER ${qtmod} QTMOD)
19       list(APPEND QUASSEL_QT_LIBRARIES ${QT_QT${QTMOD}_LIBRARY})
20       if(STATIC)
21         list(APPEND QUASSEL_QT_LIBRARIES ${QT_QT${QTMOD}_LIB_DEPENDENCIES})
22       endif(STATIC)
23       list(APPEND QUASSEL_QT_INCLUDES ${QT_QT${QTMOD}_INCLUDE_DIR})
24       list(APPEND QUASSEL_QT_DEFINITIONS -DQT_QT${QTMOD}_LIB)
25     endif(WITH_QT5)
26   endforeach(qtmod)
27
28   list(REMOVE_DUPLICATES QUASSEL_QT_LIBRARIES)
29   list(REMOVE_DUPLICATES QUASSEL_QT_INCLUDES)
30   list(REMOVE_DUPLICATES QUASSEL_QT_DEFINITIONS)
31
32   # The COMPILE_FLAGS property expects a string, not a list...
33   set(QUASSEL_QT_COMPILEFLAGS )
34   foreach(flag ${QUASSEL_QT_DEFINITIONS})
35     set(QUASSEL_QT_COMPILEFLAGS "${QUASSEL_QT_COMPILEFLAGS} ${flag}")
36   endforeach(flag)
37
38 endmacro(setup_qt_variables)
39
40 # This generates a .ts from a .po file
41 macro(generate_ts outvar basename)
42   set(input ${basename}.po)
43   set(output ${CMAKE_BINARY_DIR}/po/${basename}.ts)
44   add_custom_command(OUTPUT ${output}
45           COMMAND ${QT_LCONVERT_EXECUTABLE}
46           ARGS -i ${input}
47                -of ts
48                -o ${output}
49           WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/po
50 # This is a workaround to add (duplicate) strings that lconvert missed to the .ts
51           COMMAND ${QT_LUPDATE_EXECUTABLE}
52           ARGS -silent
53                ${CMAKE_SOURCE_DIR}/src/
54                -ts ${output}
55           DEPENDS ${basename}.po)
56   set(${outvar} ${output})
57 endmacro(generate_ts outvar basename)
58
59 # This generates a .qm from a .ts file
60 macro(generate_qm outvar basename)
61   set(input ${CMAKE_BINARY_DIR}/po/${basename}.ts)
62   set(output ${CMAKE_BINARY_DIR}/po/${basename}.qm)
63   add_custom_command(OUTPUT ${output}
64           COMMAND ${QT_LRELEASE_EXECUTABLE}
65           ARGS -silent
66                ${input}
67           DEPENDS ${basename}.ts)
68   set(${outvar} ${output})
69 endmacro(generate_qm outvar basename)