summaryrefslogtreecommitdiffstats
path: root/lib/libUPnP/Platinum/Build/Tools/Scripts/VsMake.py
blob: 07e0c3323fc698fa4c0b7dedc4fb26296c948ac7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#! /usr/bin/env python
"""

Visual Studio 2005 Build Script

$Id: VsMake.py 655 2010-09-29 22:40:22Z soothe $

"""

import os
import sys
import getopt
import subprocess

# Setup some path stuff
try:
    if environ['VISUALSTUDIO_BIN']:
        VSBINDIR = environ['VISUALSTUDIO_BIN']
except NameError:
    # Use default value for visual studio.
    VSBINDIR = 'C:/Program Files/Microsoft Visual Studio 8/Common7/IDE'
    print 'VISUALSTUDIO_BIN not set. Trying default value:'
    print '    ' + VSBINDIR
    print ''


# ------------------------------------------------------------
#       usage
# ------------------------------------------------------------
def usage(errMsg):
    try:
        print 'Error: %s' % (errMsg)
    except NameError:
        pass

    print 'Usage: '
    print '  %s -s <path to solution> -b [Release|Debug|etc.]' % (sys.argv[0])
    print ''
    print '    REQUIRED OPTIONS'
    print '\t-s <solution>'
    print '\t-b <configuration>'
    print ''
    print '    BUILD OPTIONS'
    print '\t-c\tMake clean'
    print '\t-r\tRe-build all'


# ------------------------------------------------------------
#       main
# ------------------------------------------------------------
try:
    opts, args = getopt.getopt(sys.argv[1:], "s:b:rc")
except getopt.GetoptError, (msg, opt):
#    print 'Error: invalid argument, %s: %s' % (opt, msg)
    usage('invalid argument, %s: %s' % (opt, msg))
    sys.exit(2)

# Build options
doingBuild = False
rebuildAll = False
makeClean = False

for opt, arg in opts:
    if opt == '-s':
        solutionFile = arg
        doingBuild = True
    elif opt == '-b':
        buildName = arg
        doingBuild = True
    elif opt == '-r':
        rebuildAll = True
        doingBuild = True
    elif opt == '-c':
        makeClean = True

if rebuildAll and makeClean:
    usage('Error cannot specify -c and -r together')
    sys.exit(2)

try:
    buildSwitch = 'build'
    if rebuildAll: buildSwitch = 'rebuild'
    elif makeClean: buildSwitch = 'clean'
        
    cmd_list = ['%s/devenv.com' % VSBINDIR, '/%s' % buildSwitch, buildName, solutionFile]
    cmd = " ".join(cmd_list)
    print 'Executing:'
    print cmd
    retVal = subprocess.call(cmd_list)
    # only the least sig 8 bits are the real return value
    if retVal != 0:
        print cmd
        print '** BUILD FAILURE **'
        sys.exit(retVal)
except NameError, (name):
    usage('missing argument %s' % (name))
    sys.exit(2)