import	rkBuilder
import	rkConfig
import	rkMoc
import	rkWalker
import	os
import	string

rkBuilder.setCommandLine (COMMAND_LINE_TARGETS, ARGUMENTS)

sources = [ \
		'kb_gui.cpp',			\
		'kb_layout.cpp',		\
		'kb_node.cpp',			\
		'kb_attr.cpp',			\
		'kb_errordlg.cpp',		\
		'kb_script.cpp',		\
		'kb_draglist.cpp',		\
		'kb_parse.cpp',			\
		'kb_object.cpp',		\
		'kb_display.cpp',		\
		'kb_ctrl.cpp',			\
		'kb_layoutitem.cpp',		\
		'kb_param.cpp',			\
		'kb_item.cpp',			\
		'kb_block.cpp',			\
		'kb_query.cpp',			\
		'kb_form.cpp',			\
		'kb_prompt.cpp',		\
		'kb_dialog.cpp',		\
		'kb_blockgui.cpp',		\
		'kb_blockact.cpp',		\
		'kb_blockevents.cpp',		\
		'kb_button.cpp',		\
		'kb_label.cpp',			\
		'kb_field.cpp',			\
		'kb_choice.cpp',		\
		'kb_check.cpp',			\
		'kb_linktree.cpp',		\
		'kb_link.cpp',			\
		'kb_tree.cpp',			\
		'kb_pixmap.cpp',		\
		'kb_rowmark.cpp',		\
		'kb_qtbutton.cpp',		\
		'kb_qtlabel.cpp',		\
		'kb_qtfield.cpp',		\
		'kb_qtchoice.cpp',		\
		'kb_qtcheck.cpp',		\
		'kb_qtlink.cpp',		\
		'kb_qttree.cpp',		\
		'kb_qtrowmark.cpp',		\
		'kb_qtpixmap.cpp',		\
		'kb_qtreplink.cpp',		\
		'kb_hidden.cpp',		\
		'kb_qrysql.cpp',		\
		'kb_options.cpp',		\
		'kb_qryquery.cpp',		\
		'kb_qrydata.cpp',		\
		'kb_table.cpp',			\
		'kb_qrylevel.cpp',		\
		'kb_qrynull.cpp',		\
		'kb_qrybase.cpp',		\
		'kb_queryset.cpp',		\
		'kb_qrytable.cpp',		\
		'kb_formcopier.cpp',		\
		'kb_event.cpp',			\
		'kb_attrdict.cpp',		\
		'kb_module.cpp',		\
		'kb_report.cpp',		\
		'kb_parsereport.cpp',		\
		'kb_parseform.cpp',		\
		'kb_parsequery.cpp',		\
		'kb_parsecomponent.cpp',	\
		'kb_moduleitem.cpp',		\
		'kb_docroot.cpp',		\
		'kb_writer.cpp',		\
		'kb_formblock.cpp',		\
		'kb_reportblock.cpp',		\
		'kb_popupmenu.cpp',		\
		'kb_popupprompt.cpp',		\
		'kb_formatdlg.cpp',		\
		'kb_font.cpp',			\
		'kb_listview.cpp',		\
		'kb_richtext.cpp',		\
		'kb_qtrichtext.cpp',		\
		'kb_framer.cpp',		\
		'kb_summary.cpp',		\
		'kb_qtsummary.cpp',		\
		'kb_attrexpr.cpp',		\
		'kb_attrgeom.cpp',		\
		'kb_attrmargin.cpp',		\
		'kb_attrvpage.cpp',		\
		'kb_mask.cpp',			\
		'kb_grid.cpp',			\
		'kb_qtgrid.cpp',		\
		'kb_nodemonitor.cpp',		\
		'kb_metrics.cpp',		\
		'kb_helper.cpp',		\
		'kb_dispwidget.cpp',		\
		'kb_dispscroller.cpp',		\
		'kb_resizewidget.cpp',		\
		'kb_import.cpp',		\
		'kb_navigator.cpp',		\
		'kb_docchooser.cpp',		\
		'kb_paramsetdlg.cpp',		\
		'kb_memo.cpp',			\
		'kb_qtmemo.cpp',		\
		'kb_editlistview.cpp',		\
		'kb_ruler.cpp',			\
		'kb_tablechooser.cpp',		\
		'kb_querychooser.cpp',		\
		'kb_fieldchooser.cpp',		\
		'kb_qryexpr.cpp',		\
		'kb_qttabber.cpp',		\
		'kb_tabber.cpp',		\
		'kb_stack.cpp',			\
		'kb_copyexec.cpp',		\
		'kb_copybase.cpp',		\
		'kb_copytable.cpp',		\
		'kb_copyxml.cpp',		\
		'kb_copyfile.cpp',		\
		'kb_copyquery.cpp',		\
		'kb_copysql.cpp',		\
		'kb_select.cpp',		\
		'kb_widgettree.cpp',		\
		'tkc_listaddrem.cpp', 		\
		'kb_passdlg.cpp',		\
		'kb_ascii.cpp',			\
		'kb_emitter.cpp',		\
		'kb_slot.cpp',			\
		'kb_test.cpp',			\
		'kb_slotnotifier.cpp',		\
		'kb_spinbox.cpp',		\
		'kb_qtspinbox.cpp',		\
		'kb_graphic.cpp',		\
		'kb_qtgraphic.cpp',		\
		'kb_attrframe.cpp',		\
		'kb_attrserver.cpp',		\
		'kb_attrimage.cpp',		\
		'kb_attralign.cpp',		\
		'kb_attrnav.cpp',		\
		'kb_attrstretch.cpp',		\
		'kb_checkbox.cpp',		\
		'kb_config.cpp',		\
		'kb_finddlg.cpp',		\
		'kb_multilistbox.cpp',		\
		'kb_recordnav.cpp',		\
		'kb_plugins.cpp',		\
		'kb_macro.cpp',			\
		'kb_listboxpair.cpp',		\
		'kb_deleter.cpp',		\
		'kb_mimefactory.cpp',		\
		'kb_geometry.cpp',		\
		'kb_progress.cpp',		\
		'kb_textedit.cpp',		\
		'kb_keymapper.cpp',		\
		'kb_fixedlabel.cpp',		\
		'kb_highlighter.cpp',		\
		'kb_intelli.cpp',		\
		'kb_methdict.cpp',		\
		'kb_propdict.cpp',		\
		'kb_manual.cpp',		\
		'kb_listwidget.cpp',		\
		'kb_nodereg.cpp',		\
		'kb_override.cpp',		\
		'kb_component.cpp',		\
		'kb_complink.cpp',		\
		'kb_labelskipdlg.cpp',		\
		'kb_dcopobject.cpp',		\
		'kb_listbox.cpp',		\
		'kb_qtlistbox.cpp',		\
		'kb_execsql.cpp',		\
		'kb_cookie.cpp',		\
		'kb_pluginaction.cpp',		\
		'kb_wizardbits.cpp',		\
		'kb_wizard.cpp',		\
		'kb_recentdb.cpp',		\
		'kb_skin.cpp',			\
		'kb_attrvalidator.cpp',		\
		'kb_attrskin.cpp',		\
		'kb_attrskinelem.cpp',		\
		'kb_attrnoupdate.cpp',		\
		'kb_attrreadonly.cpp',		\
		'kb_attroptlist.cpp',		\
		'kb_testsuite.cpp',		\
		'kb_testsuiteresultsdlg.cpp',	\
		'kb_urlrequest.cpp'
          ]


rkMoc.generateMocFiles ('libs/kbase')

rb	= rkBuilder.rkBuilder ('')


rb.setRuntime	()
rb.setDefine 	('__KB_USESYSPY', '1')
rb.winDefine 	('LIBKBASE_EXPORTS')
rb.addPorting	()
rb.addAll	('libs/common',  '_common')
rb.addAll	('libs/el32',	 '_el32')
rb.setDefine	('__KB_HELPAPP',  '\\"' + rkConfig.appName + 'Help\\"')
rb.setDefine	('__KB_APPNAME',  '\\"' + rkConfig.appName + '\\"')
rb.build	(sources)

ins	= rkBuilder.installer()
env	= Environment ()

if ins and rkConfig.mode != 'win' :

    appPath  = string.split (rkBuilder.appDir, '/')
    appDir   = string.join  (appPath[ : -1],   '/')
    rtName   = rkConfig.appName + 'rt'

    for idx in range (0, len(appPath)) :
        try    : os.mkdir (string.join(appPath[0 : idx], '/'))
        except : pass

    cwd = os.getcwd ()
    os.chdir  (appDir)

    try    : os.unlink (rtName)
    except : pass

    os.symlink (rkConfig.appName, rtName)
