symbian.pcf
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:18k
源码类别:

Symbian

开发平台:

C/C++

  1. #
  2. # ***** BEGIN LICENSE BLOCK *****
  3. # Version: RCSL 1.0/RPSL 1.0
  4. #
  5. # Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
  6. #
  7. # The contents of this file, and the files included with this file, are
  8. # subject to the current version of the RealNetworks Public Source License
  9. # Version 1.0 (the "RPSL") available at
  10. # http://www.helixcommunity.org/content/rpsl unless you have licensed
  11. # the file under the RealNetworks Community Source License Version 1.0
  12. # (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
  13. # in which case the RCSL will apply. You may also obtain the license terms
  14. # directly from RealNetworks.  You may not use this file except in
  15. # compliance with the RPSL or, if you have a valid RCSL with RealNetworks
  16. # applicable to this file, the RCSL.  Please see the applicable RPSL or
  17. # RCSL for the rights, obligations and limitations governing use of the
  18. # contents of the file.
  19. #
  20. # This file is part of the Helix DNA Technology. RealNetworks is the
  21. # developer of the Original Code and owns the copyrights in the portions
  22. # it created.
  23. #
  24. # This file, and the files included with this file, is distributed and made
  25. # available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  26. # EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  27. # INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
  28. # FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
  29. #
  30. # Technology Compatibility Kit Test Suite(s) Location:
  31. #    http://www.helixcommunity.org/content/tck
  32. #
  33. # Contributor(s):
  34. #
  35. # ***** END LICENSE BLOCK *****
  36. # root directory for source relative to current directory; empty means current directory
  37. try:
  38.     sourceRoot = sourceRoot
  39. except:
  40.     sourceRoot = ""
  41. #
  42. # get list of files for installation (in app_files, cfg_files, lib_files, mdl_files)
  43. #
  44. execfile("install.pcf")
  45. installName = GetInstallName('rplay')
  46. #
  47. # ************* local defines *************
  48. #
  49. # debug feature for debugging/testing mmc lock/unlock related functionality
  50. # project.AddDefines('SYMBIANPLAYER_INCLUDE_LOCK_DRIVE_UI')
  51. # for about box
  52. project.AddDefines('SYMBIANPLAYER_INSTALL_NAME=%s' % installName)
  53. #
  54. # ************* MBM file generation *************
  55. #
  56. mbmList = ["audio_icon_left.bmp",
  57. "audio_icon_right.bmp",
  58. "background_logo.bmp",
  59. "file_folder.bmp",
  60. "file_folder_mask.bmp",
  61. "file_local.bmp",
  62. "file_local_mask.bmp",
  63. "file_mmc.bmp",
  64. "file_mmc_broken.bmp",
  65. "file_mmc_broken_mask.bmp",
  66. "file_mmc_mask.bmp",
  67. "file_network.bmp",
  68. "file_network_mask.bmp",
  69. "fileview_mmc_tab.bmp",
  70. "fileview_mmc_tab_mask.bmp",
  71. "fileview_local_tab.bmp",
  72. "fileview_local_tab_mask.bmp",
  73. "mark_check.bmp",
  74. "mark_check_mask.bmp",
  75. "qgn_menu_rp_grey_cxt.bmp",
  76. "qgn_menu_rp_grey_cxt_mask.bmp",
  77. "qgn_prop_media_sub.bmp",
  78. "qgn_prop_media_sub_mask.bmp",
  79. "qgn_indi_live_disabled.bmp",
  80. "qgn_indi_live_disabled_mask.bmp",
  81. "qgn_indi_live_enabled.bmp",
  82. "qgn_indi_live_enabled_mask.bmp",
  83. "qgn_indi_paused.bmp",
  84. "qgn_indi_paused_mask.bmp",
  85. "qgn_prop_sett_network_sub.bmp",
  86. "qgn_prop_sett_network_sub_mask.bmp",
  87. "qgn_prop_sett_network_tab.bmp",
  88. "qgn_prop_mmc_locked_small.bmp",
  89. "qgn_prop_mmc_locked_small_mask.bmp",
  90. "qgn_prop_mmc_non_small.bmp",
  91. "qgn_prop_mmc_non_small_mask.bmp",
  92. "qgn_prop_phone_small.bmp",
  93. "qgn_prop_phone_small_mask.bmp",
  94. "qgn_prop_mmc_small.bmp",
  95. "qgn_prop_mmc_small_mask.bmp",
  96. "qgn_prop_network_sub.bmp",
  97. "qgn_prop_network_sub_mask.bmp",
  98. "qgn_prop_sett_network_tab_mask.bmp",
  99. "qgn_prop_sett_playback_sub.bmp",
  100. "qgn_prop_sett_playback_sub_mask.bmp",
  101. "qgn_prop_sett_playback_tab.bmp",
  102. "qgn_prop_sett_playback_tab_mask.bmp",
  103. "qgn_prop_sett_proxy_sub.bmp",
  104. "qgn_prop_sett_proxy_sub_mask.bmp",
  105. "qgn_prop_sett_proxy_tab.bmp",
  106. "qgn_prop_sett_proxy_tab_mask.bmp",
  107. "qgn_prop_sett_video_sub.bmp",
  108. "qgn_prop_sett_video_sub_mask.bmp",
  109. "qgn_prop_sett_video_tab.bmp",
  110. "qgn_prop_sett_video_tab_mask.bmp",
  111. "vol_mute.bmp",
  112. "vol_mute_mask.bmp"]
  113. mbmBase = sourceRoot + "platform/symbian/images/"
  114. mbmList = AddPrefixForEach(mbmBase, mbmList)
  115. if (not os.path.exists(project.output_dir)):
  116.     os.mkdir(project.output_dir)
  117. mbmFileOut =  project.output_dir + "/realplayer.mbm"
  118. mbmHeaderOut = mbmBase + "realplayer.mbg"
  119. # XXXLCM mbm file and includes output to dir where source is; consider revising!
  120. project.symbianUtil.create_mbm_file(mbmFileOut, mbmHeaderOut, "/c8", mbmList)
  121. # add include for generated mbm header file
  122. mbmInclude = mbmBase[:-1] # get rid of trailing '/'
  123. project.AddIncludes(mbmInclude)
  124. #
  125. # ************* resource file generation *************
  126. #
  127. def CreateResourceIncludeFile(outputDir):
  128. #     Writes out include file with preprocessor defines for inclusion
  129. #     by app rss file. We do this because the rss generation tool does
  130. #     not allow us to pass macros on the command line.
  131.     name = os.path.join(outputDir, "realplayer_rss.inc")
  132.     file = open(name, 'w')
  133.     file.write("/* GENERATED FILE - DO NOT EDIT */n")
  134.     if project.IsDefined("HELIX_FEATURE_DPRINTF"):
  135.         file.write("#define HELIX_FEATURE_DPRINTFn");
  136.     file.write("n")
  137.     file.close();
  138. resourceSourceDir = os.path.join(sourceRoot,  "platform\symbian\resource")
  139. CreateResourceIncludeFile(resourceSourceDir)
  140. resourceFiles = ["platform/symbian/resource/realplayer.rss",
  141. "platform/symbian/resource/realplayer_caption.rss"]
  142. resourceFiles = AddPrefixForEach(sourceRoot, resourceFiles)
  143. apply(project.symbianUtil.AddResourceFiles, resourceFiles)
  144. project.symbianUtil.AddResourceIncludes(sourceRoot + "platform/symbian/resource")
  145. #
  146. # ************* aif  file generation *************
  147. #
  148. def CreateAIFIncludeFile(outputDir):
  149. #     Writes out include file with preprocessor defines for inclusion
  150. #     by AIF rss file. We do this because the aif generation tool
  151. #     (epocaif.pl) does not allow us to pass macros on the command
  152. #     line.
  153.     name = os.path.join(outputDir, "realplayer_aif.inc")
  154.     file = open(name, 'w')
  155.     file.write("/* GENERATED FILE - DO NOT EDIT */n")
  156.     if project.IsDefined("HELIX_FEATURE_3GPP"):
  157.         file.write("#define HELIX_FEATURE_3GPPn");
  158.     if project.IsDefined("HELIX_FEATURE_AUDIO_MPA_LAYER3"):
  159.         file.write("#define HELIX_FEATURE_AUDIO_MPA_LAYER3n");
  160.     if project.IsDefined("HELIX_FEATURE_SMIL2"):
  161.         file.write("#define HELIX_FEATURE_SMIL2n");
  162.     file.write("n")
  163.     file.close();
  164. aifSourceDir = os.path.join(sourceRoot, "platform\symbian\aif")
  165. # generate include file first
  166. CreateAIFIncludeFile(aifSourceDir)
  167. aifIcons = "qgn_menu_rp_cxt.bmp qgn_menu_rp_cxt_mask.bmp qgn_menu_rp_lst.bmp qgn_menu_rp_lst_mask.bmp"
  168. aifIconList = string.split(aifIcons)
  169. aif = SymbianAIF(aifSourceDir, "realplayer_aif.rss", aifIconList)
  170. aif.AddIncludeDir(sourceRoot + "platform\symbian\resource")
  171. aif.AddIncludeDir(aifSourceDir)
  172. aifOutputDir = project.output_dir
  173. EnsureDirExists(aifOutputDir)
  174. aifOutputName = os.path.join(aifOutputDir, "realplayer.aif")
  175. aif.Generate(aifOutputName)
  176. #
  177. # ************* pkg file generation ***************
  178. #
  179.  
  180. pkg = SymbianPkg(installName, "Helix", ["EN"])
  181. pkg.SetHeader(['Helix Player'], 0x10009D06, 4, 0, 0)
  182. pkg.AddPackageDependency(0x101F6F88, 0, 0, 0, 'Series60ProductID')
  183. for file in app_files:
  184.     pkg.AddFile(file)
  185. for file in cfg_files:
  186.     pkg.AddFile(file, 'data%s' % os.path.basename(file))
  187. for file in lib_files:
  188.     pkg.AddFile(file, 'lib\%s' % os.path.basename(file))
  189. for file in mdl_files:
  190.     pkg.AddFile(file, "!:\system\recogs\hxsymrecog.mdl")
  191. pkg.Generate()
  192. #
  193. # ************* module inclues *************
  194. #
  195. # module includes relative to build root
  196. moduleIncludeList = ["common/runtime/pub",
  197. "clientapps_rn/symbianplayer",
  198. "client/include",
  199. "datatype/rm/include",
  200. "common/container/pub",
  201. "common/util/pub",
  202. "common/fileio/pub",
  203. "common/include",
  204. "common/dbgtool/pub",
  205. "common/dbgtool/pub/platform/symbian",
  206. "common/system/pub",
  207. "video/sitelib/pub",
  208. "video/sitelib/pub/platform/symbian"]
  209. apply(project.AddModuleIncludes, moduleIncludeList)
  210. #
  211. # ************* local inclues *************
  212. #
  213. # local includes relative to current dir
  214. localIncludeList = ["platform/symbian",
  215. "platform/symbian/resource",
  216. "platform/symbian/util",
  217. "platform/symbian/file/pub",
  218. "platform/symbian/misc",
  219. "platform/symbian/help",
  220. "util/pub",
  221. "debug/pub"]
  222. # local includes that are debug/release specific
  223. if (project.IsDefined("HELIX_FEATURE_DPRINTF")):
  224.     localIncludeList.append("debug/pub/dbg")
  225. else:
  226.     localIncludeList.append("debug/pub/rel")
  227. localIncludeList = AddPrefixForEach(sourceRoot, localIncludeList)
  228. apply(project.AddIncludes, localIncludeList)
  229. #
  230. # ************* local sources *************
  231. #
  232. sourceList = ["platform/symbian/chxavactivewatcher.cpp",
  233. "platform/symbian/chxavaccesspointdb.cpp",
  234. "platform/symbian/chxavaccesspointsettingsitem.cpp",
  235. "platform/symbian/chxavnetconnectui.cpp",
  236. "platform/symbian/chxavselectsettingsview.cpp",
  237. "platform/symbian/chxavselectsettingsviewwindow.cpp",
  238. "platform/symbian/chxavsettingsview.cpp",
  239. "platform/symbian/chxavsettingsviewwindow.cpp",
  240. "platform/symbian/chxavsettingsdata.cpp",
  241. "platform/symbian/chxavsettingslist.cpp",
  242. "platform/symbian/chxavcallback.cpp",
  243. "platform/symbian/chxavclipinfolist.cpp",
  244. "platform/symbian/chxavdefines.cpp",
  245. "platform/symbian/chxaveditplaylistdialog.cpp",
  246. "platform/symbian/chxavescapedstring.cpp",
  247. "platform/symbian/chxavfileui.cpp",
  248. "platform/symbian/chxavfileview.cpp",
  249. "platform/symbian/chxavfileviewpageinfo.cpp",
  250. "platform/symbian/chxavfileviewwindow.cpp",
  251. "platform/symbian/chxavfolderdisplayinfo.cpp",    
  252. "platform/symbian/chxavfolderpopuplist.cpp",
  253. "platform/symbian/chxavinfolist.cpp",
  254. "platform/symbian/chxavinfolistpopup.cpp",
  255. "platform/symbian/chxavmediafolderinfo.cpp",
  256. "platform/symbian/chxavmessagedialog.cpp",
  257. "platform/symbian/chxavnamedisplaytrait.cpp",
  258. "platform/symbian/chxavnavipanecontrol.cpp",
  259. "platform/symbian/chxavplaylistnavicontrol.cpp",
  260. "platform/symbian/chxavpathselector.cpp",
  261. "platform/symbian/chxavplayer.cpp",                   
  262. "platform/symbian/chxavplayerapp.cpp",
  263. "platform/symbian/chxavplayerdoc.cpp",
  264. "platform/symbian/chxavplayerstate.cpp",
  265. "platform/symbian/chxavplayerstatedispatch.cpp",
  266. "platform/symbian/chxavplayerui.cpp",
  267. "platform/symbian/chxavplaylist.cpp",
  268. "platform/symbian/chxavplayview.cpp",
  269. "platform/symbian/chxavplayviewwindow.cpp",
  270. "platform/symbian/chxavrecentclipspopuplist.cpp",
  271. "platform/symbian/chxavsitesupplier.cpp",    
  272. "platform/symbian/chxavstringutils.cpp",
  273. "platform/symbian/chxavtextcontrol.cpp",
  274. "platform/symbian/chxavurlinfo.cpp",
  275. "platform/symbian/chxavurllist.cpp",
  276. "platform/symbian/chxavviewbase.cpp",
  277. "platform/symbian/chxavwaitnote.cpp",
  278. "platform/symbian/chxsymclipinfo.cpp",
  279. "platform/symbian/chxsymsysagentwatcher.cpp",
  280. "platform/symbian/chxclientenginemanager.cpp",
  281. "platform/symbian/file/chxavfilestore.cpp",
  282. "platform/symbian/file/chxavfileutil.cpp",
  283. "platform/symbian/file/hxsym_filetype.cpp",
  284. "platform/symbian/misc/chxavcompositecommand.cpp",
  285. "platform/symbian/misc/chxavfilesystemwatcher.cpp",
  286. "platform/symbian/misc/chxavmisc.cpp",
  287. "platform/symbian/misc/chxavramparser.cpp",
  288. "platform/symbian/misc/chxavrandom.cpp",
  289. "platform/symbian/misc/chxavtimevalue.cpp",
  290. "platform/symbian/misc/chxavurlfix.cpp",
  291. "platform/symbian/misc/chxavurlrep.cpp",
  292. "platform/symbian/misc/hxsym_mmc_utils.cpp",
  293. "platform/symbian/util/chxavbuffer.cpp",
  294. "platform/symbian/util/chxavconvertutil.cpp",
  295. "platform/symbian/util/chxavdirectoryreader.cpp",
  296. "platform/symbian/util/chxavnextline.cpp",
  297. "platform/symbian/util/chxavthread.cpp",
  298. "platform/symbian/util/chxavutil.cpp",
  299. "util/hxapihelp.cpp",
  300. "util/hxsym_leaveutil.cpp",
  301. "util/hxapihelp_player.cpp",
  302. "util/chxresourcetoken.cpp"]
  303. # debug-only files
  304. if (project.IsDefined("HELIX_FEATURE_DPRINTF")):
  305.     dbgSourceList = ["platform/symbian/chxavcheckboxlistsettingitem.cpp",
  306.                     "debug/hxdebug_hxapi.cpp",
  307.                     "debug/hxsym_debug_print.cpp",
  308.                     "debug/hxsym_debug.cpp"]
  309.     sourceList = sourceList + dbgSourceList
  310. sourceList = AddPrefixForEach(sourceRoot, sourceList)
  311. apply(project.AddSources, sourceList)
  312. #
  313. # ************* app uid and extension *************
  314. #
  315. SetSymbianProgramTargetType("app")
  316. project.symbianUtil.SetUIDs(0, 0x100039CE, 0x10009D06)
  317. #
  318. # ************* additional output files that should be copied to output folder ***********
  319. #
  320. # app is already included
  321. #copyList = ['realplayer.aif', 'realplayer.mbm', 'realplayer.rsc', 'realplayer_caption.rsc']
  322. #project.copy_target_list = AddPrefixForEach(project.output_dir + '\', copyList)
  323. theList = app_files + cfg_files
  324. # remove 'realplayer.app' because it will already be added
  325. project.copy_target_list = filter(lambda name:string.find(name,'realplayer.app') == -1, theList)
  326. #
  327. # ************* libraries *************
  328. #
  329. project.AddModuleLibraries("common/system[syslib]",
  330. "common/util[utillib]",
  331. "common/fileio[fileiolib]",
  332. "common/container[contlib]",
  333. "common/runtime[runtlib]",
  334. "common/dbgtool[debuglib]",
  335. "client/common/util[utlclntlib]",
  336. "client/common/system[sysclntlib]",
  337. "client/common/container[contclntlib]",
  338. "common/system[syslib]",
  339. "common/runtime[runtlib]",
  340. "client/common/util[utlclntlib]",
  341. "client/core[clntcorelib]"
  342. )
  343. project.AddSystemLibraries('EUSER.LIB',
  344. 'APPARC.LIB',
  345. 'APSETTINGSHANDLERUI.LIB',
  346. 'CONE.LIB',
  347. 'EIKCORE.LIB',
  348. 'commdb.lib',
  349. 'EIKDLG.LIB',
  350. 'apengine.lib',
  351. 'EIKCDLG.LIB',
  352. 'EIKCOCTL.LIB',
  353. 'aknnotify.lib',
  354. 'charconv.lib',
  355. 'ws32.lib',
  356. 'AVKON.LIB',
  357. 'APGRFX.LIB',
  358. 'BAFL.LIB',
  359. 'EALWL.LIB',
  360. 'EFSRV.LIB',
  361. 'GDI.LIB',
  362. 'FBSCLI.LIB',
  363. 'ESTLIB.LIB',
  364. 'INSOCK.LIB',
  365. 'ESOCK.LIB',
  366. 'SENDUI.LIB',
  367. 'SYSAGT.LIB',
  368. 'APMIME.LIB',
  369. 'PINBMDL.LIB',
  370. 'egul.lib',
  371. 'bitgdi.lib',
  372. 'hlplch.lib',
  373. 'sysutil.lib',
  374. 'commonui.lib',
  375. 'etext.lib',
  376. 'field.lib',
  377. 'msgs.lib',
  378. 'eikctl.lib'
  379. )
  380. #
  381. #
  382. #       *********** Makefile rules ************
  383. #
  384. #
  385. project.post_target_buff = []
  386. #
  387. # ************* "install"/"uninstall" ********
  388. #
  389. def AddMakefileEnsureDirs(list, base, subdir):
  390.     ''' helper: add windows nmake line to ensure that 'base' (relative) exists under 'subdir' '''
  391.     parts = string.split(subdir, os.sep)
  392.     dir = base
  393.     for part in parts:
  394.         dir = os.path.join(dir, part)
  395.         list.append('t-@if NOT exist "%s" mkdir "%s"n' % (dir,dir))
  396. def AddMakefileEnsureDirLine(dir):
  397.     ''' helper: add windows nmake line to ensure that 'dir' exists '''
  398.     project.post_target_buff.append('t-@if NOT exist "%s" mkdir "%s"n' % (dir,dir))
  399.     
  400. def AddMakefileCopyRule(emulDir, sourcePath, copyLines, allFiles):
  401.     ''' helper '''
  402.     targetFile = '%s\%s' % (emulDir, os.path.basename(sourcePath))
  403.     copyLines.append('%s : %sn' % (targetFile, sourcePath))
  404.     copyLines.append('tcopy "%s" "%s"n' % ( sourcePath, emulDir))
  405.     allFiles.append(targetFile)
  406.     copyLines.append('n')
  407.     
  408. if (string.find(sysinfo.id,'emulator') != -1):
  409.     #
  410.     # write out install/uninstall (and related) rules for emulator environment
  411.     #
  412.     # emulator install directories
  413.     emulInstallDir = os.path.join(GetSDKPath('SYMBIANSDK'), "Epoc32\wins\c\system\apps\RealPlayer")
  414.     emulDataDir = os.path.join(emulInstallDir, "data")
  415.     emulLibDir = os.path.join(emulInstallDir, "lib")
  416.     emulRecogDir = os.path.join(GetSDKPath('SYMBIANSDK'), "Epoc32\wins\c\system\recogs")
  417.         
  418.     #
  419.     # rules for ensuring emul directories exist
  420.     #
  421.     project.post_target_buff.append('make_emul_dirs:n')
  422.     AddMakefileEnsureDirLine(emulInstallDir)
  423.     AddMakefileEnsureDirLine(emulDataDir)
  424.     AddMakefileEnsureDirLine(emulLibDir)
  425.     AddMakefileEnsureDirLine(emulRecogDir)
  426.     project.post_target_buff.append('n')
  427.     
  428.     # 
  429.     # 'copy' rules for installing files to emulator
  430.     #
  431.     copyLines = []
  432.     allFiles = []
  433.     for file in app_files:
  434.         AddMakefileCopyRule(emulInstallDir, file, copyLines, allFiles)
  435.     for file in cfg_files:
  436.         AddMakefileCopyRule(emulDataDir, file, copyLines, allFiles)
  437.     for file in mdl_files:
  438.         AddMakefileCopyRule(emulRecogDir, file, copyLines, allFiles)
  439.         
  440.     for file in lib_files:
  441.         AddMakefileCopyRule(emulLibDir, file, copyLines, allFiles)
  442.     project.post_target_buff.extend(copyLines)
  443.     #
  444.     # 'install": installs all player files to emulator directory
  445.     #
  446.     project.post_target_buff.append("install: all make_emul_dirs %sn" % string.join(allFiles) )
  447.     project.post_target_buff.append("n")
  448.     #
  449.     # "uninstall": erases player emulator directory
  450.     #
  451.     project.post_target_buff.append("uninstall:n")
  452.     project.post_target_buff.append('t-rm -rf "%s"n' % emulInstallDir)
  453.     for file in mdl_files:
  454.         file = os.path.basename(file)
  455.         project.post_target_buff.append('t-rm -f "%s\%s"n' % (emulRecogDir, file))
  456.     
  457. else:
  458.     #
  459.     # "install"/"uninstall": do nothing for non-emulator builds
  460.     #
  461.     project.post_target_buff.append("install: allnn")
  462.     project.post_target_buff.append("uninstall:nn")
  463.     
  464. #
  465. # *************** "sis"/"sisinst"  ****************
  466. #
  467. #
  468. # "{sisname}.sis"
  469. #
  470. sisName = "%s\%s.sis" % (project.output_dir, installName)
  471. sisDepends = string.join(app_files + cfg_files + lib_files)
  472. project.post_target_buff.append("%s: all %s.pkg %sn" % (sisName, installName, sisDepends))
  473. project.post_target_buff.append("tmakesis -v %s.pkg %s" % (installName, sisName))
  474. project.post_target_buff.append("n")
  475. #
  476. # "sis"
  477. project.post_target_buff.append("sis: %sn" % sisName)
  478. #
  479. # "sisclean"
  480. project.post_target_buff.append("sisclean:n")
  481. project.post_target_buff.append("t-rm -f %sn" % sisName)
  482. #
  483. # "sisinst" - copy sis to emulator install folder for emulator build
  484. #
  485. emulSisInstallDir = os.path.join(GetSDKPath('SYMBIANSDK'), "Epoc32\wins\c\nokia\installs\")
  486. project.post_target_buff.append("sisinst: sisn")
  487. if (string.find(sysinfo.id, 'emulator') != -1):
  488.     # copy to emulator install folder; enables you to use emulator installer app to install sis
  489.     project.post_target_buff.append("tcopy %s %sn" % (sisName, emulSisInstallDir))
  490. project.post_target_buff.append("n")
  491. #
  492. # "sisuninst" 
  493. #
  494. project.post_target_buff.append("sisuninst:n")
  495. if (string.find(sysinfo.id, 'emulator') != -1):
  496.     # copy to emulator install folder; enables you to use emulator installer app to install sis
  497.     project.post_target_buff.append("trm -f  %s%sn" % (emulSisInstallDir, os.path.basename(sisName)))