1DEBUG                = 0
2LIBRETRODB_DIR      := ../
3LIBRETRO_COMMON_DIR := ../../libretro-common
4INCFLAGS             = -I. -I$(LIBRETRODB_DIR) -I$(LIBRETRO_COMMON_DIR)/include
5
6TARGETS              = rmsgpack_test libretrodb_tool lua_converter
7
8ifeq ($(DEBUG), 1)
9CFLAGS               = -g -O0 -Wall
10else
11CFLAGS               = -g -O2 -Wall -DNDEBUG
12endif
13
14LUA_CONVERTER_C = \
15			 $(LIBRETRODB_DIR)/rmsgpack.c \
16			 $(LIBRETRODB_DIR)/rmsgpack_dom.c \
17			 lua_common.c \
18			 $(LIBRETRODB_DIR)/libretrodb.c \
19			 $(LIBRETRODB_DIR)/bintree.c \
20			 $(LIBRETRODB_DIR)/query.c \
21			 lua_converter.c \
22			 $(LIBRETRO_COMMON_DIR)/compat/compat_fnmatch.c \
23			 $(LIBRETRO_COMMON_DIR)/streams/file_stream.c \
24			 $(LIBRETRO_COMMON_DIR)/compat/compat_strl.c
25
26LUA_CONVERTER_OBJS := $(LUA_CONVERTER_C:.c=.o)
27
28RARCHDB_TOOL_C = \
29			 $(LIBRETRODB_DIR)/rmsgpack.c \
30			 $(LIBRETRODB_DIR)/rmsgpack_dom.c \
31			 $(LIBRETRODB_DIR)/libretrodb_tool.c \
32			 $(LIBRETRODB_DIR)/bintree.c \
33			 $(LIBRETRODB_DIR)/query.c \
34			 ($LIBRETRODB_DIR)/libretrodb.c \
35			 $(LIBRETRO_COMMON_DIR)/compat/compat_fnmatch.c \
36			 $(LIBRETRO_COMMON_DIR)/streams/file_stream.c \
37			 $(LIBRETRO_COMMON_DIR)/compat/compat_strl.c
38
39RARCHDB_TOOL_OBJS := $(RARCHDB_TOOL_C:.c=.o)
40
41TESTLIB_C = \
42			 testlib.c \
43			 $(LIBRETRODB_DIR)/query.c \
44			 ($LIBRETRODB_DIR)/libretrodb.c \
45			 $(LIBRETRODB_DIR)/bintree.c \
46			 $(LIBRETRODB_DIR)/rmsgpack.c \
47			 $(LIBRETRODB_DIR)/rmsgpack_dom.c \
48			 $(LIBRETRO_COMMON_DIR)/compat/compat_fnmatch.c \
49			 $(LIBRETRO_COMMON_DIR)/streams/file_stream.c \
50			 $(LIBRETRO_COMMON_DIR)/compat/compat_strl.c
51
52TESTLIB_OBJS := $(TESTLIB_C:.c=.o)
53
54RMSGPACK_C = \
55			$(LIBRETRODB_DIR)/rmsgpack.c \
56			$(LIBRETRODB_DIR)/rmsgpack_test.c \
57			$(LIBRETRO_COMMON_DIR)/streams/file_stream.c
58
59RMSGPACK_OBJS := $(RMSGPACK_C:.c=.o)
60
61LUA_FLAGS     = `pkg-config lua --libs`
62TESTLIB_FLAGS = $(CFLAGS) $(LUA_FLAGS) -shared -fpic
63
64.PHONY: all clean check
65
66all: $(TARGETS)
67
68%.o: %.c
69	$(CC) $(INCFLAGS) $< -c $(CFLAGS) -o $@
70
71lua_converter: $(LUA_CONVERTER_OBJS)
72	$(CC) $(INCFLAGS) $(LUA_CONVERTER_OBJS) $(LUA_FLAGS) -o $@
73
74libretrodb_tool: $(RARCHDB_TOOL_OBJS)
75	$(CC) $(INCFLAGS) $(RARCHDB_TOOL_OBJS) -o $@
76
77rmsgpack_test: $(RMSGPACK_OBJS)
78	$(CC) $(INCFLAGS) $(RMSGPACK_OBJS) -g -o $@
79
80testlib.so: CFLAGS += -fPIC
81testlib.so: clean $(TESTLIB_OBJS)
82	$(CC) $(INCFLAGS) $(TESTLIB_FLAGS) $(TESTLIB_OBJS) -o $@
83
84check: testlib.so lua/tests.lua
85	lua ./lua/tests.lua
86
87clean:
88	rm -rf $(TARGETS) $(LUA_CONVERTER_OBJS) $(C_CONVERTER_OBJS) $(RARCHDB_TOOL_OBJS) $(RMSGPACK_OBJS) $(TESTLIB_OBJS) testlib.so
89