addon-sdk/copy_source.py
author Vicamo Yang <vyang@mozilla.com>
Fri, 08 Mar 2013 00:12:56 +0800
changeset 124117 ed4682d0df21d2338e9dec72e5b280fc8cfb1c09
parent 124016 0887088eee1a3f8303f1afa26a15074cc081e554
child 150696 7c03811dad30e02fa4f0118ff5159246c0c129ef
permissions -rw-r--r--
Bug 833291 - Part 7/7: fix createMessageList(). r=hsinyi

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

import os
import posixpath
import sys


def normpath(path):
    """Ensure UNIX style paths are used with GNU make on Windows.

    This can be removed once we no longer support GNU make on Windows (bug
    828317).
    """
    if os.environ.get('PYMAKE') or os.name not in ('nt', 'ce'):
        return path

    if len(path) > 2 and path[1] == ':':
        path = '/' + path[0] + path[2:]

    return posixpath.normpath(path)


if len(sys.argv) != 4:
    print >> sys.stderr, "Usage: copy_source.py " \
                         "<topsrcdir> <source directory> <target directory>"
    sys.exit(1)

topsrcdir = normpath(sys.argv[1])
source_dir = sys.argv[2]
target_dir = sys.argv[3]

print """
DEPTH     = ..
topsrcdir = %(topsrcdir)s
srcdir    = %(topsrcdir)s/addon-sdk
VPATH     = %(topsrcdir)s/addon-sdk

include $(topsrcdir)/config/config.mk
""" % {'topsrcdir': topsrcdir}

real_source = source_dir.replace('/', os.sep)
if not os.path.exists(real_source):
    print >> sys.stderr, "Error: Missing source file %s" % real_source
    sys.exit(1)
elif not os.path.isdir(real_source):
    print >> sys.stderr, "Error: Source %s is not a directory" % real_source
    sys.exit(1)
for dirpath, dirnames, filenames in os.walk(real_source):
    if not filenames:
        continue
    dirpath = dirpath.replace(os.sep, '/')
    relative = dirpath[len(source_dir):]
    varname = "COMMONJS%s" % relative.replace('/', '_')
    print "%s_FILES = \\" % varname
    for name in filenames:
        print "  %s/%s \\" % (dirpath, name)
    print "  $(NULL)"
    print "%s_DEST = %s%s" % (varname, target_dir, relative)
    print "INSTALL_TARGETS += %s\n" % varname

print "include $(topsrcdir)/config/rules.mk"