SKYNET_ROOT ?= ../skynet
include $(SKYNET_ROOT)/platform.mk

PLAT ?= linux

#####################################################
SKYNET_LUA_INC ?= $(SKYNET_ROOT)/3rd/lua/
SKYNET_LUA_LIB ?= $(SKYNET_ROOT)/3rd/lua/
SKYNET_SRC ?= $(SKYNET_ROOT)/skynet-src

LFLAGS = $(SHARED) -I$(SKYNET_LUA_INC)

LUA_CLIB_PATH ?= ../luaclib
#####################################################
LFS_SO 					= $(LUA_CLIB_PATH)/lfs.so
CJSON_SO        		= $(LUA_CLIB_PATH)/cjson.so
PROFILE_SO 				= $(LUA_CLIB_PATH)/profile.so
SKIPLIST_SO 			= $(LUA_CLIB_PATH)/skiplist.so
SKIPSET_SO 				= $(LUA_CLIB_PATH)/skipset.so
SNAPSHOT_SO         	= $(LUA_CLIB_PATH)/snapshot.so
SHIFTTIMER_SO       	= $(LUA_CLIB_PATH)/shiftimer.so
CLUA_SO 				= $(LUA_CLIB_PATH)/clua.so
AOI_SO 					= $(LUA_CLIB_PATH)/aoi.so
ECS_SO 					= $(LUA_CLIB_PATH)/ecs.so
LUASOCKET_SO 			= $(LUA_CLIB_PATH)/socket.so
TERMFX_SO 				= $(LUA_CLIB_PATH)/termfx.so
RC4_SO 					= $(LUA_CLIB_PATH)/rc4.so
MATH_SO 				= $(LUA_CLIB_PATH)/math3d.so
FMT_SO 					= $(LUA_CLIB_PATH)/fmt.so
CFFI_SO 				= $(LUA_CLIB_PATH)/cffi.so

#####################################################
all: 	$(LFS_SO) 						\
		$(CJSON_SO) 					\
		$(PROFILE_SO) 					\
		$(SKIPLIST_SO) 					\
		$(SKIPSET_SO) 					\
		$(SNAPSHOT_SO)      			\
		$(SHIFTTIMER_SO)      			\
		$(AOI_SO)      					\
		$(ECS_SO)      					\
		$(TERMFX_SO)      				\
		$(RC4_SO)      					\
		$(CLUA_SO)      				\
		$(MATH_SO)      				\
		$(FMT_SO)      					\
		$(CFFI_SO)      				\
		$(LUASOCKET_SO)      	
			
#####################################################

$(LFS_SO):
	cd lua-lfs && $(MAKE) PLAT=$(PLAT)

$(CJSON_SO):
	cd lua-cjson && $(MAKE) PLAT=$(PLAT)

$(PROFILE_SO):
	cd lua-profile && $(MAKE) PLAT=$(PLAT)

$(SKIPLIST_SO):
	cd lua-skiplist && $(MAKE) PLAT=$(PLAT)

$(SKIPSET_SO):
	cd lua-skipset && $(MAKE) PLAT=$(PLAT)

$(SNAPSHOT_SO):
	cd lua-snapshot && $(MAKE) PLAT=$(PLAT)

$(SHIFTTIMER_SO):
	cd lua-timer && $(MAKE) PLAT=$(PLAT)

$(AOI_SO):
	cd lua-aoi && $(MAKE) PLAT=$(PLAT)

$(CLUA_SO):
	cd lua-clua && $(MAKE) PLAT=$(PLAT)

$(ECS_SO):
	cd lua-ecs && $(MAKE) PLAT=$(PLAT)

$(FMT_SO):
	cd lua-fmt && $(MAKE) PLAT=$(PLAT)

$(MATH_SO):
	cd math3d && $(MAKE) PLAT=$(PLAT)

$(CFFI_SO):
	cd ../3rd/ffi-lua && $(MAKE) PLAT=$(PLAT)

$(RC4_SO):
	cd lua-rc4 && $(MAKE) PLAT=$(PLAT)

$(TERMFX_SO):
	cd lua-termfx && $(MAKE)
	cp -f lua-termfx/termfx.so $@

$(LUASOCKET_SO):
	cd luasocket && $(MAKE) $(PLAT)
	cp -f luasocket/src/socket-3.0-rc1.so $@

#####################################################	
cleanall:
	rm -f $(LUA_CLIB_PATH)/*.so && \
	rm -rf $(LUA_CLIB_PATH)/*.dSYM && \
	rm -f $(LUA_CLIB_PATH)/*.o && \
	cd lua-termfx && $(MAKE) clean && \
	cd .. && \
	cd luasocket && $(MAKE) clean && \
	cd ../../

.PHONY: all cleanall
