#####################
# PSIP - A lightweight GTK GUI for pjsip
# (C) James Budiono 2011, 2015
# License: GNU GPL Version 3 or later, please see attached gpl-3.0.txt
# or http://www.gnu.org/copyleft/gpl.html
#
# The build recipe for psip.
#####################
GTK_CFLAGS=$(shell pkg-config --cflags gtk+-2.0 gmodule-2.0 gthread-2.0)
GTK_LDFLAGS=$(shell pkg-config --libs gtk+-2.0 gmodule-2.0 gthread-2.0)
PJPROJECT_CFLAGS=$(shell pkg-config --cflags libpjproject)
PJPROJECT_LDFLAGS=$(shell pkg-config --libs --static libpjproject)
OSXCART_CFLAGS=$(shell pkg-config --cflags osxcart-0)
OSXCART_LDFLAGS=$(shell pkg-config --libs osxcart-0)
CFLAGS := -g -O0 -Wall -Werror \
-Wno-error=deprecated-declarations -Werror=implicit-function-declaration \
-Werror=implicit-int -Wno-error=misleading-indentation $(GTK_CFLAGS) $(PJPROJECT_CFLAGS) $(OSXCART_CFLAGS) $(CFLAGS)
LDFLAGS := -Wl,--export-dynamic $(LDFLAGS)
LDLIBS := $(GTK_LDFLAGS) $(PJPROJECT_LDFLAGS) $(OSXCART_LDFLAGS) -lz
all: psip psip-no-recorder
psip.o: psip.c psip.h psip_icon.h psip.version.h Makefile
cJSON.o: cJSON.c cJSON.h Makefile
config.o: config.c psip.h default_buddies.h Makefile
backend.o: backend.c psip.h Makefile
# convert app icon to include
psip_icon.h: psip48.png
gdk-pixbuf-csource --raw --name=psip_icon psip48.png > psip_icon.h
psip: psip.o config.o cJSON.o backend.o
clean:
-rm -f *.o psip psip-no-recorder psip.glade.h psip_icon.h psip.version.h default_buddies.h
rebuild_psip.o:
-rm -f psip.o
release: CFLAGS := $(CFLAGS) -DRELEASE -Os
release: LDFLAGS := $(LDFLAGS) -Wl,--sort-common,-s
release: rebuild_psip.o psip.glade.h all
# convert glade files into release include
psip.glade.h: psip.glade psip_im.glade version Makefile
#
# gzip the main ui file before including - it's huge (140k+).
#
echo "unsigned char MAIN_GUI_GLADE[] = { " > psip.glade.h
#./xml2c.sh psip.glade >> psip.glade.h
#gzip -c psip.glade | xxd -i >> psip.glade.h ## xxd doesn't exist in wary
xmllint --noblanks psip.glade | sed "s|PSIP_VERSION|`cat version`|" | gzip -9 | hexdump -v -e '" " 16/1 " 0x%02x, " "\n"' | sed -e '$ s/0x ,//g' >> psip.glade.h
echo "};" >> psip.glade.h
echo "#define MAIN_GUI_GLADE_ORIGINAL_SIZE ( $(shell xmllint --noblanks psip.glade | wc -c) + 16 )" >> psip.glade.h
#
# use standard xml2c conversion for im_window - it's small (less than 10k).
#
echo "gchar *IM_GUI_GLADE = " >> psip.glade.h
#./xml2c.sh psip_im.glade >> psip.glade.h
xmllint --noblanks psip_im.glade | ./xml2c.sh >> psip.glade.h
echo ";" >> psip.glade.h
psip.version.h: version Makefile
echo "#define PSIP_VERSION \"`cat version`\"" > psip.version.h
default_buddies.h: default_buddies.txt
echo "#define DEFAULT_BUDDIES \" \\" > default_buddies.h
sed 's/"/\\&/g; s/$$/ \\/' default_buddies.txt >> default_buddies.h
echo "\"" >> default_buddies.h
# the "no-recorder" version
psip-no-recorder: psip-no-recorder.o config.o cJSON.o backend.o
psip-no-recorder.o: psip.c psip.h psip_icon.h Makefile
$(CC) $(CFLAGS) -DDISABLE_RECORDER -c -o psip-no-recorder.o psip.c
# release package
package: clean
-rm -rf /tmp/psip-fossil
-mkdir -p /tmp/psip-fossil
-cp * /tmp/psip-fossil
-fossil info > /tmp/psip-fossil/fossil-version
-echo Version $(shell date +%F) > /tmp/psip-fossil/VERSION
-rm -f /tmp/psip-fossil/startcom*
-rm -f /tmp/psip-fossil/screenshot.png
-tar -C /tmp -cjvf ../psip-$(shell date +%F).tar.bz2 psip-fossil
-rm -rf /tmp/psip-fossil
.PHONY: all clean release rebuild_psip.o tarball