3 XPTDIR = $(ROOT)/components/$(ABI)/
4 SODIR = $(ROOT)/components/$(ABI)/
7 MODULE = $(SODIR)dactyl
16 mozJSLoaderUtils.cpp \
24 $(XPIDLSRCS:%.idl=$(ABI)/%.h)
26 GECKO_DEFINES = -DMOZILLA_STRICT_API
28 GECKO_INCLUDES = -I$(ABI)/ \
30 -I$(GECKO_SDK_PATH)/idl \
31 -I$(GECKO_SDK_PATH)/include
33 GECKO_LDFLAGS = -L$(GECKO_SDK_PATH)/bin \
34 -L$(GECKO_SDK_PATH)/lib \
41 ifeq "$(shell uname -s)" "Darwin"
42 GECKO_LDFLAGS += -undefined dynamic_lookup
45 include $(ROOT)/config.mk
46 sinclude $(ROOT)/config.local.mk
48 CPPFLAGS += $(EXCPPFLAGS)
50 XPTS = $(XPIDLSRCS:%.idl=$(XPTDIR)%.xpt)
51 OBJS = $(CPPSRCS:%.cpp=$(OBJDIR)%.o)
52 MANIFEST = $(SODIR)/components.manifest
56 dirs: $(XPTDIR) $(SODIR) $(OBJDIR)
62 module: dirs $(MODULE).so
64 dll: dirs $(MODULE).dll
68 build: dirs module xpts
77 $(IDL_H) $@ $(GECKO_INCLUDES) $<
80 $(IDL_XPT) $@ $(GECKO_INCLUDES) $<
83 ( echo interfaces $(XPIDLSRCS:.idl=.xpt); \
84 echo binary-component $(MODULE:$(SODIR)%=%).$(LIBEXT) ) \
87 manifest=$(SODIR)/../gecko-$(GECKO_MAJOR).manifest; \
88 if [ $(GECKO_MAJOR) -lt 8 ]; then part=app; else part=platform; fi; \
89 line="manifest $(ABI)/components.manifest abi=$(ABI_PLATFORM) $${part}version<$(GECKO_MAJOR).*"; \
90 grep >/dev/null 2>&1 "^$$line$$" $$manifest || echo $$line >>$$manifest
92 _CPPFLAGS = $(CPPFLAGS) $(CXXFLAGS) $(GECKO_DEFINES) $(GECKO_INCLUDES) $(DEFINES)
94 $(OBJDIR)%.o: %.cpp Makefile
95 $(CPP)$@ -c $(_CPPFLAGS) $<
97 .depend: $(CPPSRCS) Makefile
98 $(MKDEP) $(_CPPFLAGS) $(CPPSRCS) | $(SED) 's;^[^ ];$(OBJDIR)&;' >.depend
100 $(MODULE).so: $(OBJS)
101 $(LINK) -o $@ $(OBJS) $(LDFLAGS) $(GECKO_LDFLAGS)
104 $(MODULE).dll: $(OBJS)
105 $(LINK)$@ $(GECKO_LDFLAGS) $(OBJS)
107 $(sort $(XPTDIR) $(SODIR) $(OBJDIR)):
109 .PHONY: module xpts build clean all depend manifest