isEmpty(QMAKE_QSETTINGSGENERATOR): qtPrepareTool(QMAKE_QSETTINGSGENERATOR, qsettingsgenerator)
isEmpty(QMAKE_LUPDATE): qtPrepareTool(QMAKE_LUPDATE, lupdate)

isEmpty(QSETTINGSTRANSLATOR_DIR): QSETTINGSTRANSLATOR_DIR = .tr-dummies
isEmpty(MOC_DIR): MOC_DIR = .
debug_and_release {
	CONFIG(debug, debug|release):SUFFIX = /debug
	CONFIG(release, debug|release):SUFFIX = /release
}
QSETTINGSTRANSLATOR_DIR = $$QSETTINGSTRANSLATOR_DIR$$SUFFIX

!ReleaseBuild: {
	qsettingstranslator_c.name = qsettingsgenerator --translate ${QMAKE_FILE_IN}
	qsettingstranslator_c.input = SETTINGS_TRANSLATIONS #TODO compability
	qsettingstranslator_c.variable_out = CPP_DUMMIES
	qsettingstranslator_c.commands = $$QMAKE_QSETTINGSGENERATOR --translate --in ${QMAKE_FILE_IN} --impl ${QMAKE_FILE_OUT}
	qsettingstranslator_c.output = $$QSETTINGSTRANSLATOR_DIR/${QMAKE_FILE_BASE}.tsdummy$${first(QMAKE_EXT_CPP)}
	qsettingstranslator_c.CONFIG += no_link
	qsettingstranslator_c.depends += $$QMAKE_QSETTINGSGENERATOR_EXE

	QMAKE_EXTRA_COMPILERS += qsettingstranslator_c

	DBL_DOLLAR = $${LITERAL_DOLLAR}$${LITERAL_DOLLAR}$${LITERAL_DOLLAR}$${LITERAL_DOLLAR}
	defineReplace(qmake_escape) {
		win32:!mingw: return($$1)
		else: return($$shell_quote($$1))
	}

	lupdate_fakepri_c.name = fakepri ${QMAKE_FILE_IN}
	lupdate_fakepri_c.input = CPP_DUMMIES GENERATED_SOURCES
	lupdate_fakepri_c.variable_out = TS_FAKEPRI_FILES
	lupdate_fakepri_c.commands = echo $$qmake_escape(BUILD_SOURCES += ${QMAKE_FILE_IN}) > ${QMAKE_FILE_OUT} \
		$$escape_expand(\\n\\t)echo $$qmake_escape(for(src, BUILD_SOURCES): SOURCES += $${DBL_DOLLAR}PWD/$${DBL_DOLLAR}src) >> ${QMAKE_FILE_OUT}
	lupdate_fakepri_c.output = .ts-sources.pri
	lupdate_fakepri_c.CONFIG += combine no_link
	QMAKE_EXTRA_COMPILERS += lupdate_fakepri_c

	lupdate_fakepro_c.name = fakepro ${QMAKE_FILE_IN}
	lupdate_fakepro_c.input = TS_FAKEPRI_FILES
	lupdate_fakepro_c.variable_out = TS_FAKEPRO_FILES
	lupdate_fakepro_c.commands = echo $$qmake_escape(include($$shadowed($$_PRO_FILE_PWD_)/${QMAKE_FILE_IN})) > ${QMAKE_FILE_OUT} \
		$$escape_expand(\\n\\t)echo $$qmake_escape(include($$_PRO_FILE_)) >> ${QMAKE_FILE_OUT}
	lupdate_fakepro_c.output = $$_PRO_FILE_PWD_/.tsdummy.pro.dummy
	lupdate_fakepro_c.CONFIG += combine no_link
	QMAKE_EXTRA_COMPILERS += lupdate_fakepro_c

	lupdate_c.name = lupdate ${QMAKE_FILE_IN}
	lupdate_c.input = TS_FAKEPRO_FILES SOURCES CPP_DUMMIES GENERATED_SOURCES
	lupdate_c.commands = $$QMAKE_LUPDATE -locations relative -pro-out $$shell_quote($$_PRO_FILE_PWD_) -pro $$shell_quote($$_PRO_FILE_PWD_/.tsdummy.pro.dummy) \
		$$escape_expand(\\n\\t)echo created > $$QSETTINGSTRANSLATOR_DIR/.lupdate
	lupdate_c.output = $$QSETTINGSTRANSLATOR_DIR/.lupdate
	lupdate_c.CONFIG += combine no_link
	lupdate_c.depends += $$QMAKE_LUPDATE_EXE
	!no_auto_lupdate: lupdate_c.CONFIG += target_predeps
	QMAKE_EXTRA_COMPILERS += lupdate_c

	lupdate_target.target = lupdate
	lupdate_target.depends += $$QSETTINGSTRANSLATOR_DIR/.lupdate
	QMAKE_EXTRA_TARGETS += lupdate_target
}

QMAKE_DIR_REPLACE += QSETTINGSTRANSLATOR_DIR
QMAKE_DIR_REPLACE_SANE += QSETTINGSTRANSLATOR_DIR