|
| 1 | +UNAME:= $(shell uname) |
| 2 | +PLAT= DetectOS |
| 3 | + |
1 | 4 | CC= g++ |
2 | | -CFLAGS= -Wall -g -O2 -shared -fPIC -I/usr/include/mongo `pkg-config --cflags lua5.2` `pkg-config --cflags libmongo-client` |
| 5 | +LUAFLAGS= $(shell pkg-config --cflags $(LUAPKG)) |
| 6 | +LUAPKG:= $(shell ( luajit -e 'print("luajit")' 2> /dev/null ) || lua5.2 -e 'print("lua5.2")' 2> /dev/null || lua5.1 -e 'print("lua5.1")' 2> /dev/null || lua -e 'print("lua" .. string.match(_VERSION, "%d+.%d+"))' 2> /dev/null) |
3 | 7 | AR= ar rcu |
4 | 8 | RANLIB= ranlib |
5 | 9 | RM= rm -f |
6 | | -LIBS=`pkg-config --libs lua5.2` -lmongoclient -lssl -lboost_thread -lboost_filesystem |
7 | | -OUTLIB=mongo.so |
| 10 | +OUTLIB= mongo.so |
| 11 | +OBJS = main.o mongo_bsontypes.o mongo_dbclient.o mongo_replicaset.o mongo_connection.o mongo_cursor.o mongo_gridfile.o mongo_gridfs.o mongo_gridfschunk.o mongo_query.o utils.o mongo_cxx_extension.o mongo_gridfilebuilder.o |
8 | 12 |
|
9 | | -LDFLAGS= $(LIBS) |
| 13 | +# macports |
| 14 | +ifneq ("$(wildcard /opt/local/include/mongo/client/dbclient.h)","") |
| 15 | +LUA:= $(shell echo $(LUAPKG) | sed 's/[0-9].[0-9]//g') |
| 16 | +VER:= $(shell echo $(LUAPKG) | sed 's/.*\([0-9].[0-9]\)/\1/g') |
| 17 | +LUAFLAGS:= $(shell pkg-config --cflags '$(LUA) >= $(VER)') |
| 18 | +MONGO_INCLUDE_DIR= /opt/local/include/mongo/ |
| 19 | +MONGO_LIB_DIR= /opt/local/lib |
| 20 | +CFLAGS:= -Wall -g -O2 -fPIC $(LUAFLAGS) -I$(MONGO_INCLUDE_DIR) |
| 21 | +LIBS:= $(shell pkg-config --libs "$(LUA) >= $(VER)") -lmongoclient -lssl -lboost_thread-mt -lboost_filesystem-mt -flat_namespace -bundle -L$(MONGO_LIB_DIR) -rdynamic |
| 22 | +endif |
10 | 23 |
|
11 | | -OBJS = main.o mongo_bsontypes.o mongo_dbclient.o mongo_replicaset.o mongo_connection.o mongo_cursor.o mongo_gridfile.o mongo_gridfs.o mongo_gridfschunk.o mongo_query.o utils.o mongo_cxx_extension.o mongo_gridfilebuilder.o |
| 24 | +# homebrew |
| 25 | +ifneq ("$(wildcard /usr/local/include/mongo/client/dbclient.h)","") |
| 26 | +LUA:= $(shell echo $(LUAPKG) | sed 's/[0-9].[0-9]//g') |
| 27 | +VER:= $(shell echo $(LUAPKG) | sed 's/.*\([0-9].[0-9]\)/\1/g') |
| 28 | +LUAFLAGS:= $(shell pkg-config --cflags '$(LUA) >= $(VER)') |
| 29 | +MONGO_INCLUDE_DIR= /usr/local/include/mongo/ |
| 30 | +MONGO_LIB_DIR= /usr/local/lib |
| 31 | +CFLAGS:= -Wall -g -O2 -fPIC $(LUAFLAGS) -I$(MONGO_INCLUDE_DIR) |
| 32 | +LIBS:= $(shell pkg-config --libs "$(LUA) >= $(VER)") -lmongoclient -lssl -lboost_thread-mt -lboost_filesystem-mt -flat_namespace -bundle -L$(MONGO_LIB_DIR) -rdynamic |
| 33 | +endif |
12 | 34 |
|
13 | | -UNAME = `uname` |
14 | | -PLAT = DetectOS |
| 35 | +ifeq ("$(LIBS)", "") |
| 36 | +MONGOFLAGS:= $(shell pkg-config --cflags libmongo-client) |
| 37 | +CFLAGS:= -Wall -g -O2 -shared -fPIC -I/usr/include/mongo $(LUAFLAGS) $(MONGOFLAGS) |
| 38 | +LIBS:= $(shell pkg-config --libs $(LUAPKG)) -lmongoclient -lssl -lboost_thread -lboost_filesystem -lrt |
| 39 | +endif |
15 | 40 |
|
16 | | -all: $(PLAT) |
| 41 | +LDFLAGS:= $(LIBS) |
17 | 42 |
|
18 | | -DetectOS: |
| 43 | +all: check $(PLAT) |
| 44 | + |
| 45 | +DetectOS: check |
19 | 46 | @make $(UNAME) |
20 | 47 |
|
21 | | -Linux: |
22 | | - @make -f Makefile.linux |
| 48 | +Linux: luamongo |
| 49 | + |
| 50 | +Darwin: checkdarwin luamongo |
| 51 | + |
| 52 | +check: |
| 53 | + @if [ -z $(LUAPKG) ]; then echo "Impossible to detect Lua version, you need LuaJIT, Lua 5.1 or Lua 5.2 installed!"; exit 1; fi |
| 54 | + @if [ -z $(LUAFLAGS) ]; then echo "Unable to configure with pkg-config, luamongo needs developer version of $(LUAPKG). You can force other Lua version by declaring variable LUAPKG=lua5.1 or LUAPKG=lua5.2"; exit 1; fi |
23 | 55 |
|
24 | | -Darwin: |
25 | | - @make -f Makefile.darwin |
| 56 | +checkdarwin: |
| 57 | +ifeq ("$(MONGO_LIB_DIR)", "") |
| 58 | + @echo "To build luamongo on Darwin, you must have either ports or homebrew (preferred) installed!" |
| 59 | + exit 1 |
| 60 | +endif |
| 61 | + |
| 62 | +echo: check |
| 63 | + @echo "CC = $(CC)" |
| 64 | + @echo "CFLAGS = $(CFLAGS)" |
| 65 | + @echo "AR = $(AR)" |
| 66 | + @echo "RANLIB = $(RANLIB)" |
| 67 | + @echo "RM = $(RM)" |
| 68 | + @echo "LDFLAGS = $(LDFLAGS)" |
26 | 69 |
|
27 | 70 | clean: |
28 | 71 | $(RM) $(OBJS) $(OUTLIB) |
29 | 72 |
|
30 | | -.PHONY: all |
| 73 | +############################################################################~ |
| 74 | + |
| 75 | + |
| 76 | +luamongo: $(OBJS) |
| 77 | + $(CC) $(CFLAGS) $(OBJS) -o $(OUTLIB) $(LDFLAGS) |
| 78 | + |
| 79 | +main.o: main.cpp utils.h |
| 80 | + $(CC) -c -o $@ $< $(CFLAGS) |
| 81 | +mongo_dbclient.o: mongo_dbclient.cpp common.h utils.h |
| 82 | + $(CC) -c -o $@ $< $(CFLAGS) |
| 83 | +mongo_connection.o: mongo_connection.cpp common.h utils.h |
| 84 | + $(CC) -c -o $@ $< $(CFLAGS) |
| 85 | +mongo_cursor.o: mongo_cursor.cpp common.h utils.h |
| 86 | + $(CC) -c -o $@ $< $(CFLAGS) |
| 87 | +mongo_gridfile.o: mongo_gridfile.cpp common.h utils.h |
| 88 | + $(CC) -c -o $@ $< $(CFLAGS) |
| 89 | +mongo_gridfs.o: mongo_gridfs.cpp common.h utils.h |
| 90 | + $(CC) -c -o $@ $< $(CFLAGS) |
| 91 | +mongo_gridfschunk.o: mongo_gridfschunk.cpp common.h utils.h |
| 92 | + $(CC) -c -o $@ $< $(CFLAGS) |
| 93 | +mongo_query.o: mongo_query.cpp common.h utils.h |
| 94 | + $(CC) -c -o $@ $< $(CFLAGS) |
| 95 | +mongo_replicaset.o: mongo_replicaset.cpp common.h utils.h |
| 96 | + $(CC) -c -o $@ $< $(CFLAGS) |
| 97 | +mongo_bsontypes.o: mongo_bsontypes.cpp common.h |
| 98 | + $(CC) -c -o $@ $< $(CFLAGS) |
| 99 | +utils.o: utils.cpp common.h utils.h |
| 100 | + $(CC) -c -o $@ $< $(CFLAGS) |
| 101 | +mongo_cxx_extension.o: mongo_cxx_extension.cpp mongo_cxx_extension.h |
| 102 | + $(CC) -c -o $@ $< $(CFLAGS) |
| 103 | +mongo_gridfilebuilder.o: mongo_gridfilebuilder.cpp mongo_cxx_extension.h common.h utils.h |
| 104 | + $(CC) -c -o $@ $< $(CFLAGS) |
| 105 | + |
| 106 | +.PHONY: all check checkdarwin clean DetectOS Linux Darwin echo |
0 commit comments