250f57a265aec81b2e644e00400803fcbf89e732
[profile/ivi/qtbase.git] / mkspecs / features / moc.prf
1
2 #global defaults
3 qtPrepareTool(QMAKE_MOC, moc)
4 isEmpty(MOC_DIR):MOC_DIR = .
5 isEmpty(QMAKE_H_MOD_MOC):QMAKE_H_MOD_MOC = moc_
6 isEmpty(QMAKE_EXT_CPP_MOC):QMAKE_EXT_CPP_MOC = .moc
7
8 # On Windows, put the includes into a .inc file which moc will read, if the project
9 # has too many includes. We do this to overcome a command-line limit on Win < XP
10 INCLUDETEMP=
11 WIN_INCLUDETEMP=
12 win32:count($$list($$INCLUDEPATH), 40, >) {
13     INCLUDETEMP = $$MOC_DIR/mocinclude.tmp
14
15     WIN_INCLUDETEMP=$$INCLUDETEMP
16
17     EOC = $$escape_expand(\\n\\t)
18
19     contains(TEMPLATE, "vc.*") {
20         # the VCPROJ generator will replace the \r\h with the coded \r\n: &#x0d;&#x0a;
21         EOC = $$escape_expand(\\r\\h)
22     }
23
24     unset(INCFILELIST)
25     RET =
26     for(incfile, $$list($$INCLUDEPATH)) {
27         INCFILELIST = -I$$incfile
28         isEmpty(RET): RET += @echo $$INCFILELIST> $$WIN_INCLUDETEMP $$EOC
29         else:         RET += @echo $$INCFILELIST>> $$WIN_INCLUDETEMP $$EOC
30     }
31     !isEmpty(INCFILELIST):RET += @echo $$INCFILELIST>> $$WIN_INCLUDETEMP $$EOC
32
33     build_pass|isEmpty(BUILDS) {
34         mocinclude.target = $$INCLUDETEMP
35         mocinclude.commands = $$RET
36         QMAKE_EXTRA_TARGETS += mocinclude
37     }
38 }
39
40 defineReplace(mocCmdBase) {
41     !isEmpty(WIN_INCLUDETEMP) {
42         RET =
43         contains(TEMPLATE, "vc.*") {
44             RET += $$mocinclude.commands
45         }
46         RET += $$QMAKE_MOC $(DEFINES) @$$WIN_INCLUDETEMP $$join(QMAKE_COMPILER_DEFINES, " -D", -D) $$QMAKE_MOC_OPTIONS
47         return($$RET)
48     }
49     return($$QMAKE_MOC $(DEFINES) $(INCPATH) $$join(QMAKE_COMPILER_DEFINES, " -D", -D) $$QMAKE_MOC_OPTIONS)
50 }
51
52 #moc headers
53 moc_header.CONFIG = moc_verify
54 moc_header.dependency_type = TYPE_C
55 moc_header.commands = ${QMAKE_FUNC_mocCmdBase} ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
56 moc_header.output = $$MOC_DIR/$${QMAKE_H_MOD_MOC}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)}
57 moc_header.input = HEADERS
58 moc_header.variable_out = SOURCES
59 moc_header.name = MOC ${QMAKE_FILE_IN}
60 !contains(TEMPLATE, "vc.*") {
61         !isEmpty(INCLUDETEMP):moc_header.depends += $$INCLUDETEMP
62 }
63 silent:moc_header.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_header.commands
64 QMAKE_EXTRA_COMPILERS += moc_header
65 INCREDIBUILD_XGE += moc_header
66
67 #moc sources
68 moc_source.CONFIG = no_link moc_verify
69 moc_source.dependency_type = TYPE_C
70 moc_source.commands = ${QMAKE_FUNC_mocCmdBase} ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
71 moc_source.output = $$MOC_DIR/$${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_EXT_CPP_MOC}
72 moc_source.input = SOURCES OBJECTIVE_SOURCES
73 moc_source.name = MOC ${QMAKE_FILE_IN}
74 !contains(TEMPLATE, "vc.*") {
75         !isEmpty(INCLUDETEMP):moc_source.depends += $$INCLUDETEMP
76 }
77 silent:moc_source.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_source.commands
78 QMAKE_EXTRA_COMPILERS += moc_source
79 INCREDIBUILD_XGE += moc_source
80
81 #make sure we can include these files
82 moc_dir_short = $$MOC_DIR
83 contains(QMAKE_HOST.os,Windows):moc_dir_short ~= s,^.:,/,
84 contains(moc_dir_short, ^[/\\\\].*):INCLUDEPATH += $$MOC_DIR
85 else:INCLUDEPATH += $$OUT_PWD/$$MOC_DIR
86
87 #auto depend on moc
88 unix:!no_mocdepend {
89      moc_source.depends += $$first(QMAKE_MOC)
90      moc_header.depends += $$first(QMAKE_MOC)
91 }
92
93 #generate a mocclean
94 build_pass|isEmpty(BUILDS):mocclean.depends = compiler_moc_header_clean compiler_moc_source_clean
95 else:mocclean.CONFIG += recursive
96 QMAKE_EXTRA_TARGETS += mocclean
97
98 #generate a mocables
99 build_pass|isEmpty(BUILDS):mocables.depends = compiler_moc_header_make_all compiler_moc_source_make_all
100 else:mocables.CONFIG += recursive
101 QMAKE_EXTRA_TARGETS += mocables