# Sconstruct file for P4OfficeDiff import string, os, re, glob, pprint def filename(p): # Return filename bit return os.path.split(p)[1] VB6 = r'"C:\Program Files (x86)\Microsoft Visual Studio\VB98\VB6.exe"' MSBUILD = r'"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe"' INNOSETUP = r'"C:\Program Files (x86)\Inno Setup 5\iscc.exe"' #--------------------------------- # Also VB scanner for dependencies like: # Module=Register; Register.bas # Form=TimerForm.frm # Form=p4vbTestForm.frm # Class=WinHelp; WinHelp.cls vbp_module_re = re.compile(r'^Module=\S+; (\S+)\s*$', re.M) vbp_form_re = re.compile(r'^Form=(\S+)\s*$', re.M) vbp_class_re = re.compile(r'^Class=\S+; (\S+)\s*$', re.M) def vbp_scan(node, env, target, arg): contents = node.get_contents() includes = vbp_module_re.findall(contents) includes += vbp_form_re.findall(contents) includes += vbp_class_re.findall(contents) return includes vbpscan = Scanner(name = 'vbp', function = vbp_scan, argument = None, skeys = ['.vbp']) scanners = Environment().Dictionary('SCANNERS') #--------------------------------- # Scan MSDEV SLN file for dependencies vcxproj_re = re.compile(r'<File\s+RelativePath="([^"]*)', re.M) vcxproj_re_exclude = re.compile(r'.*_i\..*') def vcxproj_scan(node, env, target, arg): # print "Node: " + node.name + ': ' + node.get_abspath() contents = node.get_contents() includes = vcxproj_re.findall(contents) # print "Includes: " + ' '.join(includes) # Remove files generated by MIDL compiler (e.g. *_i.c or similar) includes = filter(lambda x:not vcxproj_re_exclude.match(x), includes) # print "Filtered Includes: " + ' '.join(includes) return includes vcxprojscan = Scanner(name = 'vcxproj', function = vcxproj_scan, argument = None, skeys = ['.vcxproj']) #--------------------------------- # Builder for Setup compiler mkinstall = Builder(action = INNOSETUP + ' $SOURCES') msvb = Builder(action = VB6 + ' /make $SOURCES') msbuild = Builder(action = MSBUILD + ' $SOURCES /p:Configuration=Release') files_dir = 'install/files' setup = 'install/Output/P4OfficeDiffSetup.exe' p4officediff = 'src/p4officediff.exe' update_settings = 'update_settings/Release/update_settings.exe' # Default target to build Default(setup) vars_to_copy = ['PATH', 'TEMP', 'TMP', 'SYSTEMDRIVE', 'SYSTEMROOT'] env_vars = {} for k in vars_to_copy: env_vars[k] = os.environ[k] env = Environment(BUILDERS = {'mkinstall' : mkinstall, 'msbuild' : msbuild, 'msvb' : msvb}, SCANNERS = scanners + [vbpscan, vcxprojscan], ENV = env_vars) FILES = [] env.Install(dir = files_dir, source = FILES) for f in FILES: env.Depends(setup, files_dir + '/' + filename(f)) env.msvb(target = p4officediff, source = 'src/p4officediff.vbp') env.msbuild(target = update_settings, source = 'update_settings/update_settings.vcxproj') for f in [p4officediff, update_settings]: env.Install(dir = files_dir, source = f) env.Depends(setup, files_dir + '/' + filename(f)) env.mkinstall(target = setup, source = 'install/P4OfficeDiffSetup.iss')
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#4 | 11861 | Robert Cowham | Tweak environment to allow msbuild to work | ||
#3 | 11852 | Robert Cowham | Remove tabs | ||
#2 | 11849 | Robert Cowham |
Fix Mac line endings. Get Scons working with MSBuild and update project file to use VS2010 |
||
#1 | 11846 | Robert Cowham | Rename P4WordDiff to P4OfficeDiff - start of process | ||
//guest/robert_cowham/p4worddiff/main/Sconstruct | |||||
#2 | 11599 | Robert Cowham |
Steps along the way. Basic project works (P4WordDiff) - removed dependency on outdated OCX. Also works better with Word 2010/13 Update_settings project updated to Visual Studio 2013 and compiles, even if it doesn't work yet! |
||
#1 | 11587 | Robert Cowham |
Initial project from internal sources. Needs updating (fgorm 2008 technology)! |