| |
| #global defaults |
| qtPrepareTool(QMAKE_MOC, moc) |
| isEmpty(MOC_DIR):MOC_DIR = . |
| isEmpty(QMAKE_H_MOD_MOC):QMAKE_H_MOD_MOC = moc_ |
| isEmpty(QMAKE_EXT_CPP_MOC):QMAKE_EXT_CPP_MOC = .moc |
| |
| # On Windows, put the includes into a .inc file which moc will read, if the project |
| # has too many includes. We do this to overcome a command-line limit on Win < XP |
| INCLUDETEMP= |
| WIN_INCLUDETEMP= |
| win32:count($$list($$INCLUDEPATH), 40, >) { |
| INCLUDETEMP = $$MOC_DIR/mocinclude.tmp |
| |
| WIN_INCLUDETEMP=$$INCLUDETEMP |
| |
| EOC = $$escape_expand(\\n\\t) |
| |
| contains(TEMPLATE, "vc.*") { |
| # the VCPROJ generator will replace the \r\h with the coded \r\n: 
 |
| # No other generator understands the \h |
| if(win32-msvc2*|wince*msvc*): EOC = $$escape_expand(\\r\\h) |
| else: EOC = $$escape_expand(\\\\\\n\\t) |
| } |
| |
| unset(INCFILELIST) |
| RET = |
| for(incfile, $$list($$INCLUDEPATH)) { |
| INCFILELIST = -I$$incfile |
| isEmpty(RET): RET += @echo $$INCFILELIST> $$WIN_INCLUDETEMP $$EOC |
| else: RET += @echo $$INCFILELIST>> $$WIN_INCLUDETEMP $$EOC |
| } |
| !isEmpty(INCFILELIST):RET += @echo $$INCFILELIST>> $$WIN_INCLUDETEMP $$EOC |
| |
| build_pass|isEmpty(BUILDS) { |
| mocinclude.target = $$INCLUDETEMP |
| mocinclude.commands = $$RET |
| QMAKE_EXTRA_TARGETS += mocinclude |
| } |
| } |
| |
| defineReplace(mocCmdBase) { |
| !isEmpty(WIN_INCLUDETEMP) { |
| RET = |
| contains(TEMPLATE, "vc.*") { |
| RET += $$mocinclude.commands |
| } |
| RET += $$QMAKE_MOC $(DEFINES) @$$WIN_INCLUDETEMP $$join(QMAKE_COMPILER_DEFINES, " -D", -D) |
| return($$RET) |
| } |
| return($$QMAKE_MOC $(DEFINES) $(INCPATH) $$join(QMAKE_COMPILER_DEFINES, " -D", -D)) |
| } |
| |
| #moc headers |
| moc_header.CONFIG = moc_verify |
| moc_header.dependency_type = TYPE_C |
| moc_header.commands = ${QMAKE_FUNC_mocCmdBase} ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} |
| moc_header.output = $$MOC_DIR/$${QMAKE_H_MOD_MOC}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)} |
| moc_header.input = HEADERS |
| moc_header.variable_out = SOURCES |
| moc_header.name = MOC ${QMAKE_FILE_IN} |
| !contains(TEMPLATE, "vc.*") { |
| !isEmpty(INCLUDETEMP):moc_header.depends += $$INCLUDETEMP |
| } |
| silent:moc_header.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_header.commands |
| QMAKE_EXTRA_COMPILERS += moc_header |
| INCREDIBUILD_XGE += moc_header |
| |
| #moc sources |
| moc_source.CONFIG = no_link moc_verify |
| moc_source.dependency_type = TYPE_C |
| moc_source.commands = ${QMAKE_FUNC_mocCmdBase} ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} |
| moc_source.output = $$MOC_DIR/$${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_EXT_CPP_MOC} |
| moc_source.input = SOURCES OBJECTIVE_SOURCES |
| moc_source.name = MOC ${QMAKE_FILE_IN} |
| !contains(TEMPLATE, "vc.*") { |
| !isEmpty(INCLUDETEMP):moc_source.depends += $$INCLUDETEMP |
| } |
| silent:moc_source.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_source.commands |
| QMAKE_EXTRA_COMPILERS += moc_source |
| INCREDIBUILD_XGE += moc_source |
| |
| #make sure we can include these files |
| moc_dir_short = $$MOC_DIR |
| contains(QMAKE_HOST.os,Windows):moc_dir_short ~= s,^.:,/, |
| contains(moc_dir_short, ^[/\\\\].*):INCLUDEPATH += $$MOC_DIR |
| else:INCLUDEPATH += $$OUT_PWD/$$MOC_DIR |
| |
| # Backwards compatibility: Make shadow builds with default MOC_DIR work |
| # if the user did not add the source dir explicitly. |
| equals(MOC_DIR, .) { |
| CONFIG -= include_source_dir |
| CONFIG = include_source_dir $$CONFIG |
| } |
| |
| #auto depend on moc |
| unix:!symbian:!no_mocdepend { |
| moc_source.depends += $$first(QMAKE_MOC) |
| moc_header.depends += $$first(QMAKE_MOC) |
| !contains(TARGET, moc) { #auto build moc |
| isEmpty(QMAKE_MOC_SRC):QMAKE_MOC_SRC = "$(QTDIR)/src/tools/moc" |
| make_moc.target = $$first(QMAKE_MOC) |
| make_moc.commands = (cd $$QMAKE_MOC_SRC && $(MAKE)) |
| QMAKE_EXTRA_TARGETS += make_moc |
| } |
| } |
| |
| #generate a mocclean |
| build_pass|isEmpty(BUILDS):mocclean.depends = compiler_moc_header_clean compiler_moc_source_clean |
| else:mocclean.CONFIG += recursive |
| QMAKE_EXTRA_TARGETS += mocclean |
| |
| #generate a mocables |
| build_pass|isEmpty(BUILDS):mocables.depends = compiler_moc_header_make_all compiler_moc_source_make_all |
| else:mocables.CONFIG += recursive |
| QMAKE_EXTRA_TARGETS += mocables |