gecko-dev/xpcom/glue/moz.build
Nathan Froyd e255fd3842 Bug 1262826 - specialize nsTHashtable<nsPtrHashKey<T>> to share a common implementation; r=erahm
We have a number of nsTHashtable<nsPtrHashKey<T>> instantiations, mostly
from IPDL-generated code.  There's no reason in principle that all of
these instantiations couldn't share code, since they're all storing POD
entries of the same size.  Let's specialize nsTHashtable for such types,
providing a thin layer over a hashtable that stores void pointers.  This
change saves about 90K of space (!) on x86-64 Linux.
2016-08-22 18:45:47 -04:00

124 lines
2.8 KiB
Python

# -*- 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/.
with Files('nsString*'):
BUG_COMPONENT = ('Core', 'String')
DIRS += ['standalone']
# On win we build two glue libs - glue linked to crt dlls here and in staticruntime we build
# a statically linked glue lib.
if CONFIG['OS_ARCH'] == 'WINNT':
DIRS += ['staticruntime']
EXPORTS += [
'MainThreadUtils.h',
'nsArrayEnumerator.h',
'nsArrayUtils.h',
'nsBaseHashtable.h',
'nsCategoryCache.h',
'nsClassHashtable.h',
'nsCOMArray.h',
'nsComponentManagerUtils.h',
'nsCOMPtr.h',
'nsCRTGlue.h',
'nsCycleCollectionNoteChild.h',
'nsCycleCollectionNoteRootCallback.h',
'nsCycleCollectionParticipant.h',
'nsCycleCollectionTraversalCallback.h',
'nsDataHashtable.h',
'nsDebug.h',
'nsDeque.h',
'nsEnumeratorUtils.h',
'nsHashKeys.h',
'nsIClassInfoImpl.h',
'nsID.h',
'nsIInterfaceRequestorUtils.h',
'nsINIParser.h',
'nsInterfaceHashtable.h',
'nsISupportsImpl.h',
'nsISupportsUtils.h',
'nsIWeakReferenceUtils.h',
'nsJSThingHashtable.h',
'nsMemory.h',
'nsPointerHashKeys.h',
'nsProxyRelease.h',
'nsQuickSort.h',
'nsRefPtrHashtable.h',
'nsServiceManagerUtils.h',
'nsStringAPI.h',
'nsStringGlue.h',
'nsTArray-inl.h',
'nsTArray.h',
'nsTArrayForwardDeclare.h',
'nsTextFormatter.h',
'nsTHashtable.h',
'nsThreadUtils.h',
'nsTObserverArray.h',
'nsTPriorityQueue.h',
'nsTWeakRef.h',
'nsVersionComparator.h',
'nsWeakReference.h',
'nsXPTCUtils.h',
'PLDHashTable.h',
]
EXPORTS.mozilla += [
'AppData.h',
'AutoRestore.h',
'BlockingResourceBase.h',
'CondVar.h',
'DeadlockDetector.h',
'EnumeratedArrayCycleCollection.h',
'FileUtils.h',
'GenericFactory.h',
'IntentionalCrash.h',
'Monitor.h',
'Mutex.h',
'Observer.h',
'ReentrantMonitor.h',
]
include('objs.mozbuild')
UNIFIED_SOURCES += xpcom_gluens_src_cppsrcs
UNIFIED_SOURCES += xpcom_glue_src_cppsrcs
UNIFIED_SOURCES += [
'GenericModule.cpp',
'nsStringAPI.cpp',
]
Library('xpcomglue_s')
SDK_LIBRARY = True
FORCE_STATIC_LIB = True
if CONFIG['_MSC_VER']:
DEFINES['_USE_ANSI_CPP'] = True
# Don't include directives about which CRT to use
CFLAGS += ['-Zl']
CXXFLAGS += ['-Zl']
LOCAL_INCLUDES += [
'../build',
'../threads',
]
if CONFIG['ENABLE_TESTS']:
DIRS += ['tests/gtest']
# Include fallible for third party code using the xpcom glue
USE_LIBS += [
'fallible',
]
# Force to build a static library only
NO_EXPAND_LIBS = True
DIST_INSTALL = True