mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-21 06:37:30 +09:00
Import XULRunner and make it produce the generic stub
This commit is contained in:
parent
1f12910aa2
commit
d3be0506a0
73 changed files with 2418 additions and 10 deletions
13
application/xulrunner/README.xulrunner
Normal file
13
application/xulrunner/README.xulrunner
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
XULRunner is a package which can be used to run applications written in HTML
|
||||||
|
or XUL. It can also be used to embed the gecko rendering engine into
|
||||||
|
binary applications.
|
||||||
|
|
||||||
|
XULRunner is not a product; it is a tool which can be used to create products.
|
||||||
|
It is a byproduct of Firefox development and the Mozilla community does not
|
||||||
|
have a strong commitment to support XULRunner development apart from Firefox
|
||||||
|
development.
|
||||||
|
|
||||||
|
For more information about using XULRunner or how to use this binary package,
|
||||||
|
see the Mozilla Developer Center article:
|
||||||
|
|
||||||
|
https://developer.mozilla.org/en/XULRunner
|
||||||
13
application/xulrunner/app.mozbuild
Normal file
13
application/xulrunner/app.mozbuild
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
# vim: set filetype=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/.
|
||||||
|
|
||||||
|
include('/toolkit/toolkit.mozbuild')
|
||||||
|
|
||||||
|
if CONFIG['MOZ_EXTENSIONS']:
|
||||||
|
DIRS += ['/extensions']
|
||||||
|
|
||||||
|
DIRS += [
|
||||||
|
'/application/xulrunner',
|
||||||
|
]
|
||||||
75
application/xulrunner/app/Makefile.in
Normal file
75
application/xulrunner/app/Makefile.in
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
# vim:set ts=8 sw=8 sts=8 et:
|
||||||
|
# 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/.
|
||||||
|
|
||||||
|
GARBAGE += $(addprefix $(DIST)/bin/defaults/pref/,xulrunner.js)
|
||||||
|
|
||||||
|
ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
|
||||||
|
TK_LIBS := -framework Cocoa $(TK_LIBS)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifndef MOZ_WINCONSOLE
|
||||||
|
ifdef MOZ_DEBUG
|
||||||
|
MOZ_WINCONSOLE = 1
|
||||||
|
else
|
||||||
|
MOZ_WINCONSOLE = 0
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
# This switches $(INSTALL) to copy mode, like $(SYSINSTALL), so things that
|
||||||
|
# shouldn't get 755 perms need $(IFLAGS1) for either way of calling nsinstall.
|
||||||
|
NSDISTMODE = copy
|
||||||
|
|
||||||
|
include $(topsrcdir)/config/config.mk
|
||||||
|
|
||||||
|
include $(topsrcdir)/config/rules.mk
|
||||||
|
|
||||||
|
DEFINES += -DXULRUNNER_ICO='"$(DIST)/branding/xulrunner.ico"' -DDOCUMENT_ICO='"$(DIST)/branding/document.ico"'
|
||||||
|
|
||||||
|
ifdef MOZ_WIDGET_GTK
|
||||||
|
libs::
|
||||||
|
$(INSTALL) $(IFLAGS1) $(DIST)/branding/default16.png $(DIST)/bin/chrome/icons/default
|
||||||
|
$(INSTALL) $(IFLAGS1) $(DIST)/branding/default32.png $(DIST)/bin/chrome/icons/default
|
||||||
|
$(INSTALL) $(IFLAGS1) $(DIST)/branding/default48.png $(DIST)/bin/chrome/icons/default
|
||||||
|
endif
|
||||||
|
|
||||||
|
# XXX applications would need to supply this file
|
||||||
|
#export:: brand.dtd.in
|
||||||
|
# $(call py_action,preprocessor,$(DEFINES) $(ACDEFINES) $^ -o brand.dtd)
|
||||||
|
|
||||||
|
ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
|
||||||
|
|
||||||
|
FRAMEWORK_NAME = XUL
|
||||||
|
FRAMEWORK_VERSION = $(MOZILLA_VERSION)
|
||||||
|
|
||||||
|
FRAMEWORK_DIR = \
|
||||||
|
$(DIST)/$(FRAMEWORK_NAME).framework/Versions/$(FRAMEWORK_VERSION)
|
||||||
|
|
||||||
|
$(FRAMEWORK_DIR)/Resources:
|
||||||
|
$(NSINSTALL) -D $@
|
||||||
|
|
||||||
|
tools:: $(PROGRAM) $(FRAMEWORK_DIR)/Resources
|
||||||
|
$(NSINSTALL) $(srcdir)/macbuild/InfoPlist.strings $(FRAMEWORK_DIR)/Resources
|
||||||
|
sed -e 's/APP_VERSION/$(APP_VERSION)/' $(srcdir)/macbuild/Info.plist.in > $(FRAMEWORK_DIR)/Info.plist
|
||||||
|
rsync -av $(DIST)/bin/ $(FRAMEWORK_DIR) --exclude mangle --exclude shlibsign
|
||||||
|
rm -f $(DIST)/$(FRAMEWORK_NAME).framework/Versions/Current \
|
||||||
|
$(DIST)/$(FRAMEWORK_NAME).framework/libxpcom.dylib \
|
||||||
|
$(DIST)/$(FRAMEWORK_NAME).framework/XUL \
|
||||||
|
$(DIST)/$(FRAMEWORK_NAME).framework/xulrunner
|
||||||
|
ln -s $(FRAMEWORK_VERSION) $(DIST)/$(FRAMEWORK_NAME).framework/Versions/Current
|
||||||
|
ln -s Versions/Current/libxpcom.dylib $(DIST)/$(FRAMEWORK_NAME).framework/libxpcom.dylib
|
||||||
|
ln -s Versions/Current/XUL $(DIST)/$(FRAMEWORK_NAME).framework/XUL
|
||||||
|
ln -s Versions/Current/xulrunner $(DIST)/$(FRAMEWORK_NAME).framework/xulrunner
|
||||||
|
|
||||||
|
clean clobber::
|
||||||
|
rm -rf $(DIST)/$(FRAMEWORK_NAME).framework
|
||||||
|
endif
|
||||||
|
|
||||||
|
README_FILE = $(srcdir)/../README.xulrunner
|
||||||
|
|
||||||
|
libs::
|
||||||
|
$(INSTALL) $(IFLAGS1) $(README_FILE) $(DIST)/bin
|
||||||
|
$(INSTALL) $(IFLAGS1) $(topsrcdir)/LICENSE $(DIST)/bin
|
||||||
|
$(INSTALL) $(IFLAGS1) $(srcdir)/install_app.py $(DIST)/bin
|
||||||
|
|
||||||
BIN
application/xulrunner/app/default16.png
Normal file
BIN
application/xulrunner/app/default16.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 744 B |
BIN
application/xulrunner/app/default32.png
Normal file
BIN
application/xulrunner/app/default32.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2 KiB |
BIN
application/xulrunner/app/default48.png
Normal file
BIN
application/xulrunner/app/default48.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.8 KiB |
BIN
application/xulrunner/app/document.ico
Normal file
BIN
application/xulrunner/app/document.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
221
application/xulrunner/app/install_app.py
Normal file
221
application/xulrunner/app/install_app.py
Normal file
|
|
@ -0,0 +1,221 @@
|
||||||
|
#!/usr/bin/env 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/.
|
||||||
|
|
||||||
|
# Min version of python is 2.7
|
||||||
|
import sys
|
||||||
|
if ((sys.version_info.major != 2) or (sys.version_info.minor < 7)):
|
||||||
|
raise Exception("You need to use Python version 2.7 or higher")
|
||||||
|
|
||||||
|
import os, shutil, re, zipfile
|
||||||
|
from ConfigParser import SafeConfigParser
|
||||||
|
|
||||||
|
# Platform-specific support
|
||||||
|
# see https://developer.mozilla.org/en/XULRunner/Deploying_XULRunner_1.8
|
||||||
|
if sys.platform.startswith('linux') or sys.platform == "win32":
|
||||||
|
def installApp(appLocation, installDir, appName, greDir):
|
||||||
|
zipApp, iniParser, appName = validateArguments(appLocation, installDir, appName, greDir)
|
||||||
|
if (zipApp):
|
||||||
|
zipApp.extractAll(installDir)
|
||||||
|
else:
|
||||||
|
shutil.copytree(appLocation, installDir)
|
||||||
|
shutil.copy2(os.path.join(greDir, xulrunnerStubName),
|
||||||
|
os.path.join(installDir, appName))
|
||||||
|
copyGRE(greDir, os.path.join(installDir, "xulrunner"))
|
||||||
|
|
||||||
|
if sys.platform.startswith('linux'):
|
||||||
|
xulrunnerStubName = "xulrunner-stub"
|
||||||
|
|
||||||
|
def makeAppName(leafName):
|
||||||
|
return leafName.lower()
|
||||||
|
|
||||||
|
elif sys.platform == "win32":
|
||||||
|
xulrunnerStubName = "xulrunner-stub.exe"
|
||||||
|
|
||||||
|
def makeAppName(leafName):
|
||||||
|
return leafName + ".exe"
|
||||||
|
|
||||||
|
elif sys.platform == "darwin":
|
||||||
|
xulrunnerStubName = "xulrunner-stub"
|
||||||
|
|
||||||
|
def installApp(appLocation, installDir, appName, greDir):
|
||||||
|
zipApp, iniparser, appName = validateArguments(appLocation, installDir, appName, greDir)
|
||||||
|
installDir += "/" + appName + ".app"
|
||||||
|
resourcesDir = os.path.join(installDir, "Contents/Resources")
|
||||||
|
if (zipApp):
|
||||||
|
zipApp.extractAll(resourcesDir)
|
||||||
|
else:
|
||||||
|
shutil.copytree(appLocation, resourcesDir)
|
||||||
|
MacOSDir = os.path.join(installDir, "Contents/MacOS")
|
||||||
|
os.makedirs(MacOSDir)
|
||||||
|
shutil.copy2(os.path.join(greDir, xulrunnerStubName), MacOSDir)
|
||||||
|
copyGRE(greDir,
|
||||||
|
os.path.join(installDir, "Contents/Frameworks/XUL.framework"))
|
||||||
|
|
||||||
|
# Contents/Info.plist
|
||||||
|
contents = """<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>xulrunner</string>
|
||||||
|
<key>NSAppleScriptEnabled</key>
|
||||||
|
<true/>
|
||||||
|
<key>CFBundleGetInfoString</key>
|
||||||
|
<string>$infoString</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>$appName</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>$version</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>$version.$buildID</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>$reverseVendor</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
|
"""
|
||||||
|
version = iniparser.get("App", "Version")
|
||||||
|
buildID = iniparser.get("App", "BuildID")
|
||||||
|
infoString = appName + " " + version
|
||||||
|
reverseVendor = "com.vendor.unknown"
|
||||||
|
appID = iniparser.get("App", "ID")
|
||||||
|
colonIndex = appID.find("@") + 1
|
||||||
|
if (colonIndex != 0):
|
||||||
|
vendor = appID[colonIndex:]
|
||||||
|
reverseVendor = ".".join(vendor.split(".")[::-1])
|
||||||
|
contents = contents.replace("$infoString", infoString)
|
||||||
|
contents = contents.replace("$appName", appName)
|
||||||
|
contents = contents.replace("$version", version)
|
||||||
|
contents = contents.replace("$buildID", buildID)
|
||||||
|
contents = contents.replace("$reverseVendor", reverseVendor)
|
||||||
|
infoPList = open(os.path.join(installDir, "Contents/Info.plist"), "w+b")
|
||||||
|
infoPList.write(contents)
|
||||||
|
infoPList.close()
|
||||||
|
|
||||||
|
def makeAppName(leafName):
|
||||||
|
return leafName
|
||||||
|
|
||||||
|
else:
|
||||||
|
# Implement xulrunnerStubName, installApp and makeAppName as above.
|
||||||
|
raise Exception("This operating system isn't supported for install_app.py yet!")
|
||||||
|
# End platform-specific support
|
||||||
|
|
||||||
|
def resolvePath(path):
|
||||||
|
return os.path.realpath(path)
|
||||||
|
|
||||||
|
def requireINIOption(iniparser, section, option):
|
||||||
|
if not (iniparser.has_option(section, option)):
|
||||||
|
raise Exception("application.ini must have a " + option + " option under the " + section + " section")
|
||||||
|
|
||||||
|
def checkAppINI(appLocation):
|
||||||
|
if (os.path.isdir(appLocation)):
|
||||||
|
zipApp = None
|
||||||
|
appINIPath = os.path.join(appLocation, "application.ini")
|
||||||
|
if not (os.path.isfile(appINIPath)):
|
||||||
|
raise Exception(appINIPath + " does not exist")
|
||||||
|
appINI = open(appINIPath)
|
||||||
|
elif (zipfile.is_zipfile(appLocation)):
|
||||||
|
zipApp = zipfile.ZipFile(appLocation)
|
||||||
|
if not ("application.ini" in zipApp.namelist()):
|
||||||
|
raise Exception("jar:" + appLocation + "!/application.ini does not exist")
|
||||||
|
appINI = zipApp.open("application.ini")
|
||||||
|
else:
|
||||||
|
raise Exception("appLocation must be a directory containing application.ini or a zip file with application.ini at its root")
|
||||||
|
|
||||||
|
# application.ini verification
|
||||||
|
iniparser = SafeConfigParser()
|
||||||
|
iniparser.readfp(appINI)
|
||||||
|
if not (iniparser.has_section("App")):
|
||||||
|
raise Exception("application.ini must have an App section")
|
||||||
|
if not (iniparser.has_section("Gecko")):
|
||||||
|
raise Exception("application.ini must have a Gecko section")
|
||||||
|
requireINIOption(iniparser, "App", "Name")
|
||||||
|
requireINIOption(iniparser, "App", "Version")
|
||||||
|
requireINIOption(iniparser, "App", "BuildID")
|
||||||
|
requireINIOption(iniparser, "App", "ID")
|
||||||
|
requireINIOption(iniparser, "Gecko", "MinVersion")
|
||||||
|
|
||||||
|
return zipApp, iniparser
|
||||||
|
pass
|
||||||
|
|
||||||
|
def copyGRE(greDir, targetDir):
|
||||||
|
shutil.copytree(greDir, targetDir, symlinks=True)
|
||||||
|
|
||||||
|
def validateArguments(appLocation, installDir, appName, greDir):
|
||||||
|
# application directory / zip verification
|
||||||
|
appLocation = resolvePath(appLocation)
|
||||||
|
|
||||||
|
# target directory
|
||||||
|
installDir = resolvePath(installDir)
|
||||||
|
|
||||||
|
if (os.path.exists(installDir)):
|
||||||
|
raise Exception("installDir must not exist: " + cmds.installDir)
|
||||||
|
|
||||||
|
greDir = resolvePath(greDir)
|
||||||
|
xulrunnerStubPath = os.path.isfile(os.path.join(greDir, xulrunnerStubName))
|
||||||
|
if not xulrunnerStubPath:
|
||||||
|
raise Exception("XULRunner stub executable not found: " + os.path.join(greDir, xulrunnerStubName))
|
||||||
|
|
||||||
|
# appName
|
||||||
|
zipApp, iniparser = checkAppINI(appLocation)
|
||||||
|
if not appName:
|
||||||
|
appName = iniparser.get("App", "Name")
|
||||||
|
appName = makeAppName(appName)
|
||||||
|
pattern = re.compile("[\\\/\:*?\"<>|\x00]")
|
||||||
|
if pattern.search(appName):
|
||||||
|
raise Exception("App name has illegal characters for at least one operating system")
|
||||||
|
return zipApp, iniparser, appName
|
||||||
|
|
||||||
|
def handleCommandLine():
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
# Argument parsing.
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="XULRunner application installer",
|
||||||
|
usage="""install_app.py appLocation installDir greDir [--appName APPNAME]
|
||||||
|
install_app.py -h
|
||||||
|
install_app.py --version
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"appLocation",
|
||||||
|
action="store",
|
||||||
|
help="The directory or ZIP file containing application.ini as a top-level child file"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"installDir",
|
||||||
|
action="store",
|
||||||
|
help="The directory to install the application to"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--greDir",
|
||||||
|
action="store",
|
||||||
|
help="The directory containing the Gecko SDK (usually where this Python script lives)",
|
||||||
|
default=os.path.dirname(sys.argv[0])
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--appName",
|
||||||
|
action="store",
|
||||||
|
help="The name of the application to install"
|
||||||
|
)
|
||||||
|
parser.add_argument("--version", action="version", version="%(prog)s 1.0")
|
||||||
|
|
||||||
|
# The command code.
|
||||||
|
cmds = parser.parse_args()
|
||||||
|
try:
|
||||||
|
installApp(cmds.appLocation, cmds.installDir, cmds.appName, cmds.greDir)
|
||||||
|
except exn:
|
||||||
|
shutil.rmtree(cmds.installDir)
|
||||||
|
raise exn
|
||||||
|
print cmds.appName + " application installed to " + cmds.installDir
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
handleCommandLine()
|
||||||
31
application/xulrunner/app/macbuild/Info.plist.in
Normal file
31
application/xulrunner/app/macbuild/Info.plist.in
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>English</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>xulrunner-bin</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>org.mozilla.xulrunner</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>XULRunner</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>FMWK</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>MOZB</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>APP_VERSION</string>
|
||||||
|
<key>LSMinimumSystemVersion</key>
|
||||||
|
<string>10.5</string>
|
||||||
|
<key>LSMinimumSystemVersionByArchitecture</key>
|
||||||
|
<dict>
|
||||||
|
<key>i386</key>
|
||||||
|
<string>10.5.0</string>
|
||||||
|
<key>x86_64</key>
|
||||||
|
<string>10.6.0</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
BIN
application/xulrunner/app/macbuild/InfoPlist.strings
Normal file
BIN
application/xulrunner/app/macbuild/InfoPlist.strings
Normal file
Binary file not shown.
70
application/xulrunner/app/moz.build
Normal file
70
application/xulrunner/app/moz.build
Normal file
|
|
@ -0,0 +1,70 @@
|
||||||
|
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||||
|
# vim: set filetype=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/.
|
||||||
|
|
||||||
|
GeckoProgram('xulrunner')
|
||||||
|
|
||||||
|
SOURCES += [
|
||||||
|
'nsXULRunnerApp.cpp',
|
||||||
|
]
|
||||||
|
|
||||||
|
DEFINES['XULRUNNER_PROGNAME'] = '"xulrunner"'
|
||||||
|
if CONFIG['MOZ_DEBUG']:
|
||||||
|
DEFINES['DEBUG'] = True
|
||||||
|
|
||||||
|
LOCAL_INCLUDES += [
|
||||||
|
'/toolkit/profile',
|
||||||
|
'/toolkit/xre',
|
||||||
|
'/xpcom/base',
|
||||||
|
'/xpcom/build',
|
||||||
|
]
|
||||||
|
|
||||||
|
if CONFIG['_MSC_VER']:
|
||||||
|
# Always enter a Windows program through wmain, whether or not we're
|
||||||
|
# a console application.
|
||||||
|
WIN32_EXE_LDFLAGS += ['-ENTRY:wmainCRTStartup']
|
||||||
|
|
||||||
|
# Control the default heap size.
|
||||||
|
# This is the heap returned by GetProcessHeap().
|
||||||
|
# As we use the CRT heap, the default size is too large and wastes VM.
|
||||||
|
#
|
||||||
|
# The default heap size is 1MB on Win32.
|
||||||
|
# The heap will grow if need be.
|
||||||
|
#
|
||||||
|
# Set it to 256k. See bug 127069.
|
||||||
|
if CONFIG['OS_ARCH'] == 'WINNT' and not CONFIG['GNU_CC']:
|
||||||
|
LDFLAGS += ['/HEAP:0x40000']
|
||||||
|
|
||||||
|
if CONFIG['OS_ARCH'] == 'WINNT':
|
||||||
|
RCINCLUDE = 'splash.rc'
|
||||||
|
OS_LIBS += [
|
||||||
|
'comctl32',
|
||||||
|
'comdlg32',
|
||||||
|
'uuid',
|
||||||
|
'shell32',
|
||||||
|
'ole32',
|
||||||
|
'oleaut32',
|
||||||
|
'version',
|
||||||
|
'winspool',
|
||||||
|
]
|
||||||
|
|
||||||
|
DISABLE_STL_WRAPPING = True
|
||||||
|
|
||||||
|
JS_PREFERENCE_PP_FILES += [
|
||||||
|
'xulrunner.js',
|
||||||
|
]
|
||||||
|
|
||||||
|
if CONFIG['OS_ARCH'] == 'WINNT':
|
||||||
|
BRANDING_FILES += [
|
||||||
|
'document.ico',
|
||||||
|
'xulrunner.ico',
|
||||||
|
]
|
||||||
|
|
||||||
|
if CONFIG['MOZ_WIDGET_GTK']:
|
||||||
|
BRANDING_FILES += [
|
||||||
|
'default16.png',
|
||||||
|
'default32.png',
|
||||||
|
'default48.png',
|
||||||
|
]
|
||||||
294
application/xulrunner/app/nsXULRunnerApp.cpp
Normal file
294
application/xulrunner/app/nsXULRunnerApp.cpp
Normal file
|
|
@ -0,0 +1,294 @@
|
||||||
|
/* 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/. */
|
||||||
|
|
||||||
|
#include "nsXULAppAPI.h"
|
||||||
|
#include "nsXPCOMGlue.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#ifdef XP_WIN
|
||||||
|
#include <windows.h>
|
||||||
|
#if defined(_MSC_VER) && _MSC_VER < 1900
|
||||||
|
#define snprintf _snprintf
|
||||||
|
#endif
|
||||||
|
#define strcasecmp _stricmp
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "nsAppRunner.h"
|
||||||
|
#include "nsIFile.h"
|
||||||
|
#include "nsCOMPtr.h"
|
||||||
|
#include "nsMemory.h"
|
||||||
|
#include "nsCRTGlue.h"
|
||||||
|
#include "nsStringAPI.h"
|
||||||
|
#include "nsServiceManagerUtils.h"
|
||||||
|
#include "plstr.h"
|
||||||
|
#include "prprf.h"
|
||||||
|
#include "prenv.h"
|
||||||
|
#include "nsINIParser.h"
|
||||||
|
|
||||||
|
#ifdef XP_WIN
|
||||||
|
#define XRE_DONT_SUPPORT_XPSP2 // See https://bugzil.la/1023941#c32
|
||||||
|
#include "nsWindowsWMain.cpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "BinaryPath.h"
|
||||||
|
|
||||||
|
#include "nsXPCOMPrivate.h" // for MAXPATHLEN and XPCOM_DLL
|
||||||
|
|
||||||
|
using namespace mozilla;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Output a string to the user. This method is really only meant to be used to
|
||||||
|
* output last-ditch error messages designed for developers NOT END USERS.
|
||||||
|
*
|
||||||
|
* @param isError
|
||||||
|
* Pass true to indicate severe errors.
|
||||||
|
* @param fmt
|
||||||
|
* printf-style format string followed by arguments.
|
||||||
|
*/
|
||||||
|
static void Output(bool isError, const char *fmt, ... )
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
|
||||||
|
#if (defined(XP_WIN) && !MOZ_WINCONSOLE)
|
||||||
|
wchar_t msg[2048];
|
||||||
|
_vsnwprintf(msg, sizeof(msg)/sizeof(msg[0]), NS_ConvertUTF8toUTF16(fmt).get(), ap);
|
||||||
|
|
||||||
|
UINT flags = MB_OK;
|
||||||
|
if (isError)
|
||||||
|
flags |= MB_ICONERROR;
|
||||||
|
else
|
||||||
|
flags |= MB_ICONINFORMATION;
|
||||||
|
|
||||||
|
MessageBoxW(nullptr, msg, L"XULRunner", flags);
|
||||||
|
#else
|
||||||
|
vfprintf(stderr, fmt, ap);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return true if |arg| matches the given argument name.
|
||||||
|
*/
|
||||||
|
static bool IsArg(const char* arg, const char* s)
|
||||||
|
{
|
||||||
|
if (*arg == '-')
|
||||||
|
{
|
||||||
|
if (*++arg == '-')
|
||||||
|
++arg;
|
||||||
|
return !strcasecmp(arg, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(XP_WIN)
|
||||||
|
if (*arg == '/')
|
||||||
|
return !strcasecmp(++arg, s);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static nsresult
|
||||||
|
GetGREVersion(const char *argv0,
|
||||||
|
nsACString *aMilestone,
|
||||||
|
nsACString *aVersion)
|
||||||
|
{
|
||||||
|
if (aMilestone)
|
||||||
|
aMilestone->AssignLiteral("<Error>");
|
||||||
|
if (aVersion)
|
||||||
|
aVersion->AssignLiteral("<Error>");
|
||||||
|
|
||||||
|
nsCOMPtr<nsIFile> iniFile;
|
||||||
|
nsresult rv = BinaryPath::GetFile(argv0, getter_AddRefs(iniFile));
|
||||||
|
if (NS_FAILED(rv))
|
||||||
|
return rv;
|
||||||
|
|
||||||
|
iniFile->SetNativeLeafName(NS_LITERAL_CSTRING("platform.ini"));
|
||||||
|
|
||||||
|
nsINIParser parser;
|
||||||
|
rv = parser.Init(iniFile);
|
||||||
|
if (NS_FAILED(rv))
|
||||||
|
return rv;
|
||||||
|
|
||||||
|
if (aMilestone) {
|
||||||
|
rv = parser.GetString("Build", "Milestone", *aMilestone);
|
||||||
|
if (NS_FAILED(rv))
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
if (aVersion) {
|
||||||
|
rv = parser.GetString("Build", "BuildID", *aVersion);
|
||||||
|
if (NS_FAILED(rv))
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Usage(const char *argv0)
|
||||||
|
{
|
||||||
|
nsAutoCString milestone;
|
||||||
|
GetGREVersion(argv0, &milestone, nullptr);
|
||||||
|
|
||||||
|
// display additional information (XXX make localizable?)
|
||||||
|
Output(false,
|
||||||
|
"Mozilla XULRunner %s\n\n"
|
||||||
|
"Usage: " XULRUNNER_PROGNAME " [OPTIONS]\n"
|
||||||
|
" " XULRUNNER_PROGNAME " APP-FILE [APP-OPTIONS...]\n"
|
||||||
|
"\n"
|
||||||
|
"OPTIONS\n"
|
||||||
|
" --app specify APP-FILE (optional)\n"
|
||||||
|
" -h, --help show this message\n"
|
||||||
|
" -v, --version show version\n"
|
||||||
|
" --gre-version print the GRE version string on stdout\n"
|
||||||
|
"\n"
|
||||||
|
"APP-FILE\n"
|
||||||
|
" Application initialization file.\n"
|
||||||
|
"\n"
|
||||||
|
"APP-OPTIONS\n"
|
||||||
|
" Application specific options.\n",
|
||||||
|
milestone.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
XRE_GetFileFromPathType XRE_GetFileFromPath;
|
||||||
|
XRE_CreateAppDataType XRE_CreateAppData;
|
||||||
|
XRE_FreeAppDataType XRE_FreeAppData;
|
||||||
|
XRE_mainType XRE_main;
|
||||||
|
|
||||||
|
static const nsDynamicFunctionLoad kXULFuncs[] = {
|
||||||
|
{ "XRE_GetFileFromPath", (NSFuncPtr*) &XRE_GetFileFromPath },
|
||||||
|
{ "XRE_CreateAppData", (NSFuncPtr*) &XRE_CreateAppData },
|
||||||
|
{ "XRE_FreeAppData", (NSFuncPtr*) &XRE_FreeAppData },
|
||||||
|
{ "XRE_main", (NSFuncPtr*) &XRE_main },
|
||||||
|
{ nullptr, nullptr }
|
||||||
|
};
|
||||||
|
|
||||||
|
class AutoAppData
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
AutoAppData(nsIFile* aINIFile) : mAppData(nullptr) {
|
||||||
|
nsresult rv = XRE_CreateAppData(aINIFile, &mAppData);
|
||||||
|
if (NS_FAILED(rv))
|
||||||
|
mAppData = nullptr;
|
||||||
|
}
|
||||||
|
~AutoAppData() {
|
||||||
|
if (mAppData)
|
||||||
|
XRE_FreeAppData(mAppData);
|
||||||
|
}
|
||||||
|
|
||||||
|
operator nsXREAppData*() const { return mAppData; }
|
||||||
|
nsXREAppData* operator -> () const { return mAppData; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
nsXREAppData* mAppData;
|
||||||
|
};
|
||||||
|
|
||||||
|
int main(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
char exePath[MAXPATHLEN];
|
||||||
|
nsresult rv = mozilla::BinaryPath::Get(argv[0], exePath);
|
||||||
|
if (NS_FAILED(rv)) {
|
||||||
|
Output(true, "Couldn't calculate the application directory.\n");
|
||||||
|
return 255;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *lastSlash = strrchr(exePath, XPCOM_FILE_PATH_SEPARATOR[0]);
|
||||||
|
if (!lastSlash || (size_t(lastSlash - exePath) > MAXPATHLEN - sizeof(XPCOM_DLL) - 1))
|
||||||
|
return 255;
|
||||||
|
|
||||||
|
strcpy(++lastSlash, XPCOM_DLL);
|
||||||
|
|
||||||
|
rv = XPCOMGlueStartup(exePath);
|
||||||
|
if (NS_FAILED(rv)) {
|
||||||
|
Output(true, "Couldn't load XPCOM.\n");
|
||||||
|
return 255;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argc > 1 && (IsArg(argv[1], "h") ||
|
||||||
|
IsArg(argv[1], "help") ||
|
||||||
|
IsArg(argv[1], "?")))
|
||||||
|
{
|
||||||
|
Usage(argv[0]);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argc == 2 && (IsArg(argv[1], "v") || IsArg(argv[1], "version")))
|
||||||
|
{
|
||||||
|
nsAutoCString milestone;
|
||||||
|
nsAutoCString version;
|
||||||
|
GetGREVersion(argv[0], &milestone, &version);
|
||||||
|
Output(false, "Mozilla XULRunner %s - %s\n",
|
||||||
|
milestone.get(), version.get());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
rv = XPCOMGlueLoadXULFunctions(kXULFuncs);
|
||||||
|
if (NS_FAILED(rv)) {
|
||||||
|
Output(true, "Couldn't load XRE functions.\n");
|
||||||
|
return 255;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argc > 1) {
|
||||||
|
nsAutoCString milestone;
|
||||||
|
rv = GetGREVersion(argv[0], &milestone, nullptr);
|
||||||
|
if (NS_FAILED(rv))
|
||||||
|
return 2;
|
||||||
|
|
||||||
|
if (IsArg(argv[1], "gre-version")) {
|
||||||
|
if (argc != 2) {
|
||||||
|
Usage(argv[0]);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%s\n", milestone.get());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsArg(argv[1], "install-app")) {
|
||||||
|
Output(true, "--install-app support has been removed. Use 'python install-app.py' instead.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *appDataFile = getenv("XUL_APP_FILE");
|
||||||
|
|
||||||
|
if (!(appDataFile && *appDataFile)) {
|
||||||
|
if (argc < 2) {
|
||||||
|
Usage(argv[0]);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsArg(argv[1], "app")) {
|
||||||
|
if (argc == 2) {
|
||||||
|
Usage(argv[0]);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
argv[1] = argv[0];
|
||||||
|
++argv;
|
||||||
|
--argc;
|
||||||
|
}
|
||||||
|
|
||||||
|
appDataFile = argv[1];
|
||||||
|
argv[1] = argv[0];
|
||||||
|
++argv;
|
||||||
|
--argc;
|
||||||
|
|
||||||
|
static char kAppEnv[MAXPATHLEN];
|
||||||
|
snprintf(kAppEnv, MAXPATHLEN, "XUL_APP_FILE=%s", appDataFile);
|
||||||
|
putenv(kAppEnv);
|
||||||
|
}
|
||||||
|
|
||||||
|
nsCOMPtr<nsIFile> appDataLF;
|
||||||
|
rv = XRE_GetFileFromPath(appDataFile, getter_AddRefs(appDataLF));
|
||||||
|
if (NS_FAILED(rv)) {
|
||||||
|
Output(true, "Error: unrecognized application.ini path.\n");
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
AutoAppData appData(appDataLF);
|
||||||
|
if (!appData) {
|
||||||
|
Output(true, "Error: couldn't parse application.ini.\n");
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
return XRE_main(argc, argv, appData, 0);
|
||||||
|
}
|
||||||
22
application/xulrunner/app/splash.rc
Normal file
22
application/xulrunner/app/splash.rc
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
/* 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/. */
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
#include "nsNativeAppSupportWin.h"
|
||||||
|
|
||||||
|
1 24 "xulrunner.exe.manifest"
|
||||||
|
|
||||||
|
IDI_APPICON ICON XULRUNNER_ICO
|
||||||
|
IDI_DOCUMENT ICON DOCUMENT_ICO
|
||||||
|
IDI_APPLICATION ICON XULRUNNER_ICO
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
#ifdef DEBUG
|
||||||
|
IDS_STARTMENU_APPNAME, "Firefox Debug"
|
||||||
|
#else
|
||||||
|
IDS_STARTMENU_APPNAME, "Firefox"
|
||||||
|
#endif
|
||||||
|
END
|
||||||
38
application/xulrunner/app/xulrunner.exe.manifest
Normal file
38
application/xulrunner/app/xulrunner.exe.manifest
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||||
|
<assemblyIdentity
|
||||||
|
version="1.0.0.0"
|
||||||
|
processorArchitecture="*"
|
||||||
|
name="Mozilla.XULRunner"
|
||||||
|
type="win32"
|
||||||
|
/>
|
||||||
|
<description>Mozilla XULRunner</description>
|
||||||
|
<dependency>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity
|
||||||
|
type="win32"
|
||||||
|
name="Microsoft.Windows.Common-Controls"
|
||||||
|
version="6.0.0.0"
|
||||||
|
processorArchitecture="*"
|
||||||
|
publicKeyToken="6595b64144ccf1df"
|
||||||
|
language="*"
|
||||||
|
/>
|
||||||
|
</dependentAssembly>
|
||||||
|
</dependency>
|
||||||
|
<ms_asmv3:trustInfo xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<ms_asmv3:security>
|
||||||
|
<ms_asmv3:requestedPrivileges>
|
||||||
|
<ms_asmv3:requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||||
|
</ms_asmv3:requestedPrivileges>
|
||||||
|
</ms_asmv3:security>
|
||||||
|
</ms_asmv3:trustInfo>
|
||||||
|
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||||
|
<application>
|
||||||
|
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
|
||||||
|
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
|
||||||
|
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
||||||
|
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
|
||||||
|
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
|
||||||
|
</application>
|
||||||
|
</compatibility>
|
||||||
|
</assembly>
|
||||||
BIN
application/xulrunner/app/xulrunner.ico
Normal file
BIN
application/xulrunner/app/xulrunner.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
26
application/xulrunner/app/xulrunner.js
Normal file
26
application/xulrunner/app/xulrunner.js
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
/* 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/. */
|
||||||
|
|
||||||
|
#filter substitution
|
||||||
|
|
||||||
|
// We need to override the default values of these preferences since all.js
|
||||||
|
// assumes these are in the navigator package, which for us is nonexistent.
|
||||||
|
// XXX(darin): perhaps all.js should not be seamonkey specific
|
||||||
|
pref("general.useragent.locale", "@AB_CD@");
|
||||||
|
pref("xpinstall.dialog.confirm", "chrome://mozapps/content/xpinstall/xpinstallConfirm.xul");
|
||||||
|
pref("xpinstall.dialog.progress.chrome", "chrome://mozapps/content/extensions/extensions.xul");
|
||||||
|
pref("xpinstall.dialog.progress.skin", "chrome://mozapps/content/extensions/extensions.xul");
|
||||||
|
pref("xpinstall.dialog.progress.type.chrome", "Extension:Manager");
|
||||||
|
pref("xpinstall.dialog.progress.type.skin", "Extension:Manager");
|
||||||
|
pref("xpinstall.enabled", true);
|
||||||
|
#ifdef XP_WIN
|
||||||
|
pref("browser.preferences.instantApply", false);
|
||||||
|
#else
|
||||||
|
pref("browser.preferences.instantApply", true);
|
||||||
|
#endif
|
||||||
|
#ifdef XP_MACOSX
|
||||||
|
pref("browser.preferences.animateFadeIn", true);
|
||||||
|
#else
|
||||||
|
pref("browser.preferences.animateFadeIn", false);
|
||||||
|
#endif
|
||||||
9
application/xulrunner/config/mozconfig
Normal file
9
application/xulrunner/config/mozconfig
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
# 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/.
|
||||||
|
|
||||||
|
# This file specifies the build flags for XULRunner. You can use it by adding:
|
||||||
|
# . $topsrcdir/xulrunner/config/mozconfig
|
||||||
|
# to the top of your mozconfig file.
|
||||||
|
|
||||||
|
ac_add_options --enable-application=xulrunner
|
||||||
7
application/xulrunner/config/mozconfigs/common
Normal file
7
application/xulrunner/config/mozconfigs/common
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# 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/.
|
||||||
|
|
||||||
|
# This file is included at the top of all xulrunner mozconfigs
|
||||||
|
|
||||||
|
. "$topsrcdir/build/mozconfig.common"
|
||||||
8
application/xulrunner/config/mozconfigs/common.override
Normal file
8
application/xulrunner/config/mozconfigs/common.override
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
# 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/.
|
||||||
|
|
||||||
|
# This file is included at the bottom of all xulrunner mozconfigs
|
||||||
|
|
||||||
|
. "$topsrcdir/build/mozconfig.common.override"
|
||||||
|
. "$topsrcdir/build/mozconfig.cache"
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
export MOZILLA_OFFICIAL=1
|
||||||
|
export JAVA_HOME=/tools/jdk
|
||||||
|
|
||||||
|
ac_add_options --enable-application=xulrunner
|
||||||
|
ac_add_options --disable-tests
|
||||||
|
|
||||||
|
. $topsrcdir/build/unix/mozconfig.linux32
|
||||||
|
|
||||||
|
. "$topsrcdir/xulrunner/config/mozconfigs/common.override"
|
||||||
15
application/xulrunner/config/mozconfigs/linux32/xulrunner-qt
Normal file
15
application/xulrunner/config/mozconfigs/linux32/xulrunner-qt
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
export MOZILLA_OFFICIAL=1
|
||||||
|
export JAVA_HOME=/tools/jdk
|
||||||
|
|
||||||
|
ac_add_options --enable-application=xulrunner
|
||||||
|
ac_add_options --disable-tests
|
||||||
|
|
||||||
|
. $topsrcdir/build/unix/mozconfig.linux32
|
||||||
|
|
||||||
|
# QT Options
|
||||||
|
export PKG_CONFIG_PATH=/tools/qt-4.6.3/qt/lib/pkgconfig
|
||||||
|
ac_add_options --with-qtdir=/tools/qt-4.6.3/qt
|
||||||
|
ac_add_options --enable-default-toolkit=cairo-qt
|
||||||
|
ac_add_options --disable-crashreporter
|
||||||
|
|
||||||
|
. "$topsrcdir/xulrunner/config/mozconfigs/common.override"
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
export MOZILLA_OFFICIAL=1
|
||||||
|
export JAVA_HOME=/tools/jdk
|
||||||
|
|
||||||
|
ac_add_options --enable-application=xulrunner
|
||||||
|
ac_add_options --disable-tests
|
||||||
|
|
||||||
|
. $topsrcdir/build/unix/mozconfig.linux
|
||||||
|
|
||||||
|
. "$topsrcdir/xulrunner/config/mozconfigs/common.override"
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
. $topsrcdir/build/macosx/universal/mozconfig
|
||||||
|
|
||||||
|
export MOZILLA_OFFICIAL=1
|
||||||
|
|
||||||
|
ac_add_options --enable-application=xulrunner
|
||||||
|
ac_add_options --disable-tests
|
||||||
|
ac_add_options --with-xulrunner-stub-name=xulrunner-stub
|
||||||
|
|
||||||
|
. "$topsrcdir/xulrunner/config/mozconfigs/common.override"
|
||||||
16
application/xulrunner/config/mozconfigs/win32/xulrunner
Normal file
16
application/xulrunner/config/mozconfigs/win32/xulrunner
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
. "$topsrcdir/xulrunner/config/mozconfigs/common"
|
||||||
|
|
||||||
|
export MOZILLA_OFFICIAL=1
|
||||||
|
export JAVA_HOME=/d/jdk1.6.0_14
|
||||||
|
|
||||||
|
ac_add_options --enable-application=xulrunner
|
||||||
|
ac_add_options --enable-jemalloc
|
||||||
|
ac_add_options --disable-tests
|
||||||
|
|
||||||
|
if test "$PROCESSOR_ARCHITECTURE" = "AMD64" -o "$PROCESSOR_ARCHITEW6432" = "AMD64"; then
|
||||||
|
. $topsrcdir/build/win32/mozconfig.vs2013-win64
|
||||||
|
else
|
||||||
|
. $topsrcdir/build/win32/mozconfig.vs2010
|
||||||
|
fi
|
||||||
|
|
||||||
|
. "$topsrcdir/xulrunner/config/mozconfigs/common.override"
|
||||||
15
application/xulrunner/config/mozconfigs/win64/xulrunner
Normal file
15
application/xulrunner/config/mozconfigs/win64/xulrunner
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
. "$topsrcdir/xulrunner/config/mozconfigs/common"
|
||||||
|
|
||||||
|
ac_add_options --target=x86_64-pc-mingw32
|
||||||
|
ac_add_options --host=x86_64-pc-mingw32
|
||||||
|
|
||||||
|
export MOZILLA_OFFICIAL=1
|
||||||
|
export JAVA_HOME=/d/jdk1.6.0_14
|
||||||
|
|
||||||
|
ac_add_options --enable-application=xulrunner
|
||||||
|
ac_add_options --enable-jemalloc
|
||||||
|
ac_add_options --disable-tests
|
||||||
|
|
||||||
|
. $topsrcdir/build/win64/mozconfig.vs2013
|
||||||
|
|
||||||
|
. "$topsrcdir/xulrunner/config/mozconfigs/common.override"
|
||||||
11
application/xulrunner/configure.in
Normal file
11
application/xulrunner/configure.in
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
dnl -*- Mode: Autoconf; tab-width: 2; indent-tabs-mode: nil; -*-
|
||||||
|
dnl vi: set tabstop=2 shiftwidth=2 expandtab:
|
||||||
|
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
|
dnl Things we need to carry from confvars.sh
|
||||||
|
AC_SUBST(MOZ_XULRUNNER)
|
||||||
|
AC_DEFINE(MOZ_XULRUNNER)
|
||||||
|
|
||||||
|
dnl Optional parts of the build.
|
||||||
28
application/xulrunner/confvars.sh
Normal file
28
application/xulrunner/confvars.sh
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
#! /bin/sh
|
||||||
|
# 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/.
|
||||||
|
|
||||||
|
MOZ_XULRUNNER=1
|
||||||
|
MC_OFFICIAL=1
|
||||||
|
|
||||||
|
MOZ_APP_NAME=xulrunner
|
||||||
|
MOZ_APP_DISPLAYNAME=XULRunner
|
||||||
|
MOZ_APP_VERSION=$MOZILLA_VERSION
|
||||||
|
MOZ_CHROME_FILE_FORMAT=omni
|
||||||
|
|
||||||
|
MOZ_UPDATER=1
|
||||||
|
|
||||||
|
if test "$OS_ARCH" = "WINNT"; then
|
||||||
|
MOZ_MAINTENANCE_SERVICE=
|
||||||
|
fi
|
||||||
|
|
||||||
|
MOZ_PLACES=1
|
||||||
|
MOZ_WEBRTC=1
|
||||||
|
MOZ_WEBGL_CONFORMANT=1
|
||||||
|
|
||||||
|
MOZ_EXTENSIONS_DEFAULT=" gio"
|
||||||
|
|
||||||
|
MOZ_SERVICES_COMMON=1
|
||||||
|
MOZ_SERVICES_SYNC=1
|
||||||
|
MOZ_SERVICES_HEALTHREPORT=
|
||||||
7
application/xulrunner/examples/moz.build
Normal file
7
application/xulrunner/examples/moz.build
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||||
|
# vim: set filetype=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/.
|
||||||
|
|
||||||
|
DIRS += ['simple']
|
||||||
43
application/xulrunner/examples/simple/application.ini
Normal file
43
application/xulrunner/examples/simple/application.ini
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
#filter substitution
|
||||||
|
[App]
|
||||||
|
;
|
||||||
|
; This field specifies your organization's name. This field is recommended,
|
||||||
|
; but optional.
|
||||||
|
Vendor=MozillaTest
|
||||||
|
;
|
||||||
|
; This field specifies your application's name. This field is required.
|
||||||
|
Name=Simple
|
||||||
|
;
|
||||||
|
; This field specifies your application's version. This field is required.
|
||||||
|
Version=0.1
|
||||||
|
;
|
||||||
|
; This field specifies your application's build ID (timestamp). This field is
|
||||||
|
; required.
|
||||||
|
BuildID=20070625
|
||||||
|
;
|
||||||
|
; This field specifies a compact copyright notice for your application. This
|
||||||
|
; field is optional.
|
||||||
|
Copyright=Copyright (c) 2004 Mozilla.org
|
||||||
|
;
|
||||||
|
; This ID is just an example. Every XUL app ought to have it's own unique ID.
|
||||||
|
; You can use the microsoft "guidgen" or "uuidgen" tools, or go on
|
||||||
|
; irc.mozilla.org and /msg botbot uuid. This field is optional.
|
||||||
|
ID={3aea3f07-ffe3-4060-bb03-bff3a5365e90}
|
||||||
|
|
||||||
|
[Gecko]
|
||||||
|
;
|
||||||
|
; This field is required. It specifies the minimum Gecko version that this
|
||||||
|
; application requires.
|
||||||
|
MinVersion=@MOZILLA_VERSION_U@
|
||||||
|
;
|
||||||
|
; This field is optional. It specifies the maximum Gecko version that this
|
||||||
|
; application requires. It should be specified if your application uses
|
||||||
|
; unfrozen interfaces.
|
||||||
|
MaxVersion=@MOZILLA_VERSION_U@
|
||||||
|
|
||||||
|
[Shell]
|
||||||
|
;
|
||||||
|
; This field specifies the location of your application's main icon with file
|
||||||
|
; extension excluded. NOTE: Unix style file separators are required. This
|
||||||
|
; field is optional.
|
||||||
|
Icon=chrome/icons/default/simple
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||||
|
# vim: set filetype=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/.
|
||||||
|
|
||||||
|
DIRS += ['public', 'src']
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||||
|
# vim: set filetype=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/.
|
||||||
|
|
||||||
|
XPIDL_SOURCES += [
|
||||||
|
'nsISimpleTest.idl',
|
||||||
|
]
|
||||||
|
|
||||||
|
XPIDL_MODULE = 'simple'
|
||||||
|
|
||||||
|
XPI_NAME = 'simple'
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
/* vim:set ts=2 sw=2 sts=2 et cin: */
|
||||||
|
/* 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/. */
|
||||||
|
|
||||||
|
#include "nsISupports.idl"
|
||||||
|
|
||||||
|
[scriptable, uuid(f2f71d91-0451-47ec-aaa0-166663a7711a)]
|
||||||
|
interface nsISimpleTest : nsISupports
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* This interface adds two numbers together and returns the result.
|
||||||
|
*/
|
||||||
|
long add(in long a, in long b);
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
/* vim:set ts=2 sw=2 sts=2 et cin: */
|
||||||
|
/* 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/. */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "nsISimpleTest.h"
|
||||||
|
#include "mozilla/ModuleUtils.h"
|
||||||
|
|
||||||
|
class SimpleTest : public nsISimpleTest
|
||||||
|
{
|
||||||
|
~SimpleTest() {}
|
||||||
|
public:
|
||||||
|
NS_DECL_ISUPPORTS
|
||||||
|
NS_DECL_NSISIMPLETEST
|
||||||
|
};
|
||||||
|
|
||||||
|
NS_IMPL_ISUPPORTS(SimpleTest, nsISimpleTest)
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
SimpleTest::Add(int32_t a, int32_t b, int32_t *r)
|
||||||
|
{
|
||||||
|
printf("add(%d,%d) from C++\n", a, b);
|
||||||
|
|
||||||
|
*r = a + b;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_GENERIC_FACTORY_CONSTRUCTOR(SimpleTest)
|
||||||
|
|
||||||
|
// 5e14b432-37b6-4377-923b-c987418d8429
|
||||||
|
#define SIMPLETEST_CID \
|
||||||
|
{ 0x5e14b432, 0x37b6, 0x4377, \
|
||||||
|
{ 0x92, 0x3b, 0xc9, 0x87, 0x41, 0x8d, 0x84, 0x29 } }
|
||||||
|
|
||||||
|
NS_DEFINE_NAMED_CID(SIMPLETEST_CID);
|
||||||
|
|
||||||
|
static const mozilla::Module::CIDEntry kSimpleCIDs[] = {
|
||||||
|
{ &kSIMPLETEST_CID, false, nullptr, SimpleTestConstructor },
|
||||||
|
{ nullptr }
|
||||||
|
};
|
||||||
|
|
||||||
|
static const mozilla::Module::ContractIDEntry kSimpleContracts[] = {
|
||||||
|
{ "@test.mozilla.org/simple-test;1?impl=c++", &kSIMPLETEST_CID },
|
||||||
|
{ nullptr }
|
||||||
|
};
|
||||||
|
|
||||||
|
static const mozilla::Module kSimpleModule = {
|
||||||
|
mozilla::Module::kVersion,
|
||||||
|
kSimpleCIDs,
|
||||||
|
kSimpleContracts
|
||||||
|
};
|
||||||
|
|
||||||
|
NSMODULE_DEFN(SimpleTestModule) = &kSimpleModule;
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
/* vim:set ts=2 sw=2 sts=2 et cin: */
|
||||||
|
/* 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/. */
|
||||||
|
|
||||||
|
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||||
|
|
||||||
|
function SimpleTest() {
|
||||||
|
}
|
||||||
|
|
||||||
|
SimpleTest.prototype = {
|
||||||
|
classID: Components.ID("{4177e257-a0dc-49b9-a774-522a000a49fa}"),
|
||||||
|
|
||||||
|
QueryInterface: function(iid) {
|
||||||
|
if (iid.equals(Components.interfaces.nsISimpleTest) ||
|
||||||
|
iid.equals(Components.interfaces.nsISupports))
|
||||||
|
return this;
|
||||||
|
throw Components.results.NS_ERROR_NO_INTERFACE;
|
||||||
|
},
|
||||||
|
|
||||||
|
add: function(a, b) {
|
||||||
|
dump("add(" + a + "," + b + ") from JS\n");
|
||||||
|
return a + b;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.NSGetFactory = XPCOMUtils.generateNSGetFactory([SimpleTest]);
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
component {4177e257-a0dc-49b9-a774-522a000a49fa} SimpleTest.js
|
||||||
|
contract @test.mozilla.org/simple-test;1?impl=js {4177e257-a0dc-49b9-a774-522a000a49fa}
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||||
|
# vim: set filetype=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/.
|
||||||
|
|
||||||
|
SOURCES += [
|
||||||
|
'SimpleTest.cpp',
|
||||||
|
]
|
||||||
|
|
||||||
|
XPCOMBinaryComponent('simpletest')
|
||||||
|
|
||||||
|
EXTRA_COMPONENTS += [
|
||||||
|
'SimpleTest.js',
|
||||||
|
'SimpleTest.manifest',
|
||||||
|
]
|
||||||
|
|
||||||
|
XPI_NAME = 'simple'
|
||||||
|
|
||||||
|
if CONFIG['GNU_CXX']:
|
||||||
|
CXXFLAGS += ['-Wshadow']
|
||||||
17
application/xulrunner/examples/simple/content/simple.js
Normal file
17
application/xulrunner/examples/simple/content/simple.js
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
/* vim:set ts=2 sw=2 sts=2 et cin: */
|
||||||
|
/* 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/. */
|
||||||
|
|
||||||
|
function onButtonClick() {
|
||||||
|
var textbox = document.getElementById("textbox");
|
||||||
|
|
||||||
|
var contractid = (textbox.value % 2 == 0) ?
|
||||||
|
"@test.mozilla.org/simple-test;1?impl=js" :
|
||||||
|
"@test.mozilla.org/simple-test;1?impl=c++";
|
||||||
|
|
||||||
|
var test = Components.classes[contractid].
|
||||||
|
createInstance(Components.interfaces.nsISimpleTest);
|
||||||
|
|
||||||
|
textbox.value = test.add(textbox.value, 1);
|
||||||
|
}
|
||||||
20
application/xulrunner/examples/simple/content/simple.xul
Normal file
20
application/xulrunner/examples/simple/content/simple.xul
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
# vim:set ts=8 sw=8 sts=8 noet:
|
||||||
|
# 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/.
|
||||||
|
|
||||||
|
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
|
||||||
|
|
||||||
|
<!DOCTYPE window SYSTEM "chrome://simple/locale/simple.dtd">
|
||||||
|
|
||||||
|
<window
|
||||||
|
id = "simple"
|
||||||
|
title = "&simple.title;"
|
||||||
|
xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||||
|
<script src="chrome://simple/content/simple.js"/>
|
||||||
|
<vbox>
|
||||||
|
<textbox id="textbox" value="&simple.textValue;" flex="1"/>
|
||||||
|
<button id="button" label="&simple.buttonLabel;" oncommand="onButtonClick();"/>
|
||||||
|
</vbox>
|
||||||
|
</window>
|
||||||
BIN
application/xulrunner/examples/simple/icons/simple.ico
Normal file
BIN
application/xulrunner/examples/simple/icons/simple.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 29 KiB |
12
application/xulrunner/examples/simple/jar.mn
Normal file
12
application/xulrunner/examples/simple/jar.mn
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
# 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/.
|
||||||
|
|
||||||
|
simple.jar:
|
||||||
|
% content simple %content/
|
||||||
|
content/simple.xul (content/simple.xul)
|
||||||
|
content/simple.js (content/simple.js)
|
||||||
|
|
||||||
|
en-US.jar:
|
||||||
|
% locale simple en-US %locale/en-US/
|
||||||
|
locale/en-US/simple.dtd (locale/simple.dtd)
|
||||||
7
application/xulrunner/examples/simple/locale/simple.dtd
Normal file
7
application/xulrunner/examples/simple/locale/simple.dtd
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
<!-- 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/. -->
|
||||||
|
|
||||||
|
<!ENTITY simple.title "Simple App">
|
||||||
|
<!ENTITY simple.textValue "0">
|
||||||
|
<!ENTITY simple.buttonLabel "Increment">
|
||||||
22
application/xulrunner/examples/simple/moz.build
Normal file
22
application/xulrunner/examples/simple/moz.build
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||||
|
# vim: set filetype=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/.
|
||||||
|
|
||||||
|
DIRS += ['components']
|
||||||
|
|
||||||
|
XPI_NAME = 'simple'
|
||||||
|
|
||||||
|
JAR_MANIFESTS += ['jar.mn']
|
||||||
|
|
||||||
|
JS_PREFERENCE_FILES += [
|
||||||
|
'simple-prefs.js',
|
||||||
|
]
|
||||||
|
|
||||||
|
FINAL_TARGET_PP_FILES += [
|
||||||
|
'application.ini',
|
||||||
|
]
|
||||||
|
|
||||||
|
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
|
||||||
|
FINAL_TARGET_FILES.chrome.icons.default += ['icons/simple.ico']
|
||||||
6
application/xulrunner/examples/simple/simple-prefs.js
Normal file
6
application/xulrunner/examples/simple/simple-prefs.js
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
/* 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/. */
|
||||||
|
|
||||||
|
pref("toolkit.defaultChromeURI", "chrome://simple/content/simple.xul");
|
||||||
|
pref("general.useragent.extra.simple", "SimpleApp/0.1");
|
||||||
148
application/xulrunner/installer/Makefile.in
Normal file
148
application/xulrunner/installer/Makefile.in
Normal file
|
|
@ -0,0 +1,148 @@
|
||||||
|
# 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/.
|
||||||
|
|
||||||
|
STANDALONE_MAKEFILE := 1
|
||||||
|
|
||||||
|
NO_PKG_FILES = \
|
||||||
|
xulrunner-config \
|
||||||
|
regchrome* \
|
||||||
|
regxpcom* \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
# We want xpcshell, run-mozilla and install_app.py in the SDK but not in the binary package.
|
||||||
|
ifndef STAGE_SDK
|
||||||
|
NO_PKG_FILES += \
|
||||||
|
xpcshell* \
|
||||||
|
run-mozilla* \
|
||||||
|
install_app.py \
|
||||||
|
$(NULL)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# If we're on mac, we don't want an end-user-facing DMG, we want a .tar.bz2
|
||||||
|
# which developers then use to package their application.
|
||||||
|
|
||||||
|
ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
|
||||||
|
MOZ_PKG_FORMAT = BZ2
|
||||||
|
_APPNAME = XUL.framework
|
||||||
|
_BINPATH = /$(_APPNAME)/Versions/Current
|
||||||
|
_RESPATH := $(_BINPATH)
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(topsrcdir)/config/rules.mk
|
||||||
|
|
||||||
|
INSTALL_SDK = 1
|
||||||
|
|
||||||
|
include $(topsrcdir)/toolkit/mozapps/installer/signing.mk
|
||||||
|
include $(topsrcdir)/toolkit/mozapps/installer/packager.mk
|
||||||
|
|
||||||
|
# Add pkg-config files to the install:: target
|
||||||
|
|
||||||
|
pkg_config_files = \
|
||||||
|
libxul.pc \
|
||||||
|
libxul-embedding.pc \
|
||||||
|
mozilla-js.pc \
|
||||||
|
mozilla-plugin.pc \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
ifdef MOZ_NATIVE_NSPR
|
||||||
|
NSPR_NAME=nspr
|
||||||
|
NSPR_VERSION=$(shell $(NSPR_CONFIG) --version)
|
||||||
|
else
|
||||||
|
pkg_config_files += mozilla-nspr.pc
|
||||||
|
NSPR_NAME=mozilla-nspr
|
||||||
|
FULL_NSPR_CFLAGS=-I\$${includedir}
|
||||||
|
FULL_NSPR_LIBS=$(subst $(prefix),\$${sdkdir},$(shell $(DEPTH)/nsprpub/config/nspr-config --libs))
|
||||||
|
NSPR_VERSION=$(shell $(DEPTH)/nsprpub/config/nspr-config --version)
|
||||||
|
endif
|
||||||
|
|
||||||
|
MOZ_XUL_LINK = -lxpcomglue_s -lxul
|
||||||
|
ifdef JS_SHARED_LIBRARY
|
||||||
|
MOZ_JS_LINK = -lmozjs
|
||||||
|
else
|
||||||
|
MOZ_JS_LINK = $(MOZ_XUL_LINK)
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(warning FULL_NSPR_CFLAGS=$(FULL_NSPR_CFLAGS))
|
||||||
|
|
||||||
|
ifndef MOZ_NATIVE_NSS
|
||||||
|
pkg_config_files += mozilla-nss.pc
|
||||||
|
endif
|
||||||
|
|
||||||
|
%.pc: $(srcdir)/%.pc.in $(GLOBAL_DEPS)
|
||||||
|
cat $< | sed \
|
||||||
|
-e "s|%prefix%|$(prefix)|" \
|
||||||
|
-e "s|%includedir%|$(includedir)|" \
|
||||||
|
-e "s|%idldir%|$(idldir)|" \
|
||||||
|
-e "s|%sdkdir%|$(sdkdir)|" \
|
||||||
|
-e "s|%MOZ_APP_NAME%|$(MOZ_APP_NAME)|" \
|
||||||
|
-e "s|%MOZILLA_VERSION%|$(MOZ_APP_VERSION)|" \
|
||||||
|
-e "s|%WCHAR_CFLAGS%|$(WCHAR_CFLAGS)|" \
|
||||||
|
-e "s|%FULL_NSPR_LIBS%|$(FULL_NSPR_LIBS)|" \
|
||||||
|
-e "s|%FULL_NSPR_CFLAGS%|$(FULL_NSPR_CFLAGS)|" \
|
||||||
|
-e "s|%NSPR_NAME%|$(NSPR_NAME)|" \
|
||||||
|
-e "s|%NSPR_VERSION%|$(NSPR_VERSION)|" \
|
||||||
|
-e "s|%MOZ_XUL_LINK%|$(MOZ_XUL_LINK)|" \
|
||||||
|
-e "s|%MOZ_JS_LINK%|$(MOZ_JS_LINK)|" > $@
|
||||||
|
chmod 644 $@
|
||||||
|
|
||||||
|
install:: $(pkg_config_files)
|
||||||
|
@echo pkg_config_file: $(pkg_config_files)
|
||||||
|
$(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(libdir)/pkgconfig
|
||||||
|
|
||||||
|
GARBAGE += $(pkg_config_files)
|
||||||
|
|
||||||
|
GARBAGE += debian/changelog
|
||||||
|
|
||||||
|
DEBDESTDIR=debian/$(MOZ_BUILD_APP)
|
||||||
|
|
||||||
|
GRE_BUILDID = $(shell $(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(DIST)/bin/platform.ini Build BuildID)
|
||||||
|
MOZ_DEB_TIMESTAMP = "$(shell date +"%a, %d %b %Y %T %z" )"
|
||||||
|
|
||||||
|
DEFINES += \
|
||||||
|
-DGRE_MILESTONE=$(GRE_MILESTONE) \
|
||||||
|
-DGRE_BUILDID=$(GRE_BUILDID) \
|
||||||
|
-DMOZ_DEB_TIMESTAMP=$(MOZ_DEB_TIMESTAMP) \
|
||||||
|
-DMOZ_APP_NAME=$(MOZ_APP_NAME) \
|
||||||
|
-Dinstalldir=$(installdir) \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
ifeq ($(OS_TARGET),Linux)
|
||||||
|
debian/changelog: $(srcdir)/debian/changelog.in $(DIST)/bin/platform.ini
|
||||||
|
$(call py_action,preprocessor, \
|
||||||
|
$(AUTOMATION_PPARGS) $(DEFINES) $(ACDEFINES) $^ -o $@)
|
||||||
|
|
||||||
|
debian/xulrunner.links: $(srcdir)/debian/xulrunner.links.in
|
||||||
|
$(call py_action,preprocessor, \
|
||||||
|
$(AUTOMATION_PPARGS) $(DEFINES) $(ACDEFINES) $^ -o $@)
|
||||||
|
|
||||||
|
debian/xulrunner.service: $(srcdir)/debian/xulrunner.service.in
|
||||||
|
$(call py_action,preprocessor, \
|
||||||
|
$(AUTOMATION_PPARGS) $(DEFINES) $(ACDEFINES) $^ -o $@)
|
||||||
|
|
||||||
|
debian/prerm: $(srcdir)/debian/prerm.in
|
||||||
|
$(call py_action,preprocessor, \
|
||||||
|
$(AUTOMATION_PPARGS) $(DEFINES) $(ACDEFINES) $^ -o $@)
|
||||||
|
|
||||||
|
debian/postinst: $(srcdir)/debian/postinst.in
|
||||||
|
$(call py_action,preprocessor, \
|
||||||
|
$(AUTOMATION_PPARGS) $(DEFINES) $(ACDEFINES) $^ -o $@)
|
||||||
|
|
||||||
|
package:
|
||||||
|
$(MAKE) package -C $(DEPTH)
|
||||||
|
|
||||||
|
deb: package debian/changelog debian/xulrunner.service debian/xulrunner.links
|
||||||
|
$(NSINSTALL) $(topsrcdir)/$(MOZ_BUILD_APP)/installer/debian .
|
||||||
|
rm -fr $(DEBDESTDIR)
|
||||||
|
$(NSINSTALL) -D $(DEBDESTDIR)/$(installdir)
|
||||||
|
cp -pRL $(DEPTH)/dist/$(MOZ_BUILD_APP)/* $(DEBDESTDIR)/$(installdir)
|
||||||
|
$(NSINSTALL) -D $(DEBDESTDIR)/usr/share/dbus-1/services/
|
||||||
|
cp debian/$(MOZ_BUILD_APP).service $(DEBDESTDIR)/usr/share/dbus-1/services/org.mozilla.$(MOZ_BUILD_APP).service
|
||||||
|
dh_link; fakeroot dh_fixperms; fakeroot dh_installdeb; fakeroot dh_shlibdeps; fakeroot dh_gencontrol; fakeroot dh_md5sums; fakeroot dh_builddeb;
|
||||||
|
endif
|
||||||
|
|
||||||
|
DEB_BUILD_ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH)
|
||||||
|
# package name comes from xulrunner/installer/debian/changelog.in
|
||||||
|
DEB_PKG_NAME = $(MOZ_PKG_APPNAME)_$(GRE_MILESTONE)-$(GRE_BUILDID)_$(DEB_BUILD_ARCH).deb
|
||||||
|
# relative to $(DIST)
|
||||||
|
UPLOAD_EXTRA_FILES += ../xulrunner/$(DEB_PKG_NAME)
|
||||||
7
application/xulrunner/installer/debian/changelog.in
Normal file
7
application/xulrunner/installer/debian/changelog.in
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# if the naming changes please modify DEB_PKG_NAME in xulrunner/installer/Makefile.in as well
|
||||||
|
#filter substitution
|
||||||
|
xulrunner (@GRE_MILESTONE@-@GRE_BUILDID@) unstable; urgency=low
|
||||||
|
|
||||||
|
* Mozilla Nightly (Closes: #nnnn) <nnnn is the bug number of your ITP>
|
||||||
|
|
||||||
|
-- Mozilla Runtime <mobile-feedback@mozilla.com> @MOZ_DEB_TIMESTAMP@
|
||||||
1
application/xulrunner/installer/debian/compat
Normal file
1
application/xulrunner/installer/debian/compat
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
4
|
||||||
48
application/xulrunner/installer/debian/control
Normal file
48
application/xulrunner/installer/debian/control
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
Source: xulrunner
|
||||||
|
Section: user/network
|
||||||
|
Priority: extra
|
||||||
|
Maintainer: Mobile Feedback <mobile-feedback@mozilla.com>
|
||||||
|
Build-Depends: debhelper (>= 5)
|
||||||
|
Standards-Version: 3.7.2
|
||||||
|
|
||||||
|
Package: xulrunner
|
||||||
|
Architecture: any
|
||||||
|
Depends: ${shlibs:Depends}
|
||||||
|
Description: Web and JavaScript engine used by the Firefox Web browser
|
||||||
|
The Mozilla runtime is the modern browser engine, also known as "Gecko," that powers Firefox and can be embedded by other applications
|
||||||
|
XB-Maemo-Display-Name: Mozilla Runtime
|
||||||
|
XB-Maemo-Icon-26:
|
||||||
|
MB5!.1PT*&@H````-24A$4@```!H````:"`8```"I2DS.````"7!(67,```L3
|
||||||
|
M```+$P$`FIP8```%;$E$051(B:667XQ4U1W'/_>>>V?NG=F9V3^S_W%9<'#!
|
||||||
|
M/Q1;NQ:EQH@:T2"EH>&A34R;]$U?Q%9-VH:41BUJFV"-B<8'^Z!-VP=E?37&
|
||||||
|
M5=18L"SACVMVH<M.9W>8V9G9N7-G[O_3AP6$LD"$;W*3<T_R^W[.]Y=S3@Z<
|
||||||
|
ME90H_)\DE\Y=J]3SHW_\1)6O#FV2NVD'D*\,W<T;JWK.0W>3OA[012N68]LW
|
||||||
|
MD1W^!8?W_XGANQ^C5?V$(V/_8L.VGU.:.JG\\M@[UPK2SD/V#=U,K=QDW;TF
|
||||||
|
M#S_[&HZC4,^O9_T6'84VWO[PI]>32/MFV.URZ^;G273UT7^7`3&)#%*!TM"U
|
||||||
|
MS]ZHTC?\B/SUD7\J>\E?,TC^'4%LA4?DS\O^V]<H<L!I.6`:,5S[:#B^T)?1
|
||||||
|
M\MJZ>]YF8:GLB3@/WIQ!,U1F9AH<V]VX&DB1N]'HS6WFN]L>8>"V`6(=O;)S
|
||||||
|
M8]O<?"!E%/+ZFZ_R_'-[U;4CZTX6NA_8;VZX_X>IWO3W4\,]W;II4CE3MZJS
|
||||||
|
M9R9JIPICSOBQ,4Z_4+U<HH@H?H"W7CY`@,&NEUY1>M;?GFBC^=2NWR-434HU
|
||||||
|
M;OY@\]:'8OTW;3]N&@RM74ER1195Z!0S1E^QS5B3CZL[BHJ<L$_L^1T'?[O_
|
||||||
|
MDD07_LCQQW]$;M-3M&JEL8EJ[M$?/QN"2*OI[-"JW(AX[&<[J:174NK(D<T-
|
||||||
|
M(F*"N>EYBJ<7*)VI4%EHL'!ZWG7R\[_AT)Z7+O06YR%_&>PBU;V#RLE]%/]S
|
||||||
|
M5/A6YK7WIP+1WCLJA"Z:C44*E1H=]SZ*TMF-D=31@?J9&E:Q@EVW<2IUM$Q"
|
||||||
|
M\U8/W1>MW9)GXMW#Y_R_.;!6(^+SO[VH;/[K%XN'QJ>/C7VR+]CVAY1^XRVJ
|
||||||
|
M%A?(9`IO=`MS'8-XAH[M!5B-%JUZ`]_U20UT0;-%Z_@I8J&OJ<.]S['QF=RR
|
||||||
|
MK;M(]^S=R<8-[PA148S\89*WW$GVUN^1T049324I)-;D?VG,E:F7+%+?N9'%
|
||||||
|
M:I7J=!&W+TLSE<;Y^."?>>^))R].=+%4#+&3,%1"LX?6Z`[\U`W87\]0*Y2H
|
||||||
|
MN1YU)\0UX]A^2*0+HJ2!.;*2MM4K$%T91,M%B2>VPM;LN5VWC+9T0>P.K!;,
|
||||||
|
M%8AL"RN10$G$"7K:(1G#C1N8G2F2=XP02/!5B=-R\<(63!>1PH!(K"*W)L<4
|
||||||
|
MY>5!;4X/]<5V)AM0KX(J"!(F]722T/.(!KHQLYTT58FN0A!&1&Z(W_+P\B6\
|
||||||
|
M`U_BZW%D6U805FX`/E\>%/D&MB/(SX,:@6&"ZQ`T&MC51?SV#*X21Q,0DZ`&
|
||||||
|
M+J$?X9>K^">F""HE@DH-?!>D;5R^=:%E4;-<'#N!],#WH!D#31`,KB!038)\
|
||||||
|
M$5W5<%4)00"A@CST;[P3D_BVA73J$'J`6[\\R)THXVS,T[ZJ`]\#Q8;:/&@Z
|
||||||
|
M%(`C<;QL%X$O(!T#1<!"!8X>)5I<`,^&R`.$!<Q<83-0I5[X"*7S-M(IJ!6@
|
||||||
|
M50-A@&-#N0"#JXFZ^J&B@YF&\@($$AP+\``)A!,P>Q(NN!DN;9_2Q._8CB\,
|
||||||
|
M(@]:<Q#Y$#H0^-!8A,(T%&?`5T#)0*B"-7T6I$CP_PBS!ZX,HEP@3/3C)D:)
|
||||||
|
MXA"5(*Q!%"Y]01-D"%*'P`17!3L`KP'2!J(/8'8/>,VK@(A@]CBH:PGM'+)\
|
||||||
|
M=EH#G*55JQF(C8"O@]T`IP&1!()).+4+ZE^=,[L2"&`1YKZ$L!=J-X&B0AIH
|
||||||
|
M`C;(&O@.!&6(3H.<!N8_A9E?06W\*M[+:A!23T/J('2UH$TNG2!#0DI".H#,
|
||||||
|
M)&1>!-8M9_!MWFTQB*V&Q"AX(V`,@-3`*X*<`O\@^">6HEX?Z$*90/QLO<]2
|
||||||
|
:+Z,K%?P/&D=O=_6]@+\`````245.1*Y"8((`
|
||||||
|
`
|
||||||
36
application/xulrunner/installer/debian/icon_base64
Normal file
36
application/xulrunner/installer/debian/icon_base64
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
begin 644 -m
|
||||||
|
MB5!.1PT*&@H````-24A$4@```!H````:"`8```"I2DS.````"7!(67,```L3
|
||||||
|
M```+$P$`FIP8```%;$E$051(B:667XQ4U1W'/_>>>V?NG=F9V3^S_W%9<'#!
|
||||||
|
M/Q1;NQ:EQH@:T2"EH>&A34R;]$U?Q%9-VH:41BUJFV"-B<8'^Z!-VP=E?37&
|
||||||
|
M5=18L"SACVMVH<M.9W>8V9G9N7-G[O_3AP6$LD"$;W*3<T_R^W[.]Y=S3@Z<
|
||||||
|
ME90H_)\DE\Y=J]3SHW_\1)6O#FV2NVD'D*\,W<T;JWK.0W>3OA[012N68]LW
|
||||||
|
MD1W^!8?W_XGANQ^C5?V$(V/_8L.VGU.:.JG\\M@[UPK2SD/V#=U,K=QDW;TF
|
||||||
|
M#S_[&HZC4,^O9_T6'84VWO[PI]>32/MFV.URZ^;G273UT7^7`3&)#%*!TM"U
|
||||||
|
MS]ZHTC?\B/SUD7\J>\E?,TC^'4%LA4?DS\O^V]<H<L!I.6`:,5S[:#B^T)?1
|
||||||
|
M\MJZ>]YF8:GLB3@/WIQ!,U1F9AH<V]VX&DB1N]'HS6WFN]L>8>"V`6(=O;)S
|
||||||
|
M8]O<?"!E%/+ZFZ_R_'-[U;4CZTX6NA_8;VZX_X>IWO3W4\,]W;II4CE3MZJS
|
||||||
|
M9R9JIPICSOBQ,4Z_4+U<HH@H?H"W7CY`@,&NEUY1>M;?GFBC^=2NWR-434HU
|
||||||
|
M;OY@\]:'8OTW;3]N&@RM74ER1195Z!0S1E^QS5B3CZL[BHJ<L$_L^1T'?[O_
|
||||||
|
MDD07_LCQQW]$;M-3M&JEL8EJ[M$?/QN"2*OI[-"JW(AX[&<[J:174NK(D<T-
|
||||||
|
M(F*"N>EYBJ<7*)VI4%EHL'!ZWG7R\[_AT)Z7+O06YR%_&>PBU;V#RLE]%/]S
|
||||||
|
M5/A6YK7WIP+1WCLJA"Z:C44*E1H=]SZ*TMF-D=31@?J9&E:Q@EVW<2IUM$Q"
|
||||||
|
M\U8/W1>MW9)GXMW#Y_R_.;!6(^+SO[VH;/[K%XN'QJ>/C7VR+]CVAY1^XRVJ
|
||||||
|
M%A?(9`IO=`MS'8-XAH[M!5B-%JUZ`]_U20UT0;-%Z_@I8J&OJ<.]S['QF=RR
|
||||||
|
MK;M(]^S=R<8-[PA148S\89*WW$GVUN^1T049324I)-;D?VG,E:F7+%+?N9'%
|
||||||
|
M:I7J=!&W+TLSE<;Y^."?>>^))R].=+%4#+&3,%1"LX?6Z`[\U`W87\]0*Y2H
|
||||||
|
MN1YU)\0UX]A^2*0+HJ2!.;*2MM4K$%T91,M%B2>VPM;LN5VWC+9T0>P.K!;,
|
||||||
|
M%8AL"RN10$G$"7K:(1G#C1N8G2F2=XP02/!5B=-R\<(63!>1PH!(K"*W)L<4
|
||||||
|
MY>5!;4X/]<5V)AM0KX(J"!(F]722T/.(!KHQLYTT58FN0A!&1&Z(W_+P\B6\
|
||||||
|
M`U_BZW%D6U805FX`/E\>%/D&MB/(SX,:@6&"ZQ`T&MC51?SV#*X21Q,0DZ`&
|
||||||
|
M+J$?X9>K^">F""HE@DH-?!>D;5R^=:%E4;-<'#N!],#WH!D#31`,KB!038)\
|
||||||
|
M$5W5<%4)00"A@CST;[P3D_BVA73J$'J`6[\\R)THXVS,T[ZJ`]\#Q8;:/&@Z
|
||||||
|
M%(`C<;QL%X$O(!T#1<!"!8X>)5I<`,^&R`.$!<Q<83-0I5[X"*7S-M(IJ!6@
|
||||||
|
M50-A@&-#N0"#JXFZ^J&B@YF&\@($$AP+\``)A!,P>Q(NN!DN;9_2Q._8CB\,
|
||||||
|
M(@]:<Q#Y$#H0^-!8A,(T%&?`5T#)0*B"-7T6I$CP_PBS!ZX,HEP@3/3C)D:)
|
||||||
|
MXA"5(*Q!%"Y]01-D"%*'P`17!3L`KP'2!J(/8'8/>,VK@(A@]CBH:PGM'+)\
|
||||||
|
M=EH#G*55JQF(C8"O@]T`IP&1!()).+4+ZE^=,[L2"&`1YKZ$L!=J-X&B0AIH
|
||||||
|
M`C;(&O@.!&6(3H.<!N8_A9E?06W\*M[+:A!23T/J('2UH$TNG2!#0DI".H#,
|
||||||
|
M)&1>!-8M9_!MWFTQB*V&Q"AX(V`,@-3`*X*<`O\@^">6HEX?Z$*90/QLO<]2
|
||||||
|
:+Z,K%?P/&D=O=_6]@+\`````245.1*Y"8((`
|
||||||
|
`
|
||||||
|
end
|
||||||
2
application/xulrunner/installer/debian/menu
Normal file
2
application/xulrunner/installer/debian/menu
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
?package(xulrunner):needs="X11|text|vc|wm" section="Apps/Internet"\
|
||||||
|
title="xulrunner" command="/usr/bin/xulrunner"
|
||||||
42
application/xulrunner/installer/debian/postinst.in
Normal file
42
application/xulrunner/installer/debian/postinst.in
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
#literal #! /bin/sh
|
||||||
|
#filter substitution
|
||||||
|
# postinst script for moz
|
||||||
|
#
|
||||||
|
# see: dh_installdeb(1)
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# summary of how this script can be called:
|
||||||
|
# * <postinst> `configure' <most-recently-configured-version>
|
||||||
|
# * <old-postinst> `abort-upgrade' <new version>
|
||||||
|
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
|
||||||
|
# <new-version>
|
||||||
|
# * <postinst> `abort-remove'
|
||||||
|
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
|
||||||
|
# <failed-install-package> <version> `removing'
|
||||||
|
# <conflicting-package> <version>
|
||||||
|
# for details, see http://www.debian.org/doc/debian-policy/ or
|
||||||
|
# the debian-policy package
|
||||||
|
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
configure)
|
||||||
|
;;
|
||||||
|
|
||||||
|
abort-upgrade|abort-remove|abort-deconfigure)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "postinst called with unknown argument \`$1'" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
#ifdef MOZ_WIDGET_GTK
|
||||||
|
gtk-update-icon-cache /usr/share/icons/hicolor
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
||||||
29
application/xulrunner/installer/debian/prerm.in
Normal file
29
application/xulrunner/installer/debian/prerm.in
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
#literal #! /bin/sh
|
||||||
|
#filter substitution
|
||||||
|
# prerm script for moz
|
||||||
|
#
|
||||||
|
# see: dh_installdeb(1)
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
remove|upgrade|deconfigure)
|
||||||
|
;;
|
||||||
|
|
||||||
|
failed-upgrade)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "postinst called with unknown argument \`$1'" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
#ifdef MOZ_WIDGET_GTK
|
||||||
|
gtk-update-icon-cache /usr/share/icons/hicolor
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
#filter substitution
|
||||||
|
@installdir@/xulrunner /usr/bin/xulrunner
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
#filter substitution
|
||||||
|
[D-BUS Service]
|
||||||
|
Name=org.mozilla.@MOZ_APP_NAME@
|
||||||
|
Exec=@installdir@/xulrunner
|
||||||
10
application/xulrunner/installer/libxul-embedding.pc.in
Normal file
10
application/xulrunner/installer/libxul-embedding.pc.in
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
prefix=%prefix%
|
||||||
|
sdkdir=%sdkdir%
|
||||||
|
includedir=%includedir%
|
||||||
|
idldir=%idldir%
|
||||||
|
|
||||||
|
Name: libxul-embedding
|
||||||
|
Description: Static library for version-independent embedding of the Mozilla runtime
|
||||||
|
Version: %MOZILLA_VERSION%
|
||||||
|
Libs: -L${sdkdir}/lib -lxpcomglue -ldl
|
||||||
|
Cflags: -DXPCOM_GLUE -I${includedir} %WCHAR_CFLAGS%
|
||||||
11
application/xulrunner/installer/libxul.pc.in
Normal file
11
application/xulrunner/installer/libxul.pc.in
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
prefix=%prefix%
|
||||||
|
sdkdir=%sdkdir%
|
||||||
|
includedir=%includedir%
|
||||||
|
idldir=%idldir%
|
||||||
|
|
||||||
|
Name: libxul
|
||||||
|
Description: The Mozilla Runtime and Embedding Engine
|
||||||
|
Version: %MOZILLA_VERSION%
|
||||||
|
Requires: %NSPR_NAME% >= %NSPR_VERSION%
|
||||||
|
Libs: -L${sdkdir}/lib %MOZ_XUL_LINK%
|
||||||
|
Cflags: -I${includedir} %WCHAR_CFLAGS%
|
||||||
6
application/xulrunner/installer/moz.build
Normal file
6
application/xulrunner/installer/moz.build
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||||
|
# vim: set filetype=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/.
|
||||||
|
|
||||||
10
application/xulrunner/installer/mozilla-js.pc.in
Normal file
10
application/xulrunner/installer/mozilla-js.pc.in
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
prefix=%prefix%
|
||||||
|
sdkdir=%sdkdir%
|
||||||
|
includedir=%includedir%
|
||||||
|
|
||||||
|
Name: JavaScript
|
||||||
|
Description: The Mozilla JavaScript Library
|
||||||
|
Version: %MOZILLA_VERSION%
|
||||||
|
Requires: %NSPR_NAME% >= %NSPR_VERSION%
|
||||||
|
Libs: -L${sdkdir}/lib %MOZ_JS_LINK%
|
||||||
|
Cflags: -I${includedir} -DXP_UNIX
|
||||||
11
application/xulrunner/installer/mozilla-nspr.pc.in
Normal file
11
application/xulrunner/installer/mozilla-nspr.pc.in
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
prefix=%prefix%
|
||||||
|
sdkdir=%sdkdir%
|
||||||
|
includedir=%includedir%/nspr
|
||||||
|
|
||||||
|
Name: NSPR
|
||||||
|
Description: The Netscape Portable Runtime
|
||||||
|
Version: %NSPR_VERSION%
|
||||||
|
Libs: %FULL_NSPR_LIBS%
|
||||||
|
Cflags: %FULL_NSPR_CFLAGS%
|
||||||
|
|
||||||
|
|
||||||
10
application/xulrunner/installer/mozilla-nss.pc.in
Normal file
10
application/xulrunner/installer/mozilla-nss.pc.in
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
prefix=%prefix%
|
||||||
|
sdkdir=%sdkdir%
|
||||||
|
includedir=%includedir%/nss
|
||||||
|
|
||||||
|
Name: NSS
|
||||||
|
Description: Mozilla Network Security Services
|
||||||
|
Version: %MOZILLA_VERSION%
|
||||||
|
Requires: %NSPR_NAME% >= %NSPR_VERSION%
|
||||||
|
Libs: -L${sdkdir}/lib -lsmime3 -lssl3 -lnss3 -lnssutil3
|
||||||
|
Cflags: -I${includedir}
|
||||||
8
application/xulrunner/installer/mozilla-plugin.pc.in
Normal file
8
application/xulrunner/installer/mozilla-plugin.pc.in
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
prefix=%prefix%
|
||||||
|
sdkdir=%sdkdir%
|
||||||
|
includedir=%includedir%
|
||||||
|
|
||||||
|
Name: Mozilla Plug-In API
|
||||||
|
Description: Mozilla Plug-In API
|
||||||
|
Version: %MOZILLA_VERSION%
|
||||||
|
Cflags: -I${includedir} -DXP_UNIX
|
||||||
39
application/xulrunner/locales/all-locales
Normal file
39
application/xulrunner/locales/all-locales
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
ar
|
||||||
|
bg
|
||||||
|
ca
|
||||||
|
cs
|
||||||
|
da
|
||||||
|
de
|
||||||
|
el
|
||||||
|
en-GB
|
||||||
|
es-AR
|
||||||
|
es-ES
|
||||||
|
eu
|
||||||
|
fi
|
||||||
|
fr
|
||||||
|
ga-IE
|
||||||
|
gu-IN
|
||||||
|
he
|
||||||
|
hu
|
||||||
|
hy-AM
|
||||||
|
it
|
||||||
|
ja
|
||||||
|
ja-JP-mac
|
||||||
|
ko
|
||||||
|
nb-NO
|
||||||
|
nl
|
||||||
|
nn-NO
|
||||||
|
mk
|
||||||
|
mn
|
||||||
|
pa-IN
|
||||||
|
pl
|
||||||
|
pt-BR
|
||||||
|
ro
|
||||||
|
ru
|
||||||
|
sk
|
||||||
|
sl
|
||||||
|
sq
|
||||||
|
sv-SE
|
||||||
|
tr
|
||||||
|
zh-CN
|
||||||
|
zh-TW
|
||||||
11
application/xulrunner/moz.build
Normal file
11
application/xulrunner/moz.build
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||||
|
# vim: set filetype=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/.
|
||||||
|
|
||||||
|
CONFIGURE_SUBST_FILES += ['installer/Makefile']
|
||||||
|
|
||||||
|
DIRS += [
|
||||||
|
'app',
|
||||||
|
]
|
||||||
7
application/xulrunner/moz.configure
Normal file
7
application/xulrunner/moz.configure
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||||
|
# vim: set filetype=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/.
|
||||||
|
|
||||||
|
include('../../toolkit/moz.configure')
|
||||||
11
application/xulrunner/stub/Makefile.in
Normal file
11
application/xulrunner/stub/Makefile.in
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
# 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/.
|
||||||
|
|
||||||
|
ifndef MOZ_WINCONSOLE
|
||||||
|
ifdef MOZ_DEBUG
|
||||||
|
MOZ_WINCONSOLE = 1
|
||||||
|
else
|
||||||
|
MOZ_WINCONSOLE = 0
|
||||||
|
endif
|
||||||
|
endif
|
||||||
51
application/xulrunner/stub/moz.build
Normal file
51
application/xulrunner/stub/moz.build
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||||
|
# vim: set filetype=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/.
|
||||||
|
|
||||||
|
# The value of XULRUNNER_STUB_NAME is generated by configure to allow XULRunner
|
||||||
|
# apps to override it using the --with-xulrunner-stub-name=<appname> argument.
|
||||||
|
# If this configure argument is not present then the default name is
|
||||||
|
# 'xulrunner-stub'.
|
||||||
|
|
||||||
|
# We don't want to create a dependency on mozglue.
|
||||||
|
# Statically link against the RTL on windows
|
||||||
|
GeckoProgram(CONFIG['XULRUNNER_STUB_NAME'], mozglue=None, msvcrt='static')
|
||||||
|
|
||||||
|
SOURCES += [
|
||||||
|
'nsXULStub.cpp',
|
||||||
|
]
|
||||||
|
|
||||||
|
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
|
||||||
|
FINAL_TARGET = 'dist/XUL.framework/Versions/%(MOZILLA_VERSION)s' % CONFIG
|
||||||
|
|
||||||
|
DEFINES['XPCOM_GLUE'] = True
|
||||||
|
|
||||||
|
LOCAL_INCLUDES += [
|
||||||
|
'/xpcom/base',
|
||||||
|
'/xpcom/build',
|
||||||
|
]
|
||||||
|
|
||||||
|
if CONFIG['OS_ARCH'] == 'WINNT':
|
||||||
|
LOCAL_INCLUDES += ['/toolkit/xre']
|
||||||
|
# this is an awful workaround - glandium
|
||||||
|
USE_LIBS += ['mfbt_staticruntime']
|
||||||
|
|
||||||
|
if CONFIG['_MSC_VER']:
|
||||||
|
WIN32_EXE_LDFLAGS += ['-ENTRY:wmainCRTStartup']
|
||||||
|
|
||||||
|
if CONFIG['OS_ARCH'] == 'WINNT':
|
||||||
|
DEFINES['MOZ_XULRUNNER'] = True
|
||||||
|
RCINCLUDE = 'xulrunner-stub.rc'
|
||||||
|
|
||||||
|
if CONFIG['OS_ARCH'] == 'WINNT':
|
||||||
|
OS_LIBS += [
|
||||||
|
'shell32',
|
||||||
|
]
|
||||||
|
|
||||||
|
DISABLE_STL_WRAPPING = True
|
||||||
|
|
||||||
|
# Need to link with CoreFoundation on Mac
|
||||||
|
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
|
||||||
|
OS_LIBS += CONFIG['TK_LIBS']
|
||||||
445
application/xulrunner/stub/nsXULStub.cpp
Normal file
445
application/xulrunner/stub/nsXULStub.cpp
Normal file
|
|
@ -0,0 +1,445 @@
|
||||||
|
/* 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/. */
|
||||||
|
|
||||||
|
#include "nsXPCOMGlue.h"
|
||||||
|
#include "nsINIParser.h"
|
||||||
|
#include "nsXPCOMPrivate.h" // for XP MAXPATHLEN
|
||||||
|
#include "nsXULAppAPI.h"
|
||||||
|
#include "nsIFile.h"
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#ifdef XP_WIN
|
||||||
|
#include <windows.h>
|
||||||
|
#include <io.h>
|
||||||
|
#if defined(_MSC_VER) && _MSC_VER < 1900
|
||||||
|
#define snprintf _snprintf
|
||||||
|
#define vsnprintf _vsnprintf
|
||||||
|
#endif
|
||||||
|
#define strcasecmp _stricmp
|
||||||
|
#define PATH_SEPARATOR_CHAR '\\'
|
||||||
|
#define R_OK 04
|
||||||
|
#elif defined(XP_MACOSX)
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <CoreFoundation/CoreFoundation.h>
|
||||||
|
#define PATH_SEPARATOR_CHAR '/'
|
||||||
|
#else
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#define PATH_SEPARATOR_CHAR '/'
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef XP_WIN
|
||||||
|
#define XRE_DONT_PROTECT_DLL_LOAD
|
||||||
|
#include "nsWindowsWMain.cpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define VERSION_MAXLEN 128
|
||||||
|
|
||||||
|
static void Output(bool isError, const char *fmt, ... )
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
|
||||||
|
#if (defined(XP_WIN) && !MOZ_WINCONSOLE)
|
||||||
|
char msg[2048];
|
||||||
|
|
||||||
|
vsnprintf(msg, sizeof(msg), fmt, ap);
|
||||||
|
|
||||||
|
UINT flags = MB_OK;
|
||||||
|
if (isError)
|
||||||
|
flags |= MB_ICONERROR;
|
||||||
|
else
|
||||||
|
flags |= MB_ICONINFORMATION;
|
||||||
|
|
||||||
|
wchar_t wide_msg[1024];
|
||||||
|
MultiByteToWideChar(CP_ACP,
|
||||||
|
0,
|
||||||
|
msg,
|
||||||
|
-1,
|
||||||
|
wide_msg,
|
||||||
|
sizeof(wide_msg) / sizeof(wchar_t));
|
||||||
|
|
||||||
|
MessageBoxW(nullptr, wide_msg, L"XULRunner", flags);
|
||||||
|
#else
|
||||||
|
vfprintf(stderr, fmt, ap);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return true if |arg| matches the given argument name.
|
||||||
|
*/
|
||||||
|
static bool IsArg(const char* arg, const char* s)
|
||||||
|
{
|
||||||
|
if (*arg == '-')
|
||||||
|
{
|
||||||
|
if (*++arg == '-')
|
||||||
|
++arg;
|
||||||
|
return !strcasecmp(arg, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(XP_WIN)
|
||||||
|
if (*arg == '/')
|
||||||
|
return !strcasecmp(++arg, s);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return true if |aDir| is a valid file/directory.
|
||||||
|
*/
|
||||||
|
static bool FolderExists(const char* aDir)
|
||||||
|
{
|
||||||
|
#ifdef XP_WIN
|
||||||
|
wchar_t wideDir[MAX_PATH];
|
||||||
|
MultiByteToWideChar(CP_UTF8, 0, aDir, -1, wideDir, MAX_PATH);
|
||||||
|
DWORD fileAttrs = GetFileAttributesW(wideDir);
|
||||||
|
return fileAttrs != INVALID_FILE_ATTRIBUTES;
|
||||||
|
#else
|
||||||
|
return access(aDir, R_OK) == 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static nsresult GetRealPath(const char* appDataFile, char* *aResult)
|
||||||
|
{
|
||||||
|
#ifdef XP_WIN
|
||||||
|
wchar_t wAppDataFile[MAX_PATH];
|
||||||
|
wchar_t wIniPath[MAX_PATH];
|
||||||
|
MultiByteToWideChar(CP_UTF8, 0, appDataFile, -1, wAppDataFile, MAX_PATH);
|
||||||
|
_wfullpath(wIniPath, wAppDataFile, MAX_PATH);
|
||||||
|
WideCharToMultiByte(CP_UTF8, 0, wIniPath, -1, *aResult, MAX_PATH, 0, 0);
|
||||||
|
#else
|
||||||
|
struct stat fileStat;
|
||||||
|
if (!realpath(appDataFile, *aResult) || stat(*aResult, &fileStat))
|
||||||
|
return NS_ERROR_FAILURE;
|
||||||
|
#endif
|
||||||
|
if (!*aResult || !**aResult)
|
||||||
|
return NS_ERROR_FAILURE;
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AutoAppData
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
AutoAppData(nsIFile* aINIFile) : mAppData(nullptr) {
|
||||||
|
nsresult rv = XRE_CreateAppData(aINIFile, &mAppData);
|
||||||
|
if (NS_FAILED(rv))
|
||||||
|
mAppData = nullptr;
|
||||||
|
}
|
||||||
|
~AutoAppData() {
|
||||||
|
if (mAppData)
|
||||||
|
XRE_FreeAppData(mAppData);
|
||||||
|
}
|
||||||
|
|
||||||
|
operator nsXREAppData*() const { return mAppData; }
|
||||||
|
nsXREAppData* operator -> () const { return mAppData; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
nsXREAppData* mAppData;
|
||||||
|
};
|
||||||
|
|
||||||
|
XRE_CreateAppDataType XRE_CreateAppData;
|
||||||
|
XRE_FreeAppDataType XRE_FreeAppData;
|
||||||
|
XRE_mainType XRE_main;
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
nsresult rv;
|
||||||
|
char *lastSlash;
|
||||||
|
|
||||||
|
char iniPath[MAXPATHLEN];
|
||||||
|
char tmpPath[MAXPATHLEN];
|
||||||
|
char greDir[MAXPATHLEN];
|
||||||
|
bool greFound = false;
|
||||||
|
|
||||||
|
#if defined(XP_MACOSX)
|
||||||
|
CFBundleRef appBundle = CFBundleGetMainBundle();
|
||||||
|
if (!appBundle)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
CFURLRef resourcesURL = CFBundleCopyResourcesDirectoryURL(appBundle);
|
||||||
|
if (!resourcesURL)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
CFURLRef absResourcesURL = CFURLCopyAbsoluteURL(resourcesURL);
|
||||||
|
CFRelease(resourcesURL);
|
||||||
|
if (!absResourcesURL)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
CFURLRef iniFileURL =
|
||||||
|
CFURLCreateCopyAppendingPathComponent(kCFAllocatorDefault,
|
||||||
|
absResourcesURL,
|
||||||
|
CFSTR("application.ini"),
|
||||||
|
false);
|
||||||
|
CFRelease(absResourcesURL);
|
||||||
|
if (!iniFileURL)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
CFStringRef iniPathStr =
|
||||||
|
CFURLCopyFileSystemPath(iniFileURL, kCFURLPOSIXPathStyle);
|
||||||
|
CFRelease(iniFileURL);
|
||||||
|
if (!iniPathStr)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
CFStringGetCString(iniPathStr, iniPath, sizeof(iniPath),
|
||||||
|
kCFStringEncodingUTF8);
|
||||||
|
CFRelease(iniPathStr);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#ifdef XP_WIN
|
||||||
|
wchar_t wide_path[MAX_PATH];
|
||||||
|
if (!::GetModuleFileNameW(nullptr, wide_path, MAX_PATH))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
WideCharToMultiByte(CP_UTF8, 0, wide_path,-1,
|
||||||
|
iniPath, MAX_PATH, nullptr, nullptr);
|
||||||
|
|
||||||
|
#else
|
||||||
|
// on unix, there is no official way to get the path of the current binary.
|
||||||
|
// instead of using the MOZILLA_FIVE_HOME hack, which doesn't scale to
|
||||||
|
// multiple applications, we will try a series of techniques:
|
||||||
|
//
|
||||||
|
// 1) use realpath() on argv[0], which works unless we're loaded from the
|
||||||
|
// PATH
|
||||||
|
// 2) manually walk through the PATH and look for ourself
|
||||||
|
// 3) give up
|
||||||
|
|
||||||
|
struct stat fileStat;
|
||||||
|
strncpy(tmpPath, argv[0], sizeof(tmpPath));
|
||||||
|
lastSlash = strrchr(tmpPath, '/');
|
||||||
|
if (lastSlash) {
|
||||||
|
*lastSlash = 0;
|
||||||
|
realpath(tmpPath, iniPath);
|
||||||
|
} else {
|
||||||
|
const char *path = getenv("PATH");
|
||||||
|
if (!path)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
char *pathdup = strdup(path);
|
||||||
|
if (!pathdup)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
bool found = false;
|
||||||
|
char *token = strtok(pathdup, ":");
|
||||||
|
while (token) {
|
||||||
|
sprintf(tmpPath, "%s/%s", token, argv[0]);
|
||||||
|
if (stat(tmpPath, &fileStat) == 0) {
|
||||||
|
found = true;
|
||||||
|
lastSlash = strrchr(tmpPath, '/');
|
||||||
|
*lastSlash = 0;
|
||||||
|
realpath(tmpPath, iniPath);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
token = strtok(nullptr, ":");
|
||||||
|
}
|
||||||
|
free (pathdup);
|
||||||
|
if (!found)
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
lastSlash = iniPath + strlen(iniPath);
|
||||||
|
*lastSlash = '/';
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef XP_UNIX
|
||||||
|
lastSlash = strrchr(iniPath, PATH_SEPARATOR_CHAR);
|
||||||
|
if (!lastSlash)
|
||||||
|
return 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
*(++lastSlash) = '\0';
|
||||||
|
|
||||||
|
// On Linux/Win, look for XULRunner in appdir/xulrunner
|
||||||
|
|
||||||
|
snprintf(greDir, sizeof(greDir),
|
||||||
|
"%sxulrunner" XPCOM_FILE_PATH_SEPARATOR XPCOM_DLL,
|
||||||
|
iniPath);
|
||||||
|
|
||||||
|
greFound = FolderExists(greDir);
|
||||||
|
|
||||||
|
#ifdef XP_UNIX
|
||||||
|
if (greFound) {
|
||||||
|
char resolved_greDir[MAXPATHLEN] = "";
|
||||||
|
if (realpath(greDir, resolved_greDir) && *resolved_greDir) {
|
||||||
|
strncpy(greDir, resolved_greDir, MAXPATHLEN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
strncpy(lastSlash, "application.ini", sizeof(iniPath) - (lastSlash - iniPath));
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// If -app parameter was passed in, it is now time to take it under
|
||||||
|
// consideration.
|
||||||
|
const char *appDataFile;
|
||||||
|
appDataFile = getenv("XUL_APP_FILE");
|
||||||
|
if (!appDataFile || !*appDataFile)
|
||||||
|
if (argc > 1 && IsArg(argv[1], "app")) {
|
||||||
|
if (argc == 2) {
|
||||||
|
Output(false, "specify APP-FILE (optional)\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
argv[1] = argv[0];
|
||||||
|
++argv;
|
||||||
|
--argc;
|
||||||
|
|
||||||
|
appDataFile = argv[1];
|
||||||
|
argv[1] = argv[0];
|
||||||
|
++argv;
|
||||||
|
--argc;
|
||||||
|
|
||||||
|
char kAppEnv[MAXPATHLEN];
|
||||||
|
snprintf(kAppEnv, MAXPATHLEN, "XUL_APP_FILE=%s", appDataFile);
|
||||||
|
if (putenv(kAppEnv))
|
||||||
|
Output(false, "Couldn't set %s.\n", kAppEnv);
|
||||||
|
|
||||||
|
char *result = (char*) calloc(sizeof(char), MAXPATHLEN);
|
||||||
|
if (NS_FAILED(GetRealPath(appDataFile, &result))) {
|
||||||
|
Output(true, "Invalid application.ini path.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// We have a valid application.ini path passed in to the -app parameter
|
||||||
|
// but not yet a valid greDir, so lets look for it also on the same folder
|
||||||
|
// as the stub.
|
||||||
|
if (!greFound) {
|
||||||
|
lastSlash = strrchr(iniPath, PATH_SEPARATOR_CHAR);
|
||||||
|
if (!lastSlash)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
*(++lastSlash) = '\0';
|
||||||
|
|
||||||
|
snprintf(greDir, sizeof(greDir), "%s" XPCOM_DLL, iniPath);
|
||||||
|
greFound = FolderExists(greDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
// copy it back.
|
||||||
|
strcpy(iniPath, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
nsINIParser parser;
|
||||||
|
rv = parser.Init(iniPath);
|
||||||
|
if (NS_FAILED(rv)) {
|
||||||
|
fprintf(stderr, "Could not read application.ini\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!greFound) {
|
||||||
|
#ifdef XP_MACOSX
|
||||||
|
// The bundle can be found next to the executable, in the MacOS dir.
|
||||||
|
CFURLRef exurl = CFBundleCopyExecutableURL(appBundle);
|
||||||
|
CFURLRef absexurl = nullptr;
|
||||||
|
if (exurl) {
|
||||||
|
absexurl = CFURLCopyAbsoluteURL(exurl);
|
||||||
|
CFRelease(exurl);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (absexurl) {
|
||||||
|
char tbuffer[MAXPATHLEN];
|
||||||
|
|
||||||
|
if (CFURLGetFileSystemRepresentation(absexurl, true,
|
||||||
|
(UInt8*) tbuffer,
|
||||||
|
sizeof(tbuffer)) &&
|
||||||
|
access(tbuffer, R_OK | X_OK) == 0) {
|
||||||
|
if (realpath(tbuffer, greDir)) {
|
||||||
|
greFound = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
greDir[0] = '\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CFRelease(absexurl);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (!greFound) {
|
||||||
|
Output(false, "Could not find the Mozilla runtime.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rv = XPCOMGlueStartup(greDir);
|
||||||
|
if (NS_FAILED(rv)) {
|
||||||
|
if (rv == NS_ERROR_OUT_OF_MEMORY) {
|
||||||
|
char applicationName[2000] = "this application";
|
||||||
|
parser.GetString("App", "Name", applicationName, sizeof(applicationName));
|
||||||
|
Output(true, "Not enough memory available to start %s.\n",
|
||||||
|
applicationName);
|
||||||
|
} else {
|
||||||
|
Output(true, "Couldn't load XPCOM.\n");
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const nsDynamicFunctionLoad kXULFuncs[] = {
|
||||||
|
{ "XRE_CreateAppData", (NSFuncPtr*) &XRE_CreateAppData },
|
||||||
|
{ "XRE_FreeAppData", (NSFuncPtr*) &XRE_FreeAppData },
|
||||||
|
{ "XRE_main", (NSFuncPtr*) &XRE_main },
|
||||||
|
{ nullptr, nullptr }
|
||||||
|
};
|
||||||
|
|
||||||
|
rv = XPCOMGlueLoadXULFunctions(kXULFuncs);
|
||||||
|
if (NS_FAILED(rv)) {
|
||||||
|
Output(true, "Couldn't load XRE functions.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_LogInit();
|
||||||
|
|
||||||
|
int retval;
|
||||||
|
|
||||||
|
{ // Scope COMPtr and AutoAppData
|
||||||
|
nsCOMPtr<nsIFile> iniFile;
|
||||||
|
#ifdef XP_WIN
|
||||||
|
// On Windows iniPath is UTF-8 encoded so we need to convert it.
|
||||||
|
rv = NS_NewLocalFile(NS_ConvertUTF8toUTF16(iniPath), false,
|
||||||
|
getter_AddRefs(iniFile));
|
||||||
|
#else
|
||||||
|
rv = NS_NewNativeLocalFile(nsDependentCString(iniPath), false,
|
||||||
|
getter_AddRefs(iniFile));
|
||||||
|
#endif
|
||||||
|
if (NS_FAILED(rv)) {
|
||||||
|
Output(true, "Couldn't find application.ini file.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
AutoAppData appData(iniFile);
|
||||||
|
if (!appData) {
|
||||||
|
Output(true, "Error: couldn't parse application.ini.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_ASSERTION(appData->directory, "Failed to get app directory.");
|
||||||
|
|
||||||
|
if (!appData->xreDirectory) {
|
||||||
|
// chop "libxul.so" off the GRE path
|
||||||
|
lastSlash = strrchr(greDir, PATH_SEPARATOR_CHAR);
|
||||||
|
if (lastSlash) {
|
||||||
|
*lastSlash = '\0';
|
||||||
|
}
|
||||||
|
#ifdef XP_WIN
|
||||||
|
// same as iniPath.
|
||||||
|
NS_NewLocalFile(NS_ConvertUTF8toUTF16(greDir), false,
|
||||||
|
&appData->xreDirectory);
|
||||||
|
#else
|
||||||
|
NS_NewNativeLocalFile(nsDependentCString(greDir), false,
|
||||||
|
&appData->xreDirectory);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
retval = XRE_main(argc, argv, appData, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_LogTerm();
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
38
application/xulrunner/stub/xulrunner-stub.exe.manifest
Normal file
38
application/xulrunner/stub/xulrunner-stub.exe.manifest
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||||
|
<assemblyIdentity
|
||||||
|
version="1.0.0.0"
|
||||||
|
processorArchitecture="*"
|
||||||
|
name="Mozilla.XULRunner.Stub"
|
||||||
|
type="win32"
|
||||||
|
/>
|
||||||
|
<description>Mozilla XULRunner Stub</description>
|
||||||
|
<dependency>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity
|
||||||
|
type="win32"
|
||||||
|
name="Microsoft.Windows.Common-Controls"
|
||||||
|
version="6.0.0.0"
|
||||||
|
processorArchitecture="*"
|
||||||
|
publicKeyToken="6595b64144ccf1df"
|
||||||
|
language="*"
|
||||||
|
/>
|
||||||
|
</dependentAssembly>
|
||||||
|
</dependency>
|
||||||
|
<ms_asmv3:trustInfo xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<ms_asmv3:security>
|
||||||
|
<ms_asmv3:requestedPrivileges>
|
||||||
|
<ms_asmv3:requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||||
|
</ms_asmv3:requestedPrivileges>
|
||||||
|
</ms_asmv3:security>
|
||||||
|
</ms_asmv3:trustInfo>
|
||||||
|
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||||
|
<application>
|
||||||
|
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
|
||||||
|
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
|
||||||
|
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
||||||
|
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
|
||||||
|
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
|
||||||
|
</application>
|
||||||
|
</compatibility>
|
||||||
|
</assembly>
|
||||||
6
application/xulrunner/stub/xulrunner-stub.rc
Normal file
6
application/xulrunner/stub/xulrunner-stub.rc
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
/* 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/. */
|
||||||
|
|
||||||
|
1 24 "xulrunner-stub.exe.manifest"
|
||||||
11
application/xulrunner/tools/redit/Makefile.in
Normal file
11
application/xulrunner/tools/redit/Makefile.in
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
# 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/. */
|
||||||
|
|
||||||
|
ifeq ($(OS_ARCH),WINNT)
|
||||||
|
|
||||||
|
SDK_BINARY = \
|
||||||
|
$(PROGRAM) \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
endif
|
||||||
15
application/xulrunner/tools/redit/moz.build
Normal file
15
application/xulrunner/tools/redit/moz.build
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||||
|
# vim: set filetype=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/.
|
||||||
|
|
||||||
|
if CONFIG['OS_ARCH'] == 'WINNT':
|
||||||
|
GeckoProgram('redit')
|
||||||
|
SOURCES += [
|
||||||
|
'redit.cpp',
|
||||||
|
]
|
||||||
|
for var in ('WIN32_LEAN_AND_MEAN', 'UNICODE', '_UNICODE'):
|
||||||
|
DEFINES[var] = True
|
||||||
|
if CONFIG['GNU_CC']:
|
||||||
|
WIN32_EXE_LDFLAGS += ['-municode']
|
||||||
187
application/xulrunner/tools/redit/redit.cpp
Normal file
187
application/xulrunner/tools/redit/redit.cpp
Normal file
|
|
@ -0,0 +1,187 @@
|
||||||
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
|
||||||
|
/* 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/. */
|
||||||
|
|
||||||
|
// System headers (alphabetical)
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <io.h>
|
||||||
|
#include <share.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
// Mozilla headers (alphabetical)
|
||||||
|
#include "mozilla/FileUtils.h" // ScopedClose
|
||||||
|
#include "mozilla/UniquePtrExtensions.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
Icon files are made up of:
|
||||||
|
|
||||||
|
IconHeader
|
||||||
|
IconDirEntry1
|
||||||
|
IconDirEntry2
|
||||||
|
...
|
||||||
|
IconDirEntryN
|
||||||
|
IconData1
|
||||||
|
IconData2
|
||||||
|
...
|
||||||
|
IconDataN
|
||||||
|
|
||||||
|
Each IconData must be added as a new RT_ICON resource to the exe. Then
|
||||||
|
an RT_GROUP_ICON resource must be added that contains an equivalent
|
||||||
|
header:
|
||||||
|
|
||||||
|
IconHeader
|
||||||
|
IconResEntry1
|
||||||
|
IconResEntry2
|
||||||
|
...
|
||||||
|
IconResEntryN
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma pack(push, 2)
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
WORD Reserved;
|
||||||
|
WORD ResourceType;
|
||||||
|
WORD ImageCount;
|
||||||
|
} IconHeader;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
BYTE Width;
|
||||||
|
BYTE Height;
|
||||||
|
BYTE Colors;
|
||||||
|
BYTE Reserved;
|
||||||
|
WORD Planes;
|
||||||
|
WORD BitsPerPixel;
|
||||||
|
DWORD ImageSize;
|
||||||
|
DWORD ImageOffset;
|
||||||
|
} IconDirEntry;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
BYTE Width;
|
||||||
|
BYTE Height;
|
||||||
|
BYTE Colors;
|
||||||
|
BYTE Reserved;
|
||||||
|
WORD Planes;
|
||||||
|
WORD BitsPerPixel;
|
||||||
|
DWORD ImageSize;
|
||||||
|
WORD ResourceID; // This field is the one difference to above
|
||||||
|
} IconResEntry;
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
/**
|
||||||
|
* ScopedResourceUpdate is a RAII wrapper for Windows resource updating
|
||||||
|
*
|
||||||
|
* Instances |EndUpdateResourceW()| their handles when they go out of scope.
|
||||||
|
* They pass |TRUE| as the second argument to |EndUpdateResourceW()|, which
|
||||||
|
* causes the resource update to be aborted (changes are discarded).
|
||||||
|
*/
|
||||||
|
struct ScopedResourceUpdateTraits
|
||||||
|
{
|
||||||
|
typedef HANDLE type;
|
||||||
|
static type empty() { return nullptr; }
|
||||||
|
static void release(type handle) {
|
||||||
|
if(nullptr != handle) {
|
||||||
|
EndUpdateResourceW(handle, TRUE); // Discard changes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef mozilla::Scoped<ScopedResourceUpdateTraits> ScopedResourceUpdate;
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
extern "C"
|
||||||
|
#endif
|
||||||
|
int
|
||||||
|
wmain(int argc, wchar_t** argv)
|
||||||
|
{
|
||||||
|
if (argc != 3) {
|
||||||
|
printf("Usage: redit <exe file> <icon file>\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
mozilla::ScopedClose file;
|
||||||
|
if (0 != _wsopen_s(&file.rwget(),
|
||||||
|
argv[2],
|
||||||
|
_O_BINARY | _O_RDONLY,
|
||||||
|
_SH_DENYWR,
|
||||||
|
_S_IREAD)
|
||||||
|
|| (-1 == file)) {
|
||||||
|
fprintf(stderr, "Unable to open icon file.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load all the data from the icon file
|
||||||
|
long filesize = _filelength(file);
|
||||||
|
auto data = MakeUniqueFallible<BYTE[]>(filesize);
|
||||||
|
if(!data) {
|
||||||
|
fprintf(stderr, "Failed to allocate memory for icon file.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
_read(file, data.get(), filesize);
|
||||||
|
|
||||||
|
IconHeader* header = reinterpret_cast<IconHeader*>(data.get());
|
||||||
|
|
||||||
|
// Open the target library for updating
|
||||||
|
ScopedResourceUpdate updateRes(BeginUpdateResourceW(argv[1], FALSE));
|
||||||
|
if (nullptr == updateRes) {
|
||||||
|
fprintf(stderr, "Unable to open library for modification.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allocate the group resource entry
|
||||||
|
long groupSize = sizeof(IconHeader)
|
||||||
|
+ header->ImageCount * sizeof(IconResEntry);
|
||||||
|
auto group = MakeUniqueFallible<BYTE[]>(groupSize);
|
||||||
|
if(!group) {
|
||||||
|
fprintf(stderr, "Failed to allocate memory for new images.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
memcpy(group.get(), data.get(), sizeof(IconHeader));
|
||||||
|
|
||||||
|
IconDirEntry* sourceIcon =
|
||||||
|
reinterpret_cast<IconDirEntry*>(data.get()
|
||||||
|
+ sizeof(IconHeader));
|
||||||
|
IconResEntry* targetIcon =
|
||||||
|
reinterpret_cast<IconResEntry*>(group.get()
|
||||||
|
+ sizeof(IconHeader));
|
||||||
|
|
||||||
|
for (int id = 1; id <= header->ImageCount; id++) {
|
||||||
|
// Add the individual icon
|
||||||
|
if (!UpdateResourceW(updateRes, RT_ICON, MAKEINTRESOURCE(id),
|
||||||
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),
|
||||||
|
data + sourceIcon->ImageOffset,
|
||||||
|
sourceIcon->ImageSize)) {
|
||||||
|
fprintf(stderr, "Unable to update resource (RT_ICON).\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
// Copy the data for this icon
|
||||||
|
// (note that the structs have different sizes)
|
||||||
|
memcpy(targetIcon, sourceIcon, sizeof(IconResEntry));
|
||||||
|
targetIcon->ResourceID = id;
|
||||||
|
sourceIcon++;
|
||||||
|
targetIcon++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!UpdateResourceW(updateRes, RT_GROUP_ICON, L"MAINICON",
|
||||||
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),
|
||||||
|
group, groupSize)) {
|
||||||
|
fprintf(stderr, "Unable to update resource (RT_GROUP_ICON).\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save the modifications
|
||||||
|
if(!EndUpdateResourceW(updateRes.forget(), FALSE)) {
|
||||||
|
fprintf(stderr, "Unable to write changes to library.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
@ -2416,15 +2416,6 @@ if test -n "$WITH_APP_BASENAME" ; then
|
||||||
MOZ_APP_BASENAME="$WITH_APP_BASENAME"
|
MOZ_APP_BASENAME="$WITH_APP_BASENAME"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Special cases where we need to AC_DEFINE something. Also a holdover for apps
|
|
||||||
# that haven't made a confvars.sh yet. Don't add new stuff here, use
|
|
||||||
# MOZ_BUILD_APP.
|
|
||||||
case "$MOZ_BUILD_APP" in
|
|
||||||
xulrunner)
|
|
||||||
AC_DEFINE(MOZ_XULRUNNER)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if test -n "$MOZ_B2G"; then
|
if test -n "$MOZ_B2G"; then
|
||||||
AC_DEFINE(MOZ_B2G)
|
AC_DEFINE(MOZ_B2G)
|
||||||
fi
|
fi
|
||||||
|
|
@ -2434,7 +2425,6 @@ if test -n "$MOZ_GRAPHENE"; then
|
||||||
AC_DEFINE(MOZ_GRAPHENE)
|
AC_DEFINE(MOZ_GRAPHENE)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_SUBST(MOZ_XULRUNNER)
|
|
||||||
AC_SUBST(MOZ_B2G)
|
AC_SUBST(MOZ_B2G)
|
||||||
AC_SUBST(MOZ_B2G_VERSION)
|
AC_SUBST(MOZ_B2G_VERSION)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue