zied-ellouze / gears

Automatically exported from code.google.com/p/gears
1 stars 0 forks source link

Support building on FreeBSD #171

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Google Gears user "freedom <koansin.tan>" was able to build on FreeBSD 
after applying the changes below.

Sure, actually, it's quite trivial.
The steps I used to build it:

1). build Gecko SDK from MOZILLA_1_8_BRANCH
2). install GNU Make and GNU m4
3). add configurations for FreeBSD to tools/config.mk, change tools
rules.mk to use gmake and gm4)
4). comment out #include <malloc.h>
5). cast argument passing to wcslen() to (wchar_t*)
6). gmake

--------------------------------------------svn diff begin
------------------------------------------------

Index: tools/rules.mk
===================================================================
--- tools/rules.mk      (revision 147)
+++ tools/rules.mk      (working copy)
@@ -141,16 +141,16 @@
 default::
 ifneq "$(BROWSER)" ""
 # build for just the selected browser
-       make prereqs BROWSER=$(BROWSER)
-       make genheaders BROWSER=$(BROWSER)
-       make modules BROWSER=$(BROWSER)
-       make installer BROWSER=$(BROWSER)
+       ${MAKE} prereqs BROWSER=$(BROWSER)
+       ${MAKE} genheaders BROWSER=$(BROWSER)
+       ${MAKE} modules BROWSER=$(BROWSER)
+       ${MAKE} installer BROWSER=$(BROWSER)
 else
    # build for all browsers valid on this OS
 ifneq ($(OS),osx)
-       make prereqs BROWSER=FF
-       make genheaders BROWSER=FF
-       make modules BROWSER=FF
+       ${MAKE} prereqs BROWSER=FF
+       ${MAKE} genheaders BROWSER=FF
+       ${MAKE} modules BROWSER=FF
 else
        # OSX needs to build for each supported architecture
       make prereqs BROWSER=FF ARCH=i386
@@ -160,7 +160,7 @@
       make modules BROWSER=FF ARCH=i386
       make modules BROWSER=FF ARCH=ppc
 endif
-       make installer BROWSER=FF
+       ${MAKE} installer BROWSER=FF
 ifeq ($(OS),win32)
       make prereqs BROWSER=IE
       make genheaders BROWSER=IE
@@ -212,13 +212,13 @@
 # M4 (GENERIC PREPROCESSOR) TARGETS

 $(COMMON_OUTDIR)/genfiles/%: %.m4
-       m4 $(M4FLAGS) $< > $@
+       gm4 $(M4FLAGS) $< > $@

 $(FF_OUTDIR)/genfiles/%: %.m4
-       m4 $(M4FLAGS) $< > $@
+       gm4 $(M4FLAGS) $< > $@

 $(IE_OUTDIR)/genfiles/%: %.m4
-       m4 $(M4FLAGS) $< > $@
+       gm4 $(M4FLAGS) $< > $@

 # IDL TARGETS
 # Need /base/common in the include path to derive from
GearsBaseClassInterface
Index: tools/config.mk
===================================================================
--- tools/config.mk     (revision 147)
+++ tools/config.mk     (working copy)
@@ -29,12 +29,16 @@
 ifeq ($(shell uname),Linux)
 OS = linux
 else
+ifeq ($(shell uname),FreeBSD)
+OS = freebsd
+else
 ifeq ($(shell uname),Darwin)
 OS = osx
 else
 OS = win32
 endif
 endif
+endif

 # Set default OS architecture
 #   OSX builds will override this.
@@ -111,6 +115,38 @@
 endif

######################################################################
+# OS == freebsd
+######################################################################
+ifeq ($(OS),freebsd)
+GECKO_SDK = third_party/gecko_sdk/1.8/freebsd
+
+OBJ_SUFFIX = .o
+CC = gcc
+CXX = g++
+MKDEP = gcc -M -MF $(@D)/$*.pp -MT $@ $(CPPFLAGS) $(FF_CPPFLAGS) $<
+
+CPPFLAGS += -DLINUX
+SQLITE_CFLAGS += -Wno-uninitialized
+
+COMPILE_FLAGS_dbg = -g -O0
+COMPILE_FLAGS_opt = -O2
+COMPILE_FLAGS = -c -o $@ -fPIC -Wall -Werror $(COMPILE_FLAGS_$(MODE))
+
+# NS_LITERAL_STRING does not work properly without this compiler
option
+COMPILE_FLAGS += -fshort-wchar
+
+CFLAGS = $(COMPILE_FLAGS)
+CXXFLAGS = $(COMPILE_FLAGS) -fno-exceptions -fno-rtti -Wno-non-
virtual-dtor -Wno-ctor-dtor-privacy -funsigned-char
+
+DLL_PREFIX = lib
+DLL_SUFFIX = .so
+MKSHLIB = g++
+SHLIBFLAGS = -o $@ -shared -fPIC -Bsymbolic -Wl,--version-script -
Wl,tools/xpcom-ld-script
+
+FF_LIBS = -L $(GECKO_SDK)/bin -L $(GECKO_SDK)/lib -lxpcom -
lxpcomglue_s -lnspr4
+endif
+
+######################################################################
 # OS == osx

######################################################################
 ifeq ($(OS),osx)
Index: third_party/sqlite_google/ext/fts1/fts1_porter.c
===================================================================
--- third_party/sqlite_google/ext/fts1/fts1_porter.c    (revision 147)
+++ third_party/sqlite_google/ext/fts1/fts1_porter.c    (working copy)
@@ -26,7 +26,7 @@

 #include <assert.h>
-#if !defined(__APPLE__)
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
 #include <malloc.h>
 #else
 #include <stdlib.h>
Index: third_party/sqlite_google/ext/fts1/fts1_tokenizer1.c
===================================================================
--- third_party/sqlite_google/ext/fts1/fts1_tokenizer1.c        (revision
147)
+++ third_party/sqlite_google/ext/fts1/fts1_tokenizer1.c        (working
copy)
@@ -18,7 +18,7 @@

 #include <assert.h>
-#if !defined(__APPLE__)
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
 #include <malloc.h>
 #else
 #include <stdlib.h>
Index: third_party/sqlite_google/ext/fts1/fts1.c
===================================================================
--- third_party/sqlite_google/ext/fts1/fts1.c   (revision 147)
+++ third_party/sqlite_google/ext/fts1/fts1.c   (working copy)
@@ -19,7 +19,7 @@
 #endif

 #include <assert.h>
-#if !defined(__APPLE__)
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
 #include <malloc.h>
 #else
 #include <stdlib.h>
Index: third_party/sqlite_google/ext/fts2/fts2.c
===================================================================
--- third_party/sqlite_google/ext/fts2/fts2.c   (revision 147)
+++ third_party/sqlite_google/ext/fts2/fts2.c   (working copy)
@@ -269,7 +269,7 @@
 #endif

 #include <assert.h>
-#if !defined(__APPLE__)
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
 #include <malloc.h>
 #endif
 #include <stdlib.h>
Index: third_party/sqlite_google/ext/fts2/fts2_porter.c
===================================================================
--- third_party/sqlite_google/ext/fts2/fts2_porter.c    (revision 147)
+++ third_party/sqlite_google/ext/fts2/fts2_porter.c    (working copy)
@@ -26,7 +26,7 @@

 #include <assert.h>
-#if !defined(__APPLE__)
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
 #include <malloc.h>
 #else
 #include <stdlib.h>
Index: third_party/sqlite_google/ext/fts2/fts2_tokenizer1.c
===================================================================
--- third_party/sqlite_google/ext/fts2/fts2_tokenizer1.c        (revision
147)
+++ third_party/sqlite_google/ext/fts2/fts2_tokenizer1.c        (working
copy)
@@ -18,7 +18,7 @@

 #include <assert.h>
-#if !defined(__APPLE__)
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
 #include <malloc.h>
 #else
 #include <stdlib.h>
Index: base/common/js_runner_ff_marshaling.cc
===================================================================
--- base/common/js_runner_ff_marshaling.cc      (revision 147)
+++ base/common/js_runner_ff_marshaling.cc      (working copy)
@@ -303,7 +303,7 @@
  JSBool js_ok;
  js_ok = JS_DefineUCProperty(cx_, global_obj_,
                              reinterpret_cast<const jschar
*>(instance_name),
-                              wcslen(instance_name),
+                              wcslen((wchar_t *)instance_name),
                              OBJECT_TO_JSVAL(instance_obj),
                              NULL, NULL, // getter, setter
                              0 |     // these flags are optional
Index: base/common/js_runner_ff.cc
===================================================================
--- base/common/js_runner_ff.cc (revision 147)
+++ base/common/js_runner_ff.cc (working copy)
@@ -323,7 +323,7 @@
  js_script_ = JS_CompileUCScript(
                       js_engine_context_, global_obj_,
                       reinterpret_cast<const jschar *>(full_script),
-                       wcslen(full_script),
+                       wcslen((wchar_t *)full_script),
                       "script", line_number_start);
  if (!js_script_) { return false; }

@@ -363,7 +363,7 @@
                       js_engine_context_,
                       object,
                       reinterpret_cast<const jschar *>(script),
-                       wcslen(script),
+                       wcslen((wchar_t *)script),
                       "script", line_number_start,
                       &rval);
  if (!js_ok) { return false; }

-----------------------------------------------svn diff end

Original issue reported on code.google.com by gears.te...@gmail.com on 19 Jul 2007 at 10:14

GoogleCodeExporter commented 9 years ago

Original comment by gears.te...@gmail.com on 5 Sep 2007 at 12:00

GoogleCodeExporter commented 9 years ago

Original comment by gears.te...@gmail.com on 5 Sep 2007 at 4:45

GoogleCodeExporter commented 9 years ago

Original comment by gears.te...@gmail.com on 21 Jan 2008 at 6:19

GoogleCodeExporter commented 9 years ago
Any updates on this?

Original comment by eitan.ad...@gmail.com on 28 Jan 2009 at 11:23

GoogleCodeExporter commented 9 years ago
It is already been nearly a year since my last comment. Any idea on when this 
might
be scheduled? 

Original comment by eitan.ad...@gmail.com on 20 Dec 2009 at 9:31