include $(CONFIG)
# TARGET and PREFIX are passed
H=@
#get the files ################################################
HDR=$(shell ls *.h 2> /dev/null)
SRC=$(shell ls *.c *.pkg 2> /dev/null)
OBJ=$(subst .c,.o,$(subst .pkg,.o,$(SRC)))
CDEPFILES=$(shell ls *.c 2> /dev/null)
ifneq ($(MAKECMDGOALS),clean)
ifneq "$(CDEPFILES)" ""
-include $(CDEPFILES:%.c=.%.d)
endif
LDEPFILES=$(shell ls *.pkg 2> /dev/null)
ifneq "$(LDEPFILES)" ""
-include $(LDEPFILES:%.pkg=.%.d)
endif
endif
#flags #######################################################
CFLAGS+= -I. -I../modules/include
ifneq "$(OS)" "Windows"
CFLAGS+= $(shell curl-config --cflags)
endif
ifeq "$(OS)" "Windows"
CFLAGS+= -DFREEPOPSLUA_PATH=\"lua/\"
CFLAGS+= -DFREEPOPSLUA_PATH_UNOFFICIAL=\"lua_unofficial/\"
else
ifeq "$(OS)" "Darwin"
CFLAGS+= -DFREEPOPSLUA_PATH=\"src/lua/\"
CFLAGS+= -DFREEPOPSLUA_PATH_UNOFFICIAL=\"src/lua_unofficial/\"
else
ifeq "$(OS)" "Darwin-static"
CFLAGS+= -DFREEPOPSLUA_PATH=\"src/lua/\"
CFLAGS+= -DFREEPOPSLUA_PATH_UNOFFICIAL=\"src/lua_unofficial/\"
else
#ifeq "$(OS)" "BeOS"
# CFLAGS+= -DFREEPOPSLUA_PATH=\"$HOME/config/settings/freepops/lua/\"
# CFLAGS+= -DFREEPOPSLUA_PATH_UNOFFICIAL=\"$HOME/config/settings/freepops/lua_unofficial/\"
#
#else
CFLAGS+= -DFREEPOPSLUA_PATH=\"$(PREFIX)share/freepops/lua/\"
CFLAGS+= -DFREEPOPSLUA_PATH_UNOFFICIAL=\"$(PREFIX)share/freepops/lua_unofficial/\"
#endif
endif
endif
endif
ifeq "$(OS)" "Cygwin"
CFLAGS+= -I/usr/include
endif
#CURL_LD_FLAGS=$(shell curl-config --libs || true)
ifeq "$(CURL_LD_FLAGS)" ""
CURL_LD_FLAGS= -lcurl
endif
EXPAT_LD_FLAGS= -lexpat
BINARY=freepopsd$(EXEEXTENSION)
LIBS= crypto_lua \
regularexp_lua \
stringhack_lua \
browser_lua \
getdate_lua \
getdate \
curl_lua \
support_lua \
mlex_lua \
log_lua \
serialize_lua \
session_lua \
pop3server_lua \
pop3server \
portablesocket_lua \
base64_lua \
portablesocket \
session \
dictionary \
lock \
pid \
mlex \
list \
base64 \
log \
regularexp \
oscompatibility \
luabind \
luaexpat \
luafilesystem \
luay \
luacompat-5.1 \
lua \
lualib
EXCLUDELIBS= serialize_lua \
browser_lua \
support_lua
LIBSTOLINK=$(filter-out $(EXCLUDELIBS),$(LIBS))
LDFLAGS=$(FORCE_LINK)
ifeq "$(OS)" "Windows"
ifeq "$(SSL)" "openssl"
LDFLAGS+= -L ../modules/lib \
-Wl,-whole-archive -lwinsystray -Wl,-no-whole-archive\
$(addprefix -l,$(LIBSTOLINK)) \
-lregex -lm -l$(CURLNAME) -lmingw32 -lwsock32 \
-lpthread -lexpat -lcrypto -lgdi32 -mwindows
else
LDFLAGS+= -L ../modules/lib \
-Wl,-whole-archive -lwinsystray -Wl,-no-whole-archive\
$(addprefix -l,$(LIBSTOLINK)) \
-lregex -lm -l$(CURLNAME) -lmingw32 -lwsock32 \
-lpthread -lexpat -lgdi32 -mwindows -lgcrypt -lgpg-error
endif
else
ifeq "$(OS)" "Darwin"
LDFLAGS+=-L../modules/lib $(addprefix -l,$(LIBSTOLINK)) \
-lgetopt -lm \
-lpthread -L/usr/lib -L/sw/lib /sw/lib/libexpat.a -lcurl \
-lcrypto -ldl -lssl -lcrypto -lz
else
ifeq "$(OS)" "Darwin-static"
OSXLIBDL=-ldl
ifneq "$(shell find /usr/local/lib/ -iname libdl.a)" ""
OSXLIBDL=/usr/local/lib/libdl.a
endif
ifneq "$(shell find /sw/lib/ -iname libdl.a)" ""
OSXLIBDL=/sw/lib/libdl.a
endif
LDFLAGS+=-L../modules/lib $(addprefix -l,$(LIBSTOLINK)) \
$(OSXLIBDL) /sw/lib/libcurl.a \
/sw/lib/libssl.a /sw/lib/libcrypto.a /sw/lib/libexpat.a \
-L/usr/lib -lgetopt -lm -lpthread -lz -bind_at_load -noprebind
else
ifeq "$(OS)" "OpenBSD"
LIBSTOLINK+= getopt
LDFLAGS+=-L../modules/lib $(addprefix -l,$(LIBSTOLINK)) -lm -pthread \
$(CURL_LD_FLAGS) $(EXPAT_LD_FLAGS)
else
ifeq "$(OS)" "FreeBSD"
LIBSTOLINK+= getopt
LDFLAGS+=-L../modules/lib $(addprefix -l,$(LIBSTOLINK)) -lm -pthread \
$(CURL_LD_FLAGS) $(EXPAT_LD_FLAGS)
else
ifeq "$(OS)" "Solaris"
LIBSTOLINK+= getopt
LDFLAGS+=-R$(PREFIX)/lib -L../modules/lib $(addprefix \
-l,$(LIBSTOLINK)) -lm $(CURL_LD_FLAGS) $(EXPAT_LD_FLAGS)
else
ifeq "$(OS)" "Cygwin"
LDFLAGS+= -L ../modules/lib \
$(addprefix -l,$(LIBSTOLINK)) -lregex -lm -lpthread -lcurl \
-lwsock32 -lexpat -lgdi32 -lz -lssl -lcrypto -lcygwin
else
ifeq "$(OS)" "BeOS"
LDFLAGS+=-L ../modules/lib $(addprefix -l,$(LIBSTOLINK)) \
-ldl -lpthread $(CURL_LD_FLAGS) $(EXPAT_LD_FLAGS) \
-lbe -lsocket -lbind
else
ifeq "$(SSL)" "openssl"
LDFLAGS+=-L ../modules/lib $(addprefix -l,$(LIBSTOLINK))\
-ldl -lm -lpthread -lcrypto -rdynamic \
$(CURL_LD_FLAGS) $(EXPAT_LD_FLAGS)
else
LDFLAGS+=-L ../modules/lib $(addprefix -l,$(LIBSTOLINK))\
-ldl -lm -lpthread -lgcrypt -rdynamic \
$(CURL_LD_FLAGS) $(EXPAT_LD_FLAGS)
endif
endif
endif
endif
endif
endif
endif
endif
endif
#rules ####################################################
all: $(CDEPFILES:%.c=.%.d) $(LDEPFILES:%.pkg=.%.d) $(BINARY)
$(H)echo -n
clean:
$(H)rm -f $(CDEPFILES:%.c=.%.d) $(OBJ)\
$(LDEPFILES:%.pkg=.%.d) $(LDEPFILES:%.pkg=%.c) \
$(LDEPFILES:%.pkg=%.h) $(BINARY)
#############################################
$(BINARY): $(OBJ) $(addsuffix .a,$(addprefix ../modules/lib/lib,$(LIBS)))
$(H)echo -n " linking "
# $(H)$(RANLIB) ../modules/lib/libgetdate.a ../modules/lib/liblua.a
$(H)$(RANLIB) $(addsuffix .a,$(addprefix ../modules/lib/lib,$(filter-out mlex_lua,$(LIBSTOLINK))))
$(H)$(CC) -o $(BINARY) $(OBJ) $(LDFLAGS)
$(H)echo "$(BINARY)"
$(H)echo $(DYNLIBS)
.%.d:%.c
$(H)echo " building dep for $<"
$(H)$(CC) $(CFLAGS) -MM $< > $@;
.%.d:%.pkg
$(H)echo " building dep for $<"
$(H)echo "$(subst .pkg,.o,$<) : $< " > $@
%.o:%.pkg
$(H)echo -n " processing $< -> "
$(H)$(PREFIX)/bin/tolua++ -S -H $(subst .pkg,.h,$<) -o $(subst .pkg,.c,$<) $<
$(H)echo "$(subst .pkg,.c,$<)"
$(H)echo -n " compiling $(subst .pkg,.c,$<) -> "
$(H)$(CC) $(CFLAGS) -c $(subst .pkg,.c,$<) || \
(mv -f $(subst .pkg,.c,$<) $(subst .pkg,.c,$<)~;exit 1)
$(H)mv -f $(subst .pkg,.c,$<) $(subst .pkg,.c,$<)~
$(H)echo "$@"
%.o:%.c
$(H)echo -n " compiling $< -> "
$(H)$(CC) $(CFLAGS) -c $<
$(H)echo "$@"
.PHONY:all
syntax highlighted by Code2HTML, v. 0.9.1