--- crypto/src/Makefile.orig 2009-08-27 22:08:18.000000000 +0200 +++ crypto/src/Makefile 2009-09-18 21:52:06.000000000 +0200 @@ -45,6 +45,12 @@ sys := $(shell uname -s) wince = $(WINCE) +ifeq ($(sys), FreeBSD) + xpidl = $(PREFIX)/lib/libxul/xpidl \ + -I$(PREFIX)/share/idl/firefox3 \ + -I$(PREFIX)/share/idl/firefox3/stable +endif + ifeq ($(wince), 1) os = WINNT cxx = $(sdkdir)/sdk/bin/arm-wince-gcc @@ -66,6 +72,14 @@ so = so cppflags += -shared else +ifeq ($(sys), FreeBSD) + os = FreeBSD + compiler = gcc3 + cxx = c++ + so = so + cppflags += -shared + ldflags += -L$(PREFIX)/lib/firefox3 -L$(PREFIX)/lib -lc +else ifeq ($(sys), MINGW32_NT-6.1) os = WINNT compiler = msvc @@ -92,6 +106,7 @@ endif endif endif +endif # Arch detection @@ -121,6 +136,9 @@ ifeq ($(machine), x86_64) arch = x86_64 else +ifeq ($(machine), amd64) + arch = x86_64 +else $(error: Sorry, your architecture is unknown/unsupported: $(machine)) endif endif @@ -130,6 +148,7 @@ endif endif endif +endif # Universal binary so no need for $(arch) for Darwin @@ -188,6 +207,14 @@ -I$(sdkdir)/include/nspr \ -I$(sdkdir)/sdk/include +ifeq ($(sys), FreeBSD) + headers += -I$(PREFIX)/include/firefox3 \ + -I$(PREFIX)/include/firefox3/stable \ + -I$(PREFIX)/include/nspr \ + -I$(PREFIX)/include/nss \ + -I$(PREFIX)/include/firefox3/unstable +endif + # libraries libdirs := $(sdkdir)/lib $(sdkdir)/bin ifeq ($(wince),1) @@ -202,6 +229,10 @@ ifeq ($(os), Linux) libs := xpcom_core $(libs) +else +ifeq ($(os), FreeBSD) + libs := xpcom $(libs) +endif endif # compiler and Linker Flags @@ -264,6 +295,25 @@ $(sdkdir)/lib/libxpcomglue_s.a \ $(libdirs) $(libs) else +ifeq ($(os), FreeBSD) + libdirs := $(patsubst %,-L%,$(libdirs)) + libs := $(patsubst %,-l%,$(libs)) + cppflags += -pipe -O2 \ + -fPIC -fno-rtti -fno-exceptions -fno-strict-aliasing \ + -fno-common -pthread \ + -Wall -Wconversion -Wpointer-arith -Woverloaded-virtual -Wsynth \ + -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wcast-align \ + -Wno-long-long \ + -include xpcom-config.h $(headers) \ + -fshort-wchar + ldflags += -pthread -pipe -DMOZILLA_STRICT_API \ + -Wl,-dead_strip \ + -Wl,-exported_symbol \ + -Wl,-z,defs -Wl,-h,WeaveCrypto.so \ + -Wl,-rpath-link,$(sdkdir)/bin \ + $(sdkdir)/lib/libxpcomglue_s.a \ + $(libdirs) $(libs) +else ifeq ($(os), SunOS) libdirs := $(patsubst %,-L%,$(libdirs)) libs := $(patsubst %,-l%,$(libs)) @@ -303,6 +353,7 @@ endif endif endif +endif ###################################################################### @@ -361,6 +412,11 @@ $(cxx) $(cppflags) -o $@ $(cpp_sources) $(ldflags) chmod +x $@ else +ifeq ($(os), FreeBSD) + $(so_target): $(idl_headers) + $(cxx) $(cppflags) -o $@ $(cpp_sources) $(ldflags) + chmod +x $@ +else ifeq ($(os), SunOS) $(so_target): $(idl_headers) $(cxx) $(cppflags) -o $@ $(cpp_sources) $(ldflags) @@ -380,3 +436,4 @@ endif endif endif +endif