source: trunk/mkspecs/features/moc.prf@ 1036

Last change on this file since 1036 was 846, checked in by Dmitry A. Kuminov, 15 years ago

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

File size: 4.7 KB
Line 
1
2#global defaults
3qtPrepareTool(QMAKE_MOC, moc)
4isEmpty(MOC_DIR):MOC_DIR = .
5isEmpty(QMAKE_H_MOD_MOC):QMAKE_H_MOD_MOC = moc_
6isEmpty(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
10INCLUDETEMP=
11WIN_INCLUDETEMP=
12win32:count($$list($$INCLUDEPATH), 40, >) {
13 INCLUDETEMP = $$MOC_DIR/mocinclude.tmp
14
15 WIN_INCLUDETEMP=$$INCLUDETEMP
16
17 EOC = $$escape_expand(\\n\\t)
18
19 if(contains(TEMPLATE, "vc.*")|contains(TEMPLATE_PREFIX, "vc")) {
20 # the VCPROJ generator will replace the \r\h with the coded \r\n: &#x0d;&#x0a;
21 # No other generator understands the \h
22 if(win32-msvc2*|wince*msvc*): EOC = $$escape_expand(\\r\\h)
23 else: EOC = $$escape_expand(\\\\\\n\\t)
24 }
25
26 unset(INCFILELIST)
27 RET =
28 for(incfile, $$list($$INCLUDEPATH)) {
29 INCFILELIST = -I$$incfile
30 isEmpty(RET): RET += @echo $$INCFILELIST> $$WIN_INCLUDETEMP $$EOC
31 else: RET += @echo $$INCFILELIST>> $$WIN_INCLUDETEMP $$EOC
32 }
33 !isEmpty(INCFILELIST):RET += @echo $$INCFILELIST>> $$WIN_INCLUDETEMP $$EOC
34
35 build_pass|isEmpty(BUILDS) {
36 mocinclude.target = $$INCLUDETEMP
37 mocinclude.commands = $$RET
38 QMAKE_EXTRA_TARGETS += mocinclude
39 }
40}
41
42defineReplace(mocCmdBase) {
43 !isEmpty(WIN_INCLUDETEMP) {
44 RET =
45 if(contains(TEMPLATE, "vc.*")|contains(TEMPLATE_PREFIX, "vc")) {
46 RET += $$mocinclude.commands
47 }
48 RET += $$QMAKE_MOC $(DEFINES) @$$WIN_INCLUDETEMP $$join(QMAKE_COMPILER_DEFINES, " -D", -D)
49 return($$RET)
50 }
51 # On OS/2, command line length restrictions similar to Windows apply, but we use
52 # response files defined in mkspecs/os2-*/qmake.conf (also used by the compiler
53 # and other tools)
54 os2 {
55 isEmpty(QMAKE_INCPATH_RSP_VAR):I = $(INCPATH)
56 else:I = @$($$QMAKE_INCPATH_RSP_VAR)
57 isEmpty(QMAKE_DEFINES_RSP_VAR):D = $(INCPATH)
58 else:D = @$($$QMAKE_DEFINES_RSP_VAR)
59
60 return($$QMAKE_MOC $$D $$I $$join(QMAKE_COMPILER_DEFINES, " -D", -D))
61 }
62 return($$QMAKE_MOC $(DEFINES) $(INCPATH) $$join(QMAKE_COMPILER_DEFINES, " -D", -D))
63}
64
65#moc headers
66moc_header.CONFIG = moc_verify
67moc_header.dependency_type = TYPE_C
68moc_header.commands = ${QMAKE_FUNC_mocCmdBase} ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
69moc_header.output = $$MOC_DIR/$${QMAKE_H_MOD_MOC}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)}
70moc_header.input = HEADERS
71moc_header.variable_out = SOURCES
72moc_header.name = MOC ${QMAKE_FILE_IN}
73if(!contains(TEMPLATE, "vc.*"):!contains(TEMPLATE_PREFIX, "vc")) {
74 !isEmpty(INCLUDETEMP):moc_header.depends += $$INCLUDETEMP
75}
76silent:moc_header.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_header.commands
77QMAKE_EXTRA_COMPILERS += moc_header
78INCREDIBUILD_XGE += moc_header
79
80#moc sources
81moc_source.CONFIG = no_link moc_verify
82moc_source.dependency_type = TYPE_C
83moc_source.commands = ${QMAKE_FUNC_mocCmdBase} ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
84moc_source.output = $$MOC_DIR/$${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_EXT_CPP_MOC}
85moc_source.input = SOURCES OBJECTIVE_SOURCES
86moc_source.name = MOC ${QMAKE_FILE_IN}
87if(!contains(TEMPLATE, "vc.*"):!contains(TEMPLATE_PREFIX, "vc")) {
88 !isEmpty(INCLUDETEMP):moc_source.depends += $$INCLUDETEMP
89}
90silent:moc_source.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_source.commands
91QMAKE_EXTRA_COMPILERS += moc_source
92INCREDIBUILD_XGE += moc_source
93
94#make sure we can include these files
95moc_dir_short = $$MOC_DIR
96contains(QMAKE_HOST.os,Windows)|os2:moc_dir_short ~= s,^.:,/,
97contains(moc_dir_short, ^[/\\\\].*):INCLUDEPATH += $$MOC_DIR
98else:INCLUDEPATH += $$OUT_PWD/$$MOC_DIR
99
100# Backwards compatibility: Make shadow builds with default MOC_DIR work
101# if the user did not add the source dir explicitly.
102equals(MOC_DIR, .) {
103 CONFIG -= include_source_dir
104 CONFIG = include_source_dir $$CONFIG
105}
106
107#auto depend on moc
108unix:!symbian:!no_mocdepend {
109 moc_source.depends += $$first(QMAKE_MOC)
110 moc_header.depends += $$first(QMAKE_MOC)
111 !contains(TARGET, moc) { #auto build moc
112 isEmpty(QMAKE_MOC_SRC):QMAKE_MOC_SRC = "$(QTDIR)/src/tools/moc"
113 make_moc.target = $$first(QMAKE_MOC)
114 make_moc.commands = (cd $$QMAKE_MOC_SRC && $(MAKE))
115 QMAKE_EXTRA_TARGETS += make_moc
116 }
117}
118
119#generate a mocclean
120build_pass|isEmpty(BUILDS):mocclean.depends = compiler_moc_header_clean compiler_moc_source_clean
121else:mocclean.CONFIG += recursive
122QMAKE_EXTRA_TARGETS += mocclean
123
124#generate a mocables
125build_pass|isEmpty(BUILDS):mocables.depends = compiler_moc_header_make_all compiler_moc_source_make_all
126else:mocables.CONFIG += recursive
127QMAKE_EXTRA_TARGETS += mocables
Note: See TracBrowser for help on using the repository browser.