gecko-dev/addon-sdk/copy_source.py
Gregory Szorc 37f9634b1b Bug 842341 - Fix Windows builds with GNU make; r=ted
--HG--
extra : rebase_source : ab469a2a7e118bd2563868f3ccaa28434caadb17
2013-03-06 12:08:47 -08:00

64 lines
1.9 KiB
Python

# 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"