dsp_gen.pl
上传用户:lqx1163
上传日期:2014-08-13
资源大小:9183k
文件大小:12k
源码类别:

MTK

开发平台:

C/C++

  1. #!/usr/bin/perl
  2. #
  3. #  Copyright Statement:
  4. #  --------------------
  5. #  This software is protected by Copyright and the information contained
  6. #  herein is confidential. The software may not be copied and the information
  7. #  contained herein may not be used or disclosed except with the written
  8. #  permission of MediaTek Inc. (C) 2005
  9. #
  10. #  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  11. #  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  12. #  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
  13. #  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  14. #  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  15. #  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  16. #  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  17. #  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  18. #  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
  19. #  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
  20. #  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
  21. #  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
  22. #
  23. #  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
  24. #  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  25. #  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  26. #  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
  27. #  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  28. #
  29. #  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
  30. #  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
  31. #  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
  32. #  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
  33. #  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
  34. #
  35. #
  36. #!/user/bin/perl
  37. chdir "./plutommi/mmi/";
  38. #system("dir");
  39. $|=1;
  40. use strict;
  41. use DirHandle;
  42. $ENV{PERLIO}="crlf";
  43. my %WIN32_FILE_LIST;
  44. my %UN_WIN32_FILE_LIST;
  45. my %FORCE_WIN32_FILE_LIST;
  46. my $MAKE_PATH="../../make";
  47. my $MCU_ROOT="..\..\";
  48. my $LOOP_CNT=0;
  49. my %file_list_table;
  50. my %added_file_list_table;
  51. my $added_file_list_table_cnt=0;
  52. $WIN32_FILE_LIST{'plutommi'}.="..\..\custom\common\custom_ems_context.cn";
  53. $WIN32_FILE_LIST{'plutommi'}.="..\..\custom\common\mmi_msg_context.cn";
  54. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\Customer\CustResource\gui_wrapper.cn";
  55. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\Customer\CustResource\KeyMapDeclare.cn";
  56. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\Customer\CustResource\CustMiscData.cn";
  57. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\Customer\CustResource\resource_world_clock_city.cn";
  58. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\Customer\CustResource\resource_calc_coordinates.cn";
  59. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\Customer\CustResource\resource_shortcuts.cn";
  60. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\Customer\CustResource\resource_audply_skins.cn";
  61. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\Customer\CustResource\resource_camera_skins.cn";
  62. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\Customer\CustResource\resource_video_skins.cn";
  63. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\Customer\CustResource\resource_barcodereader_skins.cn";
  64. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\Customer\CustResource\resource_fmradio_skins.cn";
  65. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\Customer\CustResource\resource_fmschedulerec_skins.cn";
  66. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\Customer\CustResource\resource_abrepeat_skins.cn";
  67. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\Customer\CustResource\resource_aud_eq_values.cn";
  68. # $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\Customer\Resources\mtk_icon.ICOn";
  69. # $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\Customer\Resources\mtk_simulator.ICOn";
  70. # $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\Customer\Resources\small.icon";
  71. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\MMI\DebugLevels\DebugLevelSrc\Debug.cppn";
  72. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\MMI\DebugLevels\DebugLevelSrc\DebugPCTrc.cn";
  73. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\MMI\Framework\Osl\OslSrc\MMI.cppn";
  74. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\MMI\Framework\Osl\OslSrc\mainlcd.cn";
  75. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\MMI\Framework\Osl\OslSrc\KeyMap.cppn";
  76. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\MMI\Framework\Osl\OslSrc\UpdateWindow.cppn";
  77. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\MMI\Resource\StandaloneRes.cn";
  78. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\MMI\Framework\FileSystem\FileSystemSrc\FileSystemDummy.cn";
  79. $WIN32_FILE_LIST{'plutommi'}.="..\..\plutommi\MMI\Framework\FileSystem\FileSystemSrc\filesystemsrc.cn";
  80. $WIN32_FILE_LIST{'plutommi'}.="..\..\MoDIS\FileSystem\FileSystemSrc\FSSim_core.cn";
  81. $WIN32_FILE_LIST{'plutommi'}.="..\..\MoDIS\FileSystem\FileSystemSrc\FSSim_data.cn";
  82. $WIN32_FILE_LIST{'plutommi'}.="..\..\MoDIS\FileSystem\FileSystemSrc\FSSim_supplemental.cn";
  83. $WIN32_FILE_LIST{'plutommi'}.="..\..\custom\ps\$ARGV[0]\custom_poc_config.cn";
  84. $WIN32_FILE_LIST{'plutommi'}.="..\..\applib\mem\src\app_mem.cn";
  85. $WIN32_FILE_LIST{'plutommi'}.="..\..\applib\misc\src\app_crc.cn";
  86. $WIN32_FILE_LIST{'mtkapp'}.="..\..\plutommi\MtkApp\MtkAppSrc\soc_win32.cn";
  87. # add dummy files for BT and USB in WIN32 
  88. $WIN32_FILE_LIST{'mtkapp'}.="..\..\plutommi\MtkApp\Connectivity\ConnectivitySrc\ExtDeviceDummySrc.cn";
  89. #$UN_WIN32_FILE_LIST{'mtkapp'} .= " AudioPlayerMainScreen.c AudioPlayerMsgHandler.c AudioPlayerSrc.c AudioPlayerPlayList.c";
  90. $UN_WIN32_FILE_LIST{'mtkapp'} .= " ctk.c mmiapi_main.c mmiapi_sms.c mmiapi_sms_msg.c mmiapi_ui.c";
  91. $UN_WIN32_FILE_LIST{'mtkapp'} .= " vObjects.c vCalendar.c vCard.c";
  92. #$UN_WIN32_FILE_LIST{'mtkapp'} .= " FileMgr.c FileMgrCore.c FileManagerSrc.c FileMgrUI.c";
  93. # Need to force existing, because verno will be created after the desp_gen
  94. $FORCE_WIN32_FILE_LIST{'verno'} .= " verno.c";
  95. sub is_in_list1;
  96. sub create_file_table;
  97. sub create_lib_project;
  98. # add for DLT
  99. my @target_lib = ("plutommi", "mtkapp", "xmlp", "verno");
  100. print "Generating PC simulator project file...";
  101. foreach my $lib (@target_lib){
  102. #print "$libn";
  103. ########################################################################################################
  104. ## read filelist
  105. my $lis_filename = "$MAKE_PATH/$lib/$lib.lis";
  106. my $library_filename = "../../mtk_lib/$lib.lib";
  107. if (! -e $lis_filename)
  108. {
  109. print "Can't find $lis_filenamen";
  110. next;
  111. } elsif (-e $library_filename) {
  112. print "$library_filename exits!n";
  113. next;
  114. }
  115. open F,"<$lis_filename" or die "Can't read $lis_filename";
  116. my $list = "";
  117. my %list_hash;
  118. my @list_set;
  119. my @tmp_set;
  120. push @list_set,split("n",$WIN32_FILE_LIST{'global'}) if(defined($WIN32_FILE_LIST{'global'}));
  121. push @list_set,split("n",$WIN32_FILE_LIST{$lib}) if(defined($WIN32_FILE_LIST{$lib}));
  122. @tmp_set = <F>;
  123. push @list_set,@tmp_set;
  124. close F;
  125. foreach my $file (@list_set)
  126. {
  127. $file =~ s/^s+//gs;
  128. $file =~ s/s+$//gs;
  129. next if($file !~ /S+/);
  130. next if($list_hash{lc($file)});
  131. #print "$filen";
  132. if(!is_in_list1($file,$UN_WIN32_FILE_LIST{'global'})
  133. && !is_in_list1($file,$UN_WIN32_FILE_LIST{$lib}))
  134. {
  135. if($file =~ /^./)
  136. {
  137. if (! -e $file)
  138. {
  139. if(is_in_list1($file,$FORCE_WIN32_FILE_LIST{'verno'}))
  140. {
  141. print "force $filen";
  142. }
  143. else
  144. {
  145. print "Can't find $filen";
  146. next;
  147. }
  148. }
  149. $list .= $file ."n"
  150. }
  151. else
  152. {
  153. my $tmp_file = $MCU_ROOT . $file;
  154. if (! -e $tmp_file)
  155. {
  156. if(is_in_list1($file,$FORCE_WIN32_FILE_LIST{'verno'}))
  157. {
  158. print "force $filen";
  159. }
  160. else
  161. {
  162. print "Can't find $filen";
  163. next;
  164. }
  165. }
  166. $list .= $tmp_file ."n"
  167. }
  168. $list_hash{lc($file)} = 1;
  169. }
  170. }
  171. $list = join("n",sort(split("n",$list))) . "n";
  172. ##
  173. create_file_table($lib,$list);
  174. }
  175. ## write .dep file
  176. create_lib_project(
  177. "plutommi",
  178. "MMI.tmp",
  179. "MMI.dsp"
  180. );
  181. print "nGenerating PC simulator project file done!n";
  182. ############ Main procedure ends here ################
  183. sub create_group_source_tree
  184. {
  185. my $level = shift;
  186. my $fullpath = shift;
  187. my $path = shift;
  188. my $dir = new DirHandle();
  189. my $result = "";
  190. $level++;
  191. $result .= "# Begin Group "$path"n" if($level>1);
  192. #print "level = $level,    $fullpath";
  193. #foreach my $file (sort keys %file_list_table )
  194. #{
  195. # print "$filen";
  196. #}
  197. #while(<STDIN>){}
  198. opendir $dir,"$fullpath";
  199. foreach my $node (sort readdir($dir))
  200. {
  201. next if($node eq '.');
  202. next if($node eq '..');
  203. if(-d "$fullpath/$node")
  204. {
  205. #print "directory         $noden";
  206. # remove customer project information
  207. if(lc($fullpath) =~ /^..\..\plutommi\customer\custresource/)
  208. {
  209. print "skip directory         $fullpath/$noden";
  210. }
  211. else
  212. {
  213. my $file_counter = $added_file_list_table_cnt;
  214. my $content = create_group_source_tree($level,"$fullpath\$node",$node);
  215. #print "$content";
  216. $result .= $content if($file_counter < $added_file_list_table_cnt);
  217. }
  218. }
  219. else
  220. {
  221. next if($node =~ /.c$/ && !defined($file_list_table{lc("$fullpath\$node")}));
  222. next if($node =~ /.cpp$/ && !defined($file_list_table{lc("$fullpath\$node")}));
  223. next if(defined($added_file_list_table{lc("$fullpath\$node")}));
  224. if($node =~ /.h$/i
  225. || $node =~ /.c$/i
  226. || $node =~ /.cpp$/i
  227. #|| $node =~ /.txt$/i
  228. #|| $node =~ /.bat$/i
  229. )
  230. {
  231. #print "file          $fullpath\$noden";
  232. $added_file_list_table{lc("$fullpath\$node")} = 1;
  233. $result .= "# Begin Source File n";
  234. $result .= "SOURCE=$fullpath\$noden";
  235. $result .= "# End Source File n";
  236. $added_file_list_table_cnt ++;
  237. }
  238. }
  239. }
  240. closedir $dir;
  241. $result .= "# End Group "$path"n" if($level>1);
  242. $level--;
  243. #print "$resultnnn";
  244. return $result;
  245. }
  246. my $trace_tree = 0;
  247. sub  create_file_list
  248. {
  249. my $lib = shift;
  250. my $list_set = "";
  251. my @unsort;
  252. foreach my $file (sort keys %file_list_table)
  253. {
  254. #next if(! -e "$lib/$file");
  255. next if(defined($added_file_list_table{lc($file)}));
  256. if(($file =~ /^(.*?\$lib)\/i) && ($trace_tree != 1))
  257. {
  258. my $root = $1;
  259. #print "root = $root,    $filen";
  260. $list_set .= create_group_source_tree(0,$root,$lib);
  261. #print "$list_set";
  262. $trace_tree = 1;
  263. }
  264. if(!defined($added_file_list_table{lc($file)}))#else
  265. {
  266. push @unsort,$file;
  267. }
  268. }
  269. $list_set .= "# Begin Group "Misc"n";
  270. foreach my $file (sort @unsort)
  271. {
  272. $list_set .= "# Begin Source File n";
  273. $list_set .= "SOURCE=$filen";
  274. $list_set .= "# End Source File n";
  275. }
  276. $list_set .= "# End Group "Misc"n";
  277. my $result;
  278. $result = <<__STRING__
  279. # Begin Group "$lib"n
  280. $list_set
  281. # End Group "$lib"n
  282. # End Target
  283. # End Project
  284. __STRING__
  285. ;
  286. return $result;
  287. }
  288. sub create_file_table
  289. {
  290. my $lib = shift;
  291. my $file_list = lc(shift);
  292. foreach my $file (split("n",$file_list))
  293. {
  294. $file_list_table{lc($file)} = 1;
  295. #print "$filen";
  296. }
  297. }
  298. sub create_lib_project
  299. {
  300. my $root = shift;
  301. my $src_filename = shift;
  302. my $des_filename = shift;
  303. my @S_data;
  304. my $line;
  305. my $result = '';
  306. open S, "<$src_filename" or die "Can't open $src_filename";
  307. @S_data = <S>;
  308. close S;
  309. foreach $line (@S_data){
  310. $result .= $line;
  311. }
  312. $result .= create_file_list($root);
  313. #print "Write $dep_filenamen";
  314. open F,">$des_filename" or die "Can't open $des_filename";
  315. print F $result;
  316. close F;
  317. }
  318. sub is_in_list1
  319. {
  320. my $item = shift;
  321. my $list = shift;
  322. return 0 if(!defined($list));
  323. while( $list =~ /(S+)/g)
  324. {
  325. my $i=$1;
  326. return 1 if( $item =~ /^$iW/is);
  327. return 1 if( $item =~ /^$i$/is);
  328. return 1 if( $item =~ /W$i$/si);
  329. return 1 if( $item =~ /W$iW/si);
  330. }
  331. return 0;
  332. }