import "class" : new ; import lex ; import qt ; import extra ; import type ; type.register UI : ui ; type.register UIC_H ; type.set-generated-target-suffix UIC_H : : h ; type.register X1 : x1 ; type.register X2 : x2 ; type.register X_PRO : x_pro ; import generators ; generators.register-standard qt.uic : UI UIC_H : CPP ; generators.register-standard qt.uic-h : UI : UIC_H ; # That's an interesting example. Currently, X_PRO will be processed # twice. generators.register-standard extra.x : X1 X2 : CPP ; generators.register-standard extra.x_pro : X_PRO : X1 X2 ; # The point of this setup of to implement this functionality # "When main target type is EST_EXE, build OBJ from CPP-MARKED, not # for anything else (like CPP) # Unfortunately, this does not really works. #if $(no-var) { import nm ; type.register CPP_MARKED : marked.cpp : CPP ; type.register POSITIONS : positions ; type.register NM.TARGET.CPP : target.cpp : CPP ; type.register NM_EXE : : EXE : main ; generators.register-standard nm.target-source : CPP_MARKED : NM.TARGET.CPP ; generators.register-standard nm.cpp-mark : CPP : CPP_MARKED POSITIONS ; class nm::target::cpp-obj-generator : generator { rule __init__ ( ) { generator.__init__ nm.target-obj : NM.TARGET.CPP : OBJ ; } rule requirements ( ) { return NM_EXE ; } rule optional-properties ( ) { return NM_EXE ; } # Consider: it it OK to ignore all other generated targets except for the first? rule run ( project name ? : properties * : source : multiple ? ) { if [ $(source).type ] = CPP { local converted = [ generators.construct $(project) : NM.TARGET.CPP : $(properties) : $(source) ] ; if $(converted[1]) { local result = [ generators.construct $(project) : OBJ : $(properties) : $(converted[1]) ] ; return $(result) ; } else { return ; } } else { return ; } } } generators.register [ new nm::target::cpp-obj-generator ] ; #}