Bug 556443 - Add support for building NSS on Android, r=ted
authorMichael Wu <mwu@mozilla.com>
Wed, 19 May 2010 13:13:25 -0700
changeset 42465 88665558c3e0a05cd5a990b12e00bee26652a9b4
parent 42464 4e03d0285fb3536184227e4f5919eeb8f772fe3b
child 42466 9df4f4636ee15460e42f03bcdc2b58105408f478
push idunknown
push userunknown
push dateunknown
reviewersted
bugs556443
milestone1.9.3a5pre
Bug 556443 - Add support for building NSS on Android, r=ted
security/manager/Makefile.in
security/manager/android_stub.h
--- 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 */