xref: /utopia/UTPA2-700.0.x/CreateTag.sh (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1# How to use:
2#@sh    CreateKsym.sh
3# step:
4# 1. build utpa2k.ko first
5# 2. run script
6# 3. (if necessary) fix symbol which is exported twice
7# 4. mv Ksym/Ksym.c to /modules/msos/msos/linux_kernel_V2
8# 5. rebuild utpa2k.ko
9
10function CreateKsymCFile()
11{
12    if [ -e Ksym ];then
13        rm -rf Ksym
14    fi
15    rm -f nm_symbol.txt preprocess.txt
16    mkdir Ksym
17    echo "#include \"MsTypes.h\"" >> Ksym/Ksym.c
18    echo "#include \"MsCommon.h\"" >> Ksym/Ksym.c
19    echo "#include \"MLog.h\"" >> Ksym/Ksym.c
20    echo "#include \"apiACP.h\"" >> Ksym/Ksym.c
21    echo "#include \"apiAUDIO.h\"" >> Ksym/Ksym.c
22    echo "#include \"apiCEC.h\"" >> Ksym/Ksym.c
23    echo "#include \"apiDAC.h\"" >> Ksym/Ksym.c
24    echo "#include \"apiDMS.h\"" >> Ksym/Ksym.c
25    echo "#include \"apiDMX.h\"" >> Ksym/Ksym.c
26    echo "#include \"apiDMX_tee.h\"" >> Ksym/Ksym.c
27    echo "#include \"apiDMX_tsio.h\"" >> Ksym/Ksym.c
28   ## echo "#include \"apiGFX.h\"" >> Ksym/Ksym.c
29    echo "#include \"apiGOP.h\"" >> Ksym/Ksym.c
30    echo "#include \"apiGOPSC_Ex.h\"" >> Ksym/Ksym.c
31    echo "#include \"apiGOP_SC.h\"" >> Ksym/Ksym.c
32    echo "#include \"apiGPD.h\"" >> Ksym/Ksym.c
33    echo "#include \"apiGPD_v2.h\"" >> Ksym/Ksym.c
34    echo "#include \"apiHDMITx.h\"" >> Ksym/Ksym.c
35    echo "#include \"apiHDMITx2.h\"" >> Ksym/Ksym.c
36    echo "#include \"apiJPEG.h\"" >> Ksym/Ksym.c
37    echo "#include \"apiJPEG_v2.h\"" >> Ksym/Ksym.c
38    echo "#include \"apiLD.h\"" >> Ksym/Ksym.c
39    echo "#include \"drvMBX.h\"" >> Ksym/Ksym.c
40    echo "#include \"apiMFE_v2.h\"" >> Ksym/Ksym.c
41    echo "#include \"apiMHL.h\"" >> Ksym/Ksym.c
42    echo "#include \"apiPNL.h\"" >> Ksym/Ksym.c
43    echo "#include \"apiPNL_EX.h\"" >> Ksym/Ksym.c
44    echo "#include \"apiSWI2C.h\"" >> Ksym/Ksym.c
45    echo "#include \"apiVDEC.h\"" >> Ksym/Ksym.c
46    echo "#include \"apiVDEC_EX.h\"" >> Ksym/Ksym.c
47    echo "#include \"apiVDEC_EX_v2.h\"" >> Ksym/Ksym.c
48    echo "#include \"apiVOIPMFE.h\"" >> Ksym/Ksym.c
49    echo "#include \"apiXC.h\"" >> Ksym/Ksym.c
50    echo "#include \"apiXC_Ace.h\"" >> Ksym/Ksym.c
51    echo "#include \"apiXC_Ace_EX.h\"" >> Ksym/Ksym.c
52    echo "#include \"apiXC_Adc.h\"" >> Ksym/Ksym.c
53    echo "#include \"apiXC_EX.h\"" >> Ksym/Ksym.c
54    echo "#include \"apiXC_Adc_EX.h\"" >> Ksym/Ksym.c
55    echo "#include \"apiXC_Auto.h\"" >> Ksym/Ksym.c
56    echo "#include \"apiXC_Auto_EX.h\"" >> Ksym/Ksym.c
57    echo "#include \"apiXC_DWIN.h\"" >> Ksym/Ksym.c
58    echo "#include \"apiXC_PCMonitor.h\"" >> Ksym/Ksym.c
59    echo "#include \"apiXC_ModeParse.h\"" >> Ksym/Ksym.c
60    echo "#include \"apiXC_DWIN_EX.h\"" >> Ksym/Ksym.c
61    echo "#include \"apiXC_Dlc.h\"" >> Ksym/Ksym.c
62    echo "#include \"apiXC_ModeParse_EX.h\"" >> Ksym/Ksym.c
63    echo "#include \"apiXC_PCMonitor_EX.h\"" >> Ksym/Ksym.c
64    echo "#include \"apiXC_VMark.h\"" >> Ksym/Ksym.c
65    echo "#include \"apiXC_VMark_EX.h\"" >> Ksym/Ksym.c
66    echo "#include \"asmCPU.h\"" >> Ksym/Ksym.c
67    echo "#include \"drvAESDMA.h\"" >> Ksym/Ksym.c
68    echo "#include \"drvCIPHER.h\"" >> Ksym/Ksym.c
69    echo "#include \"drvAUDIO.h\"" >> Ksym/Ksym.c
70    echo "#include \"drvAVD.h\"" >> Ksym/Ksym.c
71    echo "#include \"drvBDMA.h\"" >> Ksym/Ksym.c
72    echo "#include \"drvCA.h\"" >> Ksym/Ksym.c
73    echo "#include \"drvCA_v2.h\"" >> Ksym/Ksym.c
74    echo "#include \"drvCH34.h\"" >> Ksym/Ksym.c
75    echo "#include \"drvCIPHER_v2.h\"" >> Ksym/Ksym.c
76    echo "#include \"drvCLKM.h\"" >> Ksym/Ksym.c
77    echo "#include \"drvCMAPool_v2.h\"" >> Ksym/Ksym.c
78    echo "#include \"drvCMDQ.h\"" >> Ksym/Ksym.c
79    echo "#include \"drvCPU.h\"" >> Ksym/Ksym.c
80    echo "#include \"drvDDC2BI.h\"" >> Ksym/Ksym.c
81    echo "#include \"drvDIP.h\"" >> Ksym/Ksym.c
82    echo "#include \"drvDMD_ATSC.h\"" >> Ksym/Ksym.c
83    echo "#include \"drvDMD_ATSC_v2.h\"" >> Ksym/Ksym.c
84    echo "#include \"drvDMD_DTMB.h\"" >> Ksym/Ksym.c
85    echo "#include \"drvDMD_DTMB_v2.h\"" >> Ksym/Ksym.c
86    echo "#include \"drvDMD_common.h\"" >> Ksym/Ksym.c
87    echo "#include \"drvDMD_ISDBT.h\"" >> Ksym/Ksym.c
88    echo "#include \"drvDMD_ISDBT_v2.h\"" >> Ksym/Ksym.c
89    echo "#include \"drvDMD_VD_MBX.h\"" >> Ksym/Ksym.c
90    echo "#include \"drvDMD_INTERN_ATSC.h\"" >> Ksym/Ksym.c
91    echo "#include \"drvDMD_INTERN_DVBC.h\"" >> Ksym/Ksym.c
92    echo "#include \"drvDMD_INTERN_DVBC_v2.h\"" >> Ksym/Ksym.c
93    echo "#include \"drvDMD_INTERN_DVBS.h\"" >> Ksym/Ksym.c
94    echo "#include \"drvDMD_INTERN_DVBS_v2.h\"" >> Ksym/Ksym.c
95    echo "#include \"drvDMD_INTERN_DVBT.h\"" >> Ksym/Ksym.c
96    echo "#include \"drvDMD_INTERN_DVBT_v2.h\"" >> Ksym/Ksym.c
97    echo "#include \"drvDMD_INTERN_DVBT2.h\"" >> Ksym/Ksym.c
98    echo "#include \"drvDMD_INTERN_DVBT2_v2.h\"" >> Ksym/Ksym.c
99    echo "#include \"drvDSCMB.h\"" >> Ksym/Ksym.c
100    echo "#include \"drvDSCMB_v2.h\"" >> Ksym/Ksym.c
101    echo "#include \"drvEMMFlt.h\"" >> Ksym/Ksym.c
102    echo "#include \"drvGPIO.h\"" >> Ksym/Ksym.c
103    echo "#include \"drvHDCP.h\"" >> Ksym/Ksym.c
104    echo "#include \"drvHVD.h\"" >> Ksym/Ksym.c
105    echo "#include \"drvHWI2C.h\"" >> Ksym/Ksym.c
106    echo "#include \"drvIPAUTH.h\"" >> Ksym/Ksym.c
107    echo "#include \"drvIR.h\"" >> Ksym/Ksym.c
108    echo "#include \"drvIRQ.h\"" >> Ksym/Ksym.c
109    echo "#include \"drvLDM.h\"" >> Ksym/Ksym.c
110    echo "#include \"drvMFC.h\"" >> Ksym/Ksym.c
111    ###echo "#include \"drvMIU.h\"" >> Ksym/Ksym.c
112    echo "#include \"drvMMIO.h\"" >> Ksym/Ksym.c
113    echo "#include \"drvMPIF.h\"" >> Ksym/Ksym.c
114    echo "#include \"drvMSPI.h\"" >> Ksym/Ksym.c
115    echo "#include \"drvMVD.h\"" >> Ksym/Ksym.c
116    echo "#include \"drvMVOP.h\"" >> Ksym/Ksym.c
117    echo "#include \"drvMVOP_v2.h\"" >> Ksym/Ksym.c
118    echo "#include \"drvNDS.h\"" >> Ksym/Ksym.c
119    echo "#include \"drvNSK2.h\"" >> Ksym/Ksym.c
120    echo "#include \"drvPARFLASH.h\"" >> Ksym/Ksym.c
121    echo "#include \"drvPCMCIA.h\"" >> Ksym/Ksym.c
122    echo "#include \"drvPM.h\"" >> Ksym/Ksym.c
123    ##lsy++
124    ##echo "#include \"drvPQ.h\"" >> Ksym/Ksym.c
125    ##echo "#include \"drvPQ_cus.h\"" >> Ksym/Ksym.c
126    echo "#include \"drvPVR_IframeLUT.h\"" >> Ksym/Ksym.c
127    echo "#include \"drvPWM.h\"" >> Ksym/Ksym.c
128    echo "#include \"drvPWS.h\"" >> Ksym/Ksym.c
129    echo "#include \"drvRTC.h\"" >> Ksym/Ksym.c
130    echo "#include \"drvRVD.h\"" >> Ksym/Ksym.c
131    echo "#include \"drvSAR.h\"" >> Ksym/Ksym.c
132    echo "#include \"drvSC.h\"" >> Ksym/Ksym.c
133    echo "#include \"drvSEAL.h\"" >> Ksym/Ksym.c
134    echo "#include \"drvSEM.h\"" >> Ksym/Ksym.c
135    echo "#include \"drvSERFLASH.h\"" >> Ksym/Ksym.c
136    echo "#include \"drvSMBX.h\"" >> Ksym/Ksym.c
137    echo "#include \"drvSYS.h\"" >> Ksym/Ksym.c
138    echo "#include \"drvTCF.h\"" >> Ksym/Ksym.c
139    echo "#include \"drvTVEncoder.h\"" >> Ksym/Ksym.c
140    echo "#include \"drvUART.h\"" >> Ksym/Ksym.c
141    echo "#include \"drvURDMA.h\"" >> Ksym/Ksym.c
142    echo "#include \"drvVBI.h\"" >> Ksym/Ksym.c
143    echo "#include \"drvVIF.h\"" >> Ksym/Ksym.c
144    echo "#include \"drvWBLE.h\"" >> Ksym/Ksym.c
145    echo "#include \"drvWDT.h\"" >> Ksym/Ksym.c
146    echo "#include \"drvXC_HDMI_if.h\"" >> Ksym/Ksym.c
147    echo "#include \"drvXC_HDMI_if_EX.h\"" >> Ksym/Ksym.c
148    echo "#include \"drv_IR_TX.h\"" >> Ksym/Ksym.c
149    echo "#include \"drv_gop_sc.h\"" >> Ksym/Ksym.c
150    ###echo "#include \"apiGFX.h\"" >> Ksym/Ksym.c
151    echo "#include \"apiVDEC_EX.h\"" >> Ksym/Ksym.c
152    echo "#include \"apiXC.h\"" >> Ksym/Ksym.c
153    echo "#include \"drvCIPHER.h\"" >> Ksym/Ksym.c
154    echo "#include \"drvDMD_common.h\"" >> Ksym/Ksym.c
155    echo "#include \"drvLDM.h\"" >> Ksym/Ksym.c
156    echo "#include \"drvSAR.h\"" >> Ksym/Ksym.c
157    echo "#include \"drvTVEncoder.h\"" >> Ksym/Ksym.c
158    echo "#include \"MsOS.h\"" >> Ksym/Ksym.c
159    echo "#include \"apiAUDIO.h\"" >> Ksym/Ksym.c
160    echo "#include \"apiDAC.h\"" >> Ksym/Ksym.c
161    echo "#include \"apiDMS.h\"" >> Ksym/Ksym.c
162    echo "#include \"apiDMX.h\"" >> Ksym/Ksym.c
163    echo "#include \"apiGOP.h\"" >> Ksym/Ksym.c
164    echo "#include \"apiPNL.h\"" >> Ksym/Ksym.c
165    echo "#include \"apiXC.h\"" >> Ksym/Ksym.c
166    echo "#include \"apiXC_DWIN.h\"" >> Ksym/Ksym.c
167    echo "#include \"apiXC_Dlc.h\"" >> Ksym/Ksym.c
168    echo "#include \"drvDMD_ATSC.h\"" >> Ksym/Ksym.c
169    echo "#include \"drvMVOP.h\"" >> Ksym/Ksym.c
170    echo "#include \"apiGOP.h\"" >> Ksym/Ksym.c
171    echo "#include \"apiXC_DBC.h\"" >> Ksym/Ksym.c
172    echo "#include \"apiMBX.h\"" >> Ksym/Ksym.c
173    echo "#include \"cusSAR.h\"" >> Ksym/Ksym.c
174    arm-none-linux-gnueabi-nm utpa2k.ko | grep " T " | awk '{print $3}' | grep "^M[Dd]rv\|^M[Aa]pi\|^MsOS" | awk '{print "EXPORT_SYMBOL("$1");"}' > nm_symbol.txt
175    find $PWD/../../mxlib/include/ -name "*.h" | xargs gcc -fpreprocessed -dD -E > preprocess.txt
176    ##lsy++
177    ##find $PWD/../../modules/pq -name "drvPQ.h" | xargs gcc -fpreprocessed -dD -E >> preprocess.txt
178    ##find $PWD/../../modules/pq -name "drvPQ_cus.h" | xargs gcc -fpreprocessed -dD -E >> preprocess.txt
179    grep "^\s*\#if\|^\s*\#ifdef\|^\s*\#else\|^\s*\#elif\|^\s*\#endif\|\s\s*\**M[Dd]rv_.*[;,]$\|\s\s*\**M[Aa]pi_.*[;,]$\|\s\s*MsOS_.*[;,]$" preprocess.txt | \
180        sed 's/^[ ]*//g' | \
181        grep -v "\#define\|typedef" | \
182        grep -v "\\\\" | \
183        awk 'BEGIN{FS="("}{if(substr($1,1,1)=="#"){print}else{if(NF>1){for(i=1;i<=(NF-1);i++){if((match($i,"M[Dd]rv_")>0)||(match($i,"M[Aa]pi_")>0)||(match($i,"MsOS_")>0))print $i}}}}' | \
184        sed 's/[*]*//g' | \
185        awk '{if(substr($1,1,1)=="#"){print}else{print "EXPORT_SYMBOL("$NF");";}}' \
186        >> Ksym/Ksym.c
187    mv Ksym/Ksym.c Ksym/Ksym_tmp.c
188    while read line
189    do
190        echo $line | grep "^\#ifndef.*_H_$\|^\#ifndef.*_H$\|^\#ifndef.*_H__$" -q
191        if [ $? == "0" ] ; then
192            echo $line | sed 's/#ifndef/#ifdef/g' >> Ksym/Ksym.c
193            continue
194        fi
195        echo $line | grep "^#" -q
196        if [ $? == "0" ] ; then
197            echo $line >> Ksym/Ksym.c
198            continue
199        fi
200        grep "$line" nm_symbol.txt -q
201        if [ $? == "0" ] ; then
202            echo $line >> Ksym/Ksym.c
203        fi
204    done < Ksym/Ksym_tmp.c
205    rm Ksym/Ksym_tmp.c
206# exception start
207# function
208    echo "EXPORT_SYMBOL(mdrv_gpio_set_high);" >> Ksym/Ksym.c
209    echo "EXPORT_SYMBOL(mdrv_gpio_set_low);" >> Ksym/Ksym.c
210    echo "EXPORT_SYMBOL(mdrv_gpio_set_input);" >> Ksym/Ksym.c
211    echo "EXPORT_SYMBOL(mdrv_gpio_init);" >> Ksym/Ksym.c
212    echo "EXPORT_SYMBOL(mdrv_gpio_get_level);" >> Ksym/Ksym.c
213    echo "EXPORT_SYMBOL(mdrv_gpio_get_inout);" >> Ksym/Ksym.c
214    echo "EXPORT_SYMBOL(MAsm_CPU_GetTrailOne);" >> Ksym/Ksym.c
215    ##echo "EXPORT_SYMBOL(MsAPI_CecTxSendPollingMsg);" >> Ksym/Ksym.c
216# global var
217    echo "EXPORT_SYMBOL(g_IPanel);" >> Ksym/Ksym.c
218    echo "EXPORT_SYMBOL(g_IPanelEx);" >> Ksym/Ksym.c
219    echo "EXPORT_SYMBOL(g_ACPMissingCounter);" >> Ksym/Ksym.c
220    echo "EXPORT_SYMBOL(g_AVMUTEMissingCounter);" >> Ksym/Ksym.c
221    echo "EXPORT_SYMBOL(g_AVIMissingCounter);" >> Ksym/Ksym.c
222    echo "EXPORT_SYMBOL(g_HdmiPollingStatus);" >> Ksym/Ksym.c
223# exception end
224}
225CreateKsymCFile
226