blob: 245a34d79e1edff44f49fd8c82662fb55d1373d5 [file] [log] [blame]
#!/usr/bin/env python
# coding: UTF-8
import sys, getopt
import string
import struct
import operator
import re
import os
exclude_list = []
exclude_files = ''
link_ld_content = []
def usage():
print 'link_ld.py -i <input> -o <output>'
def exclude_list_search(inputfile):
global exclude_list
global exclude_files
global link_ld_content
fo = open(inputfile,'rb+')
line = "gaia"
while line:
line = fo.readline()
m0 = re.findall('\$(.+?\.o[bj]*)\$', line)
if m0:
exclude_list += m0
line = line.replace('$', '')
link_ld_content.append(line)
fo.close()
#print link_ld_content
exclude_list = list(dict.fromkeys(exclude_list))
#print exclude_list
exclude_files += " ".join(exclude_list)
def regen_link_ld(outputfile):
global exclude_list
global link_ld_content
fo = open(outputfile,'w')
line=link_ld_content.pop(0)
while line:
m0 = re.match('[ \t]*@\*@\(', line)
if m0:
line = line.replace(m0.group(0), "*(EXCLUDE_FILE(" + exclude_files +")")
#print m0.group(0)
#print line
fo.write(line)
line=link_ld_content.pop(0)
fo.close()
def main(argv):
inputfile = ''
outputfile = ''
try:
opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
except getopt.GetoptError:
usage()
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
usage()
sys.exit()
elif opt in ("-i", "--ifile"):
inputfile = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
print 'intput:', inputfile
print 'output:', outputfile
exclude_list_search(inputfile)
regen_link_ld(outputfile)
if '__main__'==__name__:
ret = main(sys.argv[1:])
sys.exit(ret)