Changeset 9df9609 in rtems-libbsd for freebsd-to-rtems.py


Ignore:
Timestamp:
Mar 9, 2012, 3:04:44 PM (8 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.11, afaeccc05a556f6aa25ba044a7e49d6aa634a59e, freebsd-9.3, master
Children:
89217b5
Parents:
1a63f04
Message:

Initial addition of target specific files

+ This was needed for in_cksum.c.
+ Generic in_cksum.c does not include all needed methods.
+ generic in_cksum.c is generally sub-optimal.
+ Only PowerPC support merged.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • freebsd-to-rtems.py

    r1a63f04 r9df9609  
    4949isOnlyMakefile = False
    5050tempFile = "/tmp/tmp_FBRT"
     51filesChanged = 0
    5152
    5253def usage():
     
    151152        return path
    152153
     154# Move target dependent files under a machine directory
     155def mapCPUDependentPath(path):
     156        return path.replace("include/", "include/freebsd/machine/")
     157
     158# compare and overwrite destination file only if different
     159def copyIfDifferent(new, old):
     160        global filesChanged
     161        if not os.path.exists(old) or \
     162           filecmp.cmp(new, old, shallow=False) == False:
     163                shutil.move(new, old)
     164                filesChanged += 1
     165                # print "Move " + new + " to " + old
     166                return True
     167        return False
     168
    153169# generate an empty file as a place holder
    154170def installEmptyFile(src):
     
    186202        return data
    187203
    188 # compare and overwrite destination file only if different
    189 def copyIfDifferent(new, old):
    190         if filecmp.cmp(new, old, shallow=False) == False:
    191                 shutil.move(new, old)
    192                 # print "Move " + new + " to " + old
    193                 return True
    194         return False
    195        
    196    
    197204# Copy a header file from FreeBSD to the RTEMS BSD tree
    198 def installHeaderFile(org):
     205def installHeaderFile(org, target):
    199206        global tempFile
    200207        src = FreeBSD_DIR + '/' + org
    201208        dst = RTEMS_DIR + '/' + PREFIX + '/' + org # + org.replace('rtems/', '')
    202209        dst = mapContribPath(dst)
     210        if target != "generic":
     211                dst = mapCPUDependentPath(dst)
    203212        if isDryRun == True:
    204213                if isVerbose == True:
     
    246255
    247256# Revert a header file from the RTEMS BSD tree to the FreeBSD tree
    248 def revertHeaderFile(org):
     257def revertHeaderFile(org, target):
    249258        src = RTEMS_DIR + '/' + PREFIX + '/' + org.replace('rtems/', '')
    250259        src = mapContribPath(src)
     
    258267        except OSError:
    259268                pass
     269        if target != "generic":
     270                print "Do not yet know how to revert target dependent files"
     271                sys.exit(1)
    260272        data = open(src).read()
    261273        out = open(dst, 'w')
     
    293305                return
    294306        try:
    295                 shutil.rmtree(RTEMS_DIR)
     307                print "Deleting output directory needs to be more precise"
     308                #shutil.rmtree(RTEMS_DIR)
    296309        except OSError:
    297310            pass
     
    314327                for m in self.modules:
    315328                        for f in m.headerFiles:
    316                                 installHeaderFile(f)
     329                                installHeaderFile(f, m.target)
    317330                        for f in m.sourceFiles:
    318331                                installSourceFile(f)
     
    321334                for m in self.modules:
    322335                        for f in m.headerFiles:
    323                                 revertHeaderFile(f)
     336                                revertHeaderFile(f, m.target)
    324337                        for f in m.sourceFiles:
    325338                                revertSourceFile(f)
    326339
    327340        def createMakefile(self):
    328                 if isVerbose == True:
    329                         print "Create Makefile"
     341                global tempFile
    330342                if isDryRun == True:
     343                        if isVerbose == True:
     344                                print "Create Makefile"
    331345                        return
    332346                data = 'include config.inc\n' \
     
    339353                        'CFLAGS += -I . \n' \
    340354                        'CFLAGS += -I rtemsbsd \n' \
     355                        'CFLAGS += -I freebsd/$(RTEMS_CPU)/include \n' \
    341356                        'CFLAGS += -I contrib/altq \n' \
    342357                        'CFLAGS += -I contrib/pf \n' \
     
    347362                data += 'C_FILES ='
    348363                for m in self.modules:
    349                         for f in m.sourceFiles:
    350                                 f = PREFIX + '/' + f
    351                                 f = mapContribPath(f)
    352                                 data += ' \\\n\t' + f
     364                        if m.target == "generic":
     365                                for f in m.sourceFiles:
     366                                        f = PREFIX + '/' + f
     367                                        f = mapContribPath(f)
     368                                        data += ' \\\n\t' + f
     369                data += '\n'
     370                data += '# RTEMS Project Owned Files\n'
     371                data += 'C_FILES +='
    353372                for f in rtems_sourceFiles:
    354                         f = 'rtemsbsd/' + f
    355                         data += ' \\\n\t' + f
    356 
    357                 data += '\nC_O_FILES = $(C_FILES:%.c=%.o)\n' \
     373                        data += ' \\\n\trtemsbsd/' + f
     374                data += '\n'
     375                data += '\n'
     376                for m in self.modules:
     377                        if m.target != "generic":
     378                                data += "ifeq ($(RTEMS_CPU)," + m.target + ")\n"
     379                                data += "C_FILES +="
     380                                for f in m.sourceFiles:
     381                                        f = PREFIX + '/' + f
     382                                        f = mapContribPath(f)
     383                                        data += ' \\\n\t' + f
     384                                data += '\n'
     385                                data += 'endif\n'
     386                       
     387
     388                data += '\n' \
     389                        'C_O_FILES = $(C_FILES:%.c=%.o)\n' \
    358390                        'C_DEP_FILES = $(C_FILES:%.c=%.dep)\n' \
    359391                        '\n' \
     
    381413                        '\n' \
    382414                        '-include $(C_DEP_FILES)\n'
    383                 out = open(RTEMS_DIR + '/Makefile', 'w')
     415                out = open(tempFile, 'w')
    384416                out.write(data)
    385417                out.close()
     418                makefile = RTEMS_DIR + '/Makefile'
     419                if copyIfDifferent(tempFile, makefile) == True:
     420                        if isVerbose == True:
     421                                print "Create Makefile"
    386422
    387423# Module - logical group of related files we can perform actions on
     
    389425        def __init__(self, name):
    390426                self.name = name
     427                self.target = "generic"
    391428                self.headerFiles = []
    392429                self.sourceFiles = []
    393430                self.dependencies = []
    394431
     432        def setTarget(self, value):
     433                self.target = value
     434               
    395435        def addHeaderFiles(self, files):
    396436                self.headerFiles.extend(files)
     
    404444                self.sourceFiles.extend(files)
    405445                for file in files:
    406                         if file[-2] != '.' or file[-1] != 'c':
     446                        if file[-2] != '.' or \
     447                           (file[-1] != 'c' and file[-1] != 'S'):
    407448                                print "*** " + file + " does not end in .c"
    408449                                print "*** Move it to a header file list"
     
    418459
    419460rtems_headerFiles = [
    420         'rtems/machine/in_cksum.h',  # logically a net file
    421461        'rtems/machine/atomic.h',
    422462        'rtems/machine/_bus.h',
     
    9971037                'kern/kern_mbuf.c',
    9981038                'kern/kern_module.c',
    999                 'kern/kern_subr.c',
    10001039                'kern/kern_sysctl.c',
    10011040                'kern/subr_bus.c',
     
    10601099
    10611100netDeps = Module('netDeps')
    1062 # logically machine/in_cksum.h is part of this group but RTEMS provides its own
    10631101netDeps.addHeaderFiles(
    10641102        [
     
    11481186net.addSourceFiles(
    11491187        [
     1188                'kern/kern_subr.c',
    11501189                'net/bridgestp.c',
    11511190                'net/ieee8023ad_lacp.c',
     
    12721311        ]
    12731312)
     1313# in_cksum.c is architecture dependent
    12741314netinet.addSourceFiles(
    12751315        [
     
    12811321                'netinet/igmp.c',
    12821322                'netinet/in.c',
    1283                 'netinet/in_cksum.c',
    12841323                'netinet/in_gif.c',
    12851324                'netinet/in_mcast.c',
     
    16401679)
    16411680
     1681# contrib/pf Module
    16421682pf = Module('pf')
    16431683pf.addHeaderFiles(
     
    16651705)
    16661706
     1707# ARM Architecture Specific Files Module
     1708armDependent = Module('armDependent')
     1709armDependent.setTarget("arm")
     1710armDependent.addHeaderFiles(
     1711        [
     1712                'arm/include/in_cksum.h',
     1713        ]
     1714)
     1715armDependent.addSourceFiles(
     1716        [
     1717                'arm/arm/in_cksum.c',
     1718                'arm/arm/in_cksum_arm.S',
     1719        ]
     1720)
     1721
     1722# i386 Architecture Specific Files Module
     1723i386Dependent = Module('i386Dependent')
     1724i386Dependent.setTarget("i386")
     1725i386Dependent.addHeaderFiles(
     1726        [
     1727                'i386/include/in_cksum.h',
     1728        ]
     1729)
     1730i386Dependent.addSourceFiles(
     1731        [
     1732                'i386/i386/in_cksum.c',
     1733        ]
     1734)
     1735
     1736# MIPS Architecture Specific Files Module
     1737mipsDependent = Module('mipsDependent')
     1738mipsDependent.setTarget("mips")
     1739mipsDependent.addHeaderFiles(
     1740        [
     1741                'mips/include/in_cksum.h',
     1742        ]
     1743)
     1744mipsDependent.addSourceFiles(
     1745        [
     1746                'mips/mips/in_cksum.c',
     1747        ]
     1748)
     1749
     1750# PowerPC Architecture Specific Files Module
     1751powerpcDependent = Module('powerpcDependent')
     1752powerpcDependent.setTarget("powerpc")
     1753powerpcDependent.addHeaderFiles(
     1754        [
     1755                'powerpc/include/in_cksum.h',
     1756        ]
     1757)
     1758powerpcDependent.addSourceFiles(
     1759        [
     1760                'powerpc/powerpc/in_cksum.c',
     1761        ]
     1762)
     1763
     1764# SPARC64 Architecture Specific Files Module
     1765sparc64Dependent = Module('cpu_dependent')
     1766sparc64Dependent.setTarget("powerpc")
     1767sparc64Dependent.addHeaderFiles(
     1768        [
     1769                'sparc64/include/in_cksum.h',
     1770        ]
     1771)
     1772sparc64Dependent.addSourceFiles(
     1773        [
     1774                'sparc64/sparc64/in_cksum.c',
     1775        ]
     1776)
     1777
     1778# Add Empty Files
    16671779mm.addEmptyFiles(
    16681780        [
     
    17321844mm.addModule(devNet)
    17331845
    1734 # mm.addModule(rtems)
    17351846mm.addModule(local)
    17361847mm.addModule(devUsbBase)
     
    17411852mm.addModule(cam)
    17421853mm.addModule(devUsbStorage)
    1743 
    17441854#mm.addModule(devUsbNet)
     1855
     1856# Now add CPU Architecture Dependent Modules
     1857#mm.addModule(armDependent)
     1858#mm.addModule(i386Dependent)
     1859#mm.addModule(mipsDependent)
     1860mm.addModule(powerpcDependent)
     1861#mm.addModule(sparc64Dependent)
    17451862
    17461863# Perform the actual file manipulation
     
    17521869    mm.revertFiles()
    17531870
     1871if filesChanged == 1:
     1872    print str(filesChanged) + " file was changed."
     1873else:
     1874    print str(filesChanged) + " files were changed."
Note: See TracChangeset for help on using the changeset viewer.