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

Symbian

开发平台:

C/C++

  1. # ***** BEGIN LICENSE BLOCK ***** 
  2. # Version: RCSL 1.0/RPSL 1.0 
  3. #  
  4. # Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5. #      
  6. # The contents of this file, and the files included with this file, are 
  7. # subject to the current version of the RealNetworks Public Source License 
  8. # Version 1.0 (the "RPSL") available at 
  9. # http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10. # the file under the RealNetworks Community Source License Version 1.0 
  11. # (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12. # in which case the RCSL will apply. You may also obtain the license terms 
  13. # directly from RealNetworks.  You may not use this file except in 
  14. # compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15. # applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16. # RCSL for the rights, obligations and limitations governing use of the 
  17. # contents of the file.  
  18. #  
  19. # This file is part of the Helix DNA Technology. RealNetworks is the 
  20. # developer of the Original Code and owns the copyrights in the portions 
  21. # it created. 
  22. #  
  23. # This file, and the files included with this file, is distributed and made 
  24. # available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25. # EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26. # INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27. # FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28. # Technology Compatibility Kit Test Suite(s) Location: 
  29. #    http://www.helixcommunity.org/content/tck 
  30. # Contributor(s): 
  31. #  
  32. # ***** END LICENSE BLOCK ***** 
  33. #
  34. # This file contains python code that determines which files need
  35. # to be installed for the current profile (feature set)
  36. #
  37. # Four lists are created: app_files, cfg_files, mdl_fils, lib_names
  38. #
  39. # Each list item is a full path to the file (path to module build output) 
  40. # that needs to be installed
  41. #
  42. # app_files go to {app install dir}
  43. # cfg_files go to {app install dir}data
  44. # lib_files go to {app install dir}lib
  45. # mdl_files go to {system dir}recogs
  46. #
  47. # Each of these lists is mirrored by another list that contains paths
  48. # to files that are output by 'make copy', i.e.:
  49. #
  50. # app_files_copy
  51. # cfg_files_copy
  52. # lib_files_copy
  53. # mdl_files_copy
  54. #
  55. symbianPlayerMod = "clientapps\symbianplayer"
  56. symbianRecogMod = "clientapps\symbianrecog"
  57. #
  58. # dirs where files to be installed are located
  59. #
  60. playerOutputDir = "%s\%s\%s\" % (project.src_root_path, symbianPlayerMod, project.output_dir)
  61. playerConfigDir = "%s\%s\config\" % (project.src_root_path, symbianPlayerMod)
  62. recogOutputDir = "%s\%s\%s\" % (project.src_root_path, symbianRecogMod, project.output_dir)
  63. # where 'copy' copies output (i.e., debug or release) 
  64. makeCopyOutputDir = "%s\" % (project.target_dir)
  65. #
  66. # app_files
  67. #
  68. # aif should be installed before app to work around Symbian installer bug
  69. app_file_names = [ 'realplayer.aif',
  70.                 'realplayer.app',
  71.             'realplayer.rsc',
  72.             'realplayer_caption.rsc',
  73.                 'realplayer.mbm']
  74. app_files = AddPrefixForEach(playerOutputDir, app_file_names)
  75. app_files_copy = AddPrefixForEach(makeCopyOutputDir, app_file_names)
  76. #
  77. # cfg_files
  78. #
  79. cfg_file_names = [   'R1_Mobile_4_0.cfg',
  80.             'R1_Mobile_4_0_Operator.cfg',
  81.             'R1_Mobile_4_0_Factory.cfg']
  82. cfg_files = AddPrefixForEach(playerConfigDir, cfg_file_names)
  83. cfg_files_copy = AddPrefixForEach(makeCopyOutputDir, cfg_file_names)
  84. #
  85. # mdl_files
  86. #
  87. mdl_file_names = ['hxsymrecog.mdl']
  88. mdl_files = AddPrefixForEach(recogOutputDir, mdl_file_names)
  89. mdl_files_copy = AddPrefixForEach(makeCopyOutputDir, mdl_file_names)
  90. #
  91. # lib_files
  92. #
  93. lib_names = []
  94. # some dlls like vidplin aggregate functionality offered individually with
  95. # other dlls; this list tracks those dlls that can be removed from the list
  96. # of dlls to install because another dll duplicates or replaces the functionality
  97. lib_names_remove = []
  98. # maps lib short name to where it is output when built/distributed
  99. name_map = { 
  100. '3gppttrenderer'    : 'datatype/3gpptext/renderer/[target]/3gppttrenderer.dll', 
  101. 'amrff'         : 'datatype/amr/fileformat/[target]amrff.dll',
  102. 'amrn'          : 'datatype/amr/codec/amr-nb/[target]/amrn.dll',
  103. 'amrw'          : 'datatype/amr/codec/amr-wb/[target]/amrw.dll',
  104. 'audplin'       : 'datatype/group/audio/[target]/audplin.dll',
  105. 'clntcore'      : 'client/core/[target]/clntcore.dll',
  106. 'comimgff'      : 'datatype/image/unified/fileformat/[target]/comimgff.dll',
  107. 'comimgrend'    : 'datatype/image/unified/renderer/[target]/comimgrend.dll',
  108. 'cook'          : 'datatype/rm/audio/codec/ra8lbr/[target]/cook.dll',
  109. 'drv2'          : 'datatype/rm/video/codec/rvg2dec/[target]/drv2.dll',
  110. 'drvc'          : 'datatype/rm/video/codec/rv89combo/[target]/drvc.dll',
  111. 'giffformat'    : 'datatype/image/gif/fileformat/[target]/giffformat.dll',
  112. 'gifrender'     : 'datatype/image/gif/renderer/[target]/gifrender.dll',
  113. 'h263render'    : 'datatype/h263/renderer/[target]/h263/renderer/[target]/h263render.dll',
  114. 'httpfilesys'   : 'filesystem/httplite/[target]/httpfilesys.dll',
  115. 'hxsdp'         : 'protocol/sdp/[target]/hxsdp.dll',
  116. 'mp3d'          : 'datatype/mp3/decoder/[target]/mp3d.dll',
  117. 'mp3fformat'    : 'datatype/mp3/fileformat/[target]/mp3fformat.dll',
  118. 'mp3render'     : 'datatype/mp3/renderer/[target]/mp3render.dll',
  119. 'mp4arender'    : 'datatype/mp4/audio/renderer/[target]/mp4arender.dll',
  120. 'mp4fformat'    : 'datatype/mp4/fileformat/[target]/mp4fformat.dll',
  121. 'mp4vrender'    : 'datatype/mp4/video/renderer/[target]/mp4vrender',
  122. 'rafformat'     : 'datatype/rm/fileformat/[target]/rafformat.dll',
  123. 'rarender'      : 'datatype/rm/audio/renderer/[target]/rarender.dll',
  124. 'rmfformat'     : 'datatype/rm/fileformat/[target]/rmfformat.dll',
  125. 'rv30'          : 'datatype/rm/video/codec/rv89combo/[target]/rv30.dll',
  126. 'rv40'          : 'datatype/rm/video/codec/rv89combo/[target]/rv40.dll',
  127. 'rvxrender'     : 'datatype/rm/video/renderer/[target]/rvxrender',
  128. 'sipr'          : 'datatype/rm/audio/codec/sipro/[target]/sipr.dll',
  129. 'smlfformat'    : 'datatype/smil/fileformat/[target]/smlfformat.dll',
  130. 'smlrender'     : 'datatype/smil/renderer/[target]/smlrender.dll',
  131. 'smplfsys'      : 'filesystem/local/[target]/smplfsys.dll',
  132. 'vidplin'       : 'datatype/group/video/[target]/vidplin.dll',
  133. 'vidsite'       : 'video/site/[target]/vidsite.dll'
  134. }
  135. #
  136. # some helpers to reduce clutter...
  137. #
  138. def Add(*files):
  139.     ''' add files to list of files to install '''
  140.     global lib_names
  141.     for f in files:
  142.         lib_names.append(f)
  143. def Remove(*files):
  144.     ''' add files to list of files remove from install list '''
  145.     global lib_names_remove
  146.     for f in files:
  147.         lib_names_remove.append(f)
  148. def AddLocal(*files):
  149.     ''' add files only if local playback feature supported'''
  150.     if project.IsDefined("HELIX_FEATURE_PLAYBACK_LOCAL"):
  151.         apply(Add, files)
  152. def StripDupes(list):
  153. ''' return new list with duplicates removed '''
  154. newList = []
  155. for item in list:
  156. if (item not in newList):
  157. newList.append(item)
  158. return newList
  159. # always add client core dll
  160. Add('clntcore')
  161. if project.IsDefined("HELIX_FEATURE_PLAYBACK_LOCAL"):
  162.     Add('smplfsys')
  163. if project.IsDefined("HELIX_FEATURE_PLAYBACK_NET"):
  164.     Add('hxsdp')
  165.     Add('httpfilesys')
  166. if project.IsDefined("HELIX_FEATURE_3GPP"):
  167.     Add('amrn', 'amrw')
  168.     Add('rv40')
  169.     # audplin aggregates mp4arender and armff
  170.     Add('audplin')
  171.     Remove('mp4arender', 'amrff')
  172.     AddLocal('mp4fformat')
  173. if project.IsDefined("HELIX_FEATURE_VIDEO"):
  174.     Add('vidsite', 'vidplin')
  175.     # vidplin aggregates functionality for all these
  176.     Remove('h263render', 'mp4vrender', 'rvxrender')
  177. if project.IsDefined("HELIX_FEATURE_VIDEO_H263"):
  178.     Add('h263render', 'rv40', 'drv2')
  179. if project.IsDefined("HELIX_FEATURE_VIDEO_CODEC_RV20"):
  180.     Add('rv40', 'drv2')
  181. if project.IsDefined("HELIX_FEATURE_VIDEO_CODEC_RV30"):
  182.     Add('rv40', 'drvc')
  183. if project.IsDefined("HELIX_FEATURE_VIDEO_CODEC_RV40"):
  184.     Add('rv40', 'drvc')
  185.     Remove('rv30')
  186. #if project.IsDefined("HELIX_FEATURE_VIDEO_MPEG4"):
  187. #   Add('mp4vrender', 'rv40')
  188. if project.IsDefined("HELIX_FEATURE_VIDEO_REAL"):
  189.     AddLocal('rmfformat')
  190.     Add('rvxrender')
  191. if project.IsDefined("HELIX_FEATURE_AUDIO_REAL"):
  192.     Add('rarender')
  193.     AddLocal('rmfformat')
  194. if project.IsDefined("HELIX_FEATURE_AUDIO_CODEC_GECKO"):
  195.     Add('cook')
  196. if project.IsDefined("HELIX_FEATURE_AUDIO_CODEC_SIPRO"):
  197.     Add('sipr')
  198. if project.IsDefined("HELIX_FEATURE_AUDIO_MPA_LAYER3"):
  199.         AddLocal('mp3fformat')
  200.         if project.IsDefined("HELIX_FEATURE_AUDIO_CODEC_MP3"):
  201.                 Add('mp3d')
  202.         else:
  203.                 Add('mp3render')
  204. if project.IsDefined("HELIX_FEATURE_SMIL2"):
  205.     Add('smlrender', 'smlfformat', 'comimgrend', 
  206.         'comimgff', 'gifrender', 'giffformat')
  207. if project.IsDefined("HELIX_FEATURE_TIMEDTEXT"):
  208.     Add('3gppttrenderer')
  209. # remove duplicates that fall under multiple features; sort so we can find more easily
  210. lib_names = StripDupes(lib_names)
  211. lib_names.sort()
  212. # remove redundant dlls
  213. for f in lib_names_remove:
  214.     if f in lib_names:
  215.         lib_names.remove(f)
  216. # replace '[target]' with target and add full path prefix to generate full path,
  217. # e.g., '../../filesystem/local/thumb-rel/smpfsys.dll'
  218. lib_files = []
  219. for f in lib_names:
  220.     path = name_map[f].replace('[target]',project.output_dir)
  221.     path = os.path.join(project.src_root_path, path)
  222.     path = os.path.normpath(path)
  223.     lib_files.append(path)
  224.     
  225. # add make copy output dir prefix and .dll suffix, e.g. '../../debug/foo.dll'
  226. lib_files_copy = []
  227. for f in lib_names:
  228.     path = os.path.join(makeCopyOutputDir, f)
  229.     path += ".dll"
  230.     path = os.path.normpath(path)
  231.     lib_files_copy.append(path)
  232. def GetInstallName(default):
  233.     ''' create an install name that describes current profile (if possible) '''
  234.     installName = default
  235.     if project.IsDefined('HELIX_PROFILE_S60_ADVANCED'):
  236.         installName = '%s-s60-advanced' % installName
  237.     elif project.IsDefined('HELIX_PROFILE_S60_BASIC'):
  238.         installName = '%s-s60-basic' % installName
  239.     return installName