]> git.donarmstrong.com Git - dactyl.git/blobdiff - binary/src/Makefile
Import 1.0rc1 supporting Firefox up to 11.*
[dactyl.git] / binary / src / Makefile
diff --git a/binary/src/Makefile b/binary/src/Makefile
new file mode 100644 (file)
index 0000000..02adcc4
--- /dev/null
@@ -0,0 +1,111 @@
+ROOT = ..
+
+XPTDIR         = $(ROOT)/components/$(ABI)/
+SODIR          = $(ROOT)/components/$(ABI)/
+OBJDIR         = $(ABI)/
+
+MODULE         = $(SODIR)dactyl
+
+XPIDLSRCS      = \
+               dactylIUtils.idl \
+               $(NULL)
+
+CPPSRCS                = \
+               dactylModule.cpp \
+               dactylUtils.cpp \
+               mozJSLoaderUtils.cpp \
+               subscriptLoader.cpp \
+               $(NULL)
+
+HEADERS                = \
+                 config.h              \
+                 dactylUtils.h         \
+                 mozJSLoaderUtils.h    \
+                 $(XPIDLSRCS:%.idl=$(ABI)/%.h)
+
+GECKO_DEFINES  = -DMOZILLA_STRICT_API
+
+GECKO_INCLUDES = -I$(ABI)/                     \
+                -I$(GECKO_SDK_PATH)            \
+                -I$(GECKO_SDK_PATH)/idl        \
+                -I$(GECKO_SDK_PATH)/include
+
+GECKO_LDFLAGS =  -L$(GECKO_SDK_PATH)/bin \
+                -L$(GECKO_SDK_PATH)/lib \
+                -lxpcomglue_s  \
+                -lxpcom        \
+                -lnspr4        \
+                -shared        \
+                $(NULL)
+
+ifeq "$(shell uname -s)" "Darwin"
+       GECKO_LDFLAGS += -undefined dynamic_lookup
+endif
+
+include $(ROOT)/config.mk
+sinclude $(ROOT)/config.local.mk
+
+CPPFLAGS += $(EXCPPFLAGS)
+
+XPTS = $(XPIDLSRCS:%.idl=$(XPTDIR)%.xpt)
+OBJS = $(CPPSRCS:%.cpp=$(OBJDIR)%.o)
+MANIFEST = $(SODIR)/components.manifest
+
+all: build manifest
+
+dirs: $(XPTDIR) $(SODIR) $(OBJDIR)
+
+depend: .depend
+
+manifest: $(MANIFEST)
+
+module: dirs $(MODULE).so
+
+dll: dirs $(MODULE).dll
+
+xpts: $(XPTS)
+
+build: dirs module xpts
+
+clean:
+       rm $(MODULE).so
+
+
+$(OBJS): $(HEADERS)
+
+$(ABI)/%.h: %.idl
+       $(IDL_H) $@ $(GECKO_INCLUDES) $<
+
+$(XPTDIR)%.xpt: %.idl
+       $(IDL_XPT) $@ $(GECKO_INCLUDES) $<
+
+$(MANIFEST): Makefile
+       ( echo interfaces $(XPIDLSRCS:.idl=.xpt);       \
+         echo binary-component $(MODULE:$(SODIR)%=%).$(LIBEXT) )       \
+           >$@
+       
+       manifest=$(SODIR)/../gecko-$(GECKO_MAJOR).manifest;                     \
+       if [ $(GECKO_MAJOR) -lt 8 ]; then part=app; else part=platform; fi;     \
+       line="manifest $(ABI)/components.manifest abi=$(ABI_PLATFORM) $${part}version<$(GECKO_MAJOR).*";        \
+       grep >/dev/null 2>&1 "^$$line$$" $$manifest || echo $$line >>$$manifest
+
+_CPPFLAGS = $(CPPFLAGS) $(CXXFLAGS) $(GECKO_DEFINES) $(GECKO_INCLUDES) $(DEFINES)
+
+$(OBJDIR)%.o: %.cpp Makefile
+       $(CPP)$@ -c $(_CPPFLAGS) $<
+
+.depend: $(CPPSRCS) Makefile
+       $(MKDEP) $(_CPPFLAGS) $(CPPSRCS) | $(SED) 's;^[^ ];$(OBJDIR)&;' >.depend
+
+$(MODULE).so: $(OBJS)
+       $(LINK) -o $@ $(OBJS) $(LDFLAGS) $(GECKO_LDFLAGS)
+       chmod +x $@
+
+$(MODULE).dll: $(OBJS)
+       $(LINK)$@ $(GECKO_LDFLAGS) $(OBJS)
+
+$(sort $(XPTDIR) $(SODIR) $(OBJDIR)):
+       mkdir -p $@
+.PHONY: module xpts build clean all depend manifest
+
+sinclude .depend