Changeset 3750


Ignore:
Timestamp:
10/03/11 11:44:07 (3 years ago)
Author:
vtchill
Message:

Added option --lib-dir to scons build system to specify a shared library install location. The shared library generated will now contain an soname that will be libfife.so.major. Also changed the generated shared library name to be libfife.so.major.minor.release. Added a version.h file to engine/core that will contain the current fife major, minor, and subminor versions and should be updated for each fife release. [t:575]

Location:
branches/active/0.3.3dev
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • branches/active/0.3.3dev/SConstruct

    r3664 r3750  
    106106                help='Forces fife to use the local version of tinyxml that ships with fife', 
    107107                default=False) 
     108 
     109AddOption('--lib-dir', 
     110                dest='lib-dir', 
     111                nargs=1, type='string', 
     112                action='store', 
     113                metavar='DIR', 
     114                help='Shared Library install location')  
    108115                 
    109116#************************************************************************** 
     
    174181        prefix = env['DESTDIR'] + prefix 
    175182        pythonprefix = env['DESTDIR'] + pythonprefix 
     183 
     184libdir = GetOption('lib-dir') 
     185if libdir is None: 
     186        libdir = os.path.join(prefix, 'lib') 
     187else: 
     188        libdir = os.path.join(prefix, libdir) 
     189         
     190env['LIBDIR'] = libdir 
    176191 
    177192#************************************************************************** 
     
    339354                'DEBUG' : debug, 
    340355                'PREFIX' : prefix, 
     356                'LIBDIR' : libdir, 
    341357                'TESTLIBS' : ['fife', 'UnitTest++'], 
    342358                'PYTHON_PREFIX' : pythonprefix, 
     
    344360                'PYLIB_COPY_DEST' : os.path.join('#engine', 'python', 'fife')} 
    345361 
     362opts['FIFE_VERSION'] = utils.get_fife_version(os.path.join(opts['SRC'], 'core')); 
     363 
    346364if debug: 
    347365        opts['LIBPATH'] = os.path.join(os.getcwd(), 'build', 'engine', 'debug') 
  • branches/active/0.3.3dev/build/linux2-config.py

    r3744 r3750  
    4141 
    4242        env.Append(LIBPATH = [os.path.join('/', 'opt', 'lib'), 
    43                                                   extlibpath]) 
     43                                                  extlibpath, 
     44                                                  env.subst('$LIBDIR')]) 
    4445         
    4546        env.AppendENVPath('LD_RUN_PATH', os.path.join('..', '..', '..', extlibpath)) 
  • branches/active/0.3.3dev/engine/SConscript

    r3398 r3750  
    127127                                                                  OBJPREFIX='shared_', 
    128128                                                                  SHLIBEMITTER = '') 
    129 else: 
     129elif sys.platform == 'darwin': 
    130130        sharedlib = env.SharedLibrary(target = fife_tgt, 
    131131                                                                  source = compilefiles) 
     132else: 
     133        # soname will be libfife.so.major 
     134        majorVersion = opts['FIFE_VERSION'].split('.')[0]        
     135        soname = env.subst('$SHLIBPREFIX') + fife_tgt + env.subst('$SHLIBSUFFIX') + '.' + majorVersion 
     136        sharedlib = env.SharedLibrary(target = fife_tgt, 
     137                                                                  source = compilefiles, 
     138                                                                  SHLIBSUFFIX = env.subst('$SHLIBSUFFIX') + '.' + opts['FIFE_VERSION'], 
     139                                                                  LINKFLAGS=['-Wl,-soname,' + str(soname)]) 
    132140 
    133141#************************************************************************** 
     
    180188#TODO: This is not complete.  Because of the current linux rpath issue this 
    181189#will not work as expected. 
    182 install_static = env.Install(os.path.join(opts['PREFIX'], 'lib'), staticlib) 
    183 install_shared = env.Install(os.path.join(opts['PREFIX'], 'lib'), sharedlib) 
     190install_static = env.Install(opts['LIBDIR'], staticlib) 
     191install_shared = env.Install(opts['LIBDIR'], sharedlib) 
    184192 
    185193headerdestlist = utils.gen_dest_files(os.path.join(opts['PREFIX'], 'include', 'fife'), headerfiles) 
  • branches/active/0.3.3dev/utils/scons/scons_utils.py

    r3541 r3750  
    2323 
    2424import os, sys 
     25import re 
    2526from string import Template 
    2627 
     
    108109        interfacefile = os.path.join(outdir, 'fife.i') 
    109110        open(interfacefile, 'w').write(template.substitute(inclusions=inclusions)) 
     111 
     112def get_fife_version(srcpath): 
     113    MAJOR_VERSION_PATTERN = re.compile(r"#define\s+FIFE_MAJOR_VERSION\s+(.*)") 
     114    MINOR_VERSION_PATTERN = re.compile(r"#define\s+FIFE_MINOR_VERSION\s+(.*)") 
     115    SUBMINOR_VERSION_PATTERN = re.compile(r"#define\s+FIFE_SUBMINOR_VERSION\s+(.*)") 
     116     
     117    patterns = [MAJOR_VERSION_PATTERN, 
     118                MINOR_VERSION_PATTERN, 
     119                SUBMINOR_VERSION_PATTERN] 
     120         
     121    source = open(os.path.join(srcpath, 'version.h'), 'r').read() 
     122    versionInfo = [] 
     123    for pattern in patterns: 
     124        match = pattern.search(source) 
     125        if match: 
     126                        versionInfo.append(match.group(1).strip()) 
     127             
     128    return '.'.join(versionInfo) 
Note: See TracChangeset for help on using the changeset viewer.