Bug 556443 - Add support for building NSS on Android, r=ted
--- a/security/manager/Makefile.in
+++ b/security/manager/Makefile.in
@@ -280,16 +280,27 @@ DEFAULT_GMAKE_FLAGS += \
RANLIB="$(RANLIB)" \
RC="$(RC) $(RCFLAGS)" \
OS_ARCH="$(OS_ARCH)" \
OS_TEST="$(OS_TEST)" \
CPU_ARCH="$(TARGET_CPU)" \
$(NULL)
endif
+# Android has pthreads integrated into -lc, so OS_LIBS is set to nothing
+ifeq ($(OS_TARGET), Android)
+DEFAULT_GMAKE_FLAGS += \
+ OS_RELEASE="2.6" \
+ OS_LIBS= \
+ STANDARDS_CFLAGS="-std=gnu89" \
+ DSO_CFLAGS="$(CFLAGS) -DCHECK_FORK_GETPID -DRTLD_NOLOAD=0 -include $(topsrcdir)/security/manager/android_stub.h" \
+ DSO_LDOPTS="-shared $(LDFLAGS)" \
+ $(NULL)
+endif
+
SKIP_CHK=1
endif
SUBMAKEFILES = boot/Makefile ssl/Makefile pki/Makefile locales/Makefile
include $(topsrcdir)/config/rules.mk
ifdef MOZ_NSS_PATCH
# If we're applying a patch, we'll copy the NSS source to the objdir
new file mode 100644
--- /dev/null
+++ b/security/manager/android_stub.h
@@ -0,0 +1,60 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Android code.
+ *
+ * The Initial Developer of the Original Code is Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2010
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Michael Wu <mwu@mozilla.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/* This file allows NSS to build by stubbing out
+ * features that aren't provided by Android/Bionic */
+
+#ifndef ANDROID_STUB_H
+#define ANDROID_STUB_H
+
+/* because dladdr isn't supported in android 2.1 and older.
+ * however, it exists in the android repos so.. maybe someday. */
+typedef struct {
+ char *dli_fname;
+} Dl_info;
+
+#define dladdr(foo, bar) 0
+
+/* sysinfo is defined but not implemented.
+ * we may be able to implement it ourselves. */
+#define _SYS_SYSINFO_H_
+
+#include <sys/cdefs.h>
+#include <linux/kernel.h>
+
+#define sysinfo(foo) -1
+
+#endif /* ANDROID_STUB_H */