]> git.donarmstrong.com Git - dactyl.git/blob - binary/src/Makefile
Import 1.0rc1 supporting Firefox up to 11.*
[dactyl.git] / binary / src / Makefile
1 ROOT = ..
2
3 XPTDIR          = $(ROOT)/components/$(ABI)/
4 SODIR           = $(ROOT)/components/$(ABI)/
5 OBJDIR          = $(ABI)/
6
7 MODULE          = $(SODIR)dactyl
8
9 XPIDLSRCS       = \
10                 dactylIUtils.idl \
11                 $(NULL)
12
13 CPPSRCS         = \
14                 dactylModule.cpp \
15                 dactylUtils.cpp \
16                 mozJSLoaderUtils.cpp \
17                 subscriptLoader.cpp \
18                 $(NULL)
19
20 HEADERS         = \
21                   config.h              \
22                   dactylUtils.h         \
23                   mozJSLoaderUtils.h    \
24                   $(XPIDLSRCS:%.idl=$(ABI)/%.h)
25
26 GECKO_DEFINES  = -DMOZILLA_STRICT_API
27
28 GECKO_INCLUDES = -I$(ABI)/                      \
29                  -I$(GECKO_SDK_PATH)            \
30                  -I$(GECKO_SDK_PATH)/idl        \
31                  -I$(GECKO_SDK_PATH)/include
32
33 GECKO_LDFLAGS =  -L$(GECKO_SDK_PATH)/bin \
34                  -L$(GECKO_SDK_PATH)/lib \
35                  -lxpcomglue_s  \
36                  -lxpcom        \
37                  -lnspr4        \
38                  -shared        \
39                  $(NULL)
40
41 ifeq "$(shell uname -s)" "Darwin"
42         GECKO_LDFLAGS += -undefined dynamic_lookup
43 endif
44
45 include $(ROOT)/config.mk
46 sinclude $(ROOT)/config.local.mk
47
48 CPPFLAGS += $(EXCPPFLAGS)
49
50 XPTS = $(XPIDLSRCS:%.idl=$(XPTDIR)%.xpt)
51 OBJS = $(CPPSRCS:%.cpp=$(OBJDIR)%.o)
52 MANIFEST = $(SODIR)/components.manifest
53
54 all: build manifest
55
56 dirs: $(XPTDIR) $(SODIR) $(OBJDIR)
57
58 depend: .depend
59
60 manifest: $(MANIFEST)
61
62 module: dirs $(MODULE).so
63
64 dll: dirs $(MODULE).dll
65
66 xpts: $(XPTS)
67
68 build: dirs module xpts
69
70 clean:
71         rm $(MODULE).so
72
73
74 $(OBJS): $(HEADERS)
75
76 $(ABI)/%.h: %.idl
77         $(IDL_H) $@ $(GECKO_INCLUDES) $<
78
79 $(XPTDIR)%.xpt: %.idl
80         $(IDL_XPT) $@ $(GECKO_INCLUDES) $<
81
82 $(MANIFEST): Makefile
83         ( echo interfaces $(XPIDLSRCS:.idl=.xpt);       \
84           echo binary-component $(MODULE:$(SODIR)%=%).$(LIBEXT) )       \
85             >$@
86         
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
91
92 _CPPFLAGS = $(CPPFLAGS) $(CXXFLAGS) $(GECKO_DEFINES) $(GECKO_INCLUDES) $(DEFINES)
93
94 $(OBJDIR)%.o: %.cpp Makefile
95         $(CPP)$@ -c $(_CPPFLAGS) $<
96
97 .depend: $(CPPSRCS) Makefile
98         $(MKDEP) $(_CPPFLAGS) $(CPPSRCS) | $(SED) 's;^[^ ];$(OBJDIR)&;' >.depend
99
100 $(MODULE).so: $(OBJS)
101         $(LINK) -o $@ $(OBJS) $(LDFLAGS) $(GECKO_LDFLAGS)
102         chmod +x $@
103
104 $(MODULE).dll: $(OBJS)
105         $(LINK)$@ $(GECKO_LDFLAGS) $(OBJS)
106
107 $(sort $(XPTDIR) $(SODIR) $(OBJDIR)):
108         mkdir -p $@
109 .PHONY: module xpts build clean all depend manifest
110
111 sinclude .depend