Move everything into one Makefile

Avoid having to execute two different make commands to properly build the plugin, when there are changes in the telegram-cli files.
This commit is contained in:
mjentsch 2014-07-08 21:17:50 +02:00
parent 2099d9fbc3
commit 6a439a5d55
2 changed files with 85 additions and 96 deletions

View file

@ -1,3 +1,7 @@
#
# Telegram Flags
#
srcdir=@srcdir@
CFLAGS=@CFLAGS@
@ -6,9 +10,6 @@ CPPFLAGS=@CPPFLAGS@
DEFS=@DEFS@
COMPILE_FLAGS=${CFLAGS} ${CPPFLAGS} ${DEFS} -Wall -Wextra -Werror -Wno-deprecated-declarations -fno-strict-aliasing -fno-omit-frame-pointer -ggdb
# include libpurple headers for debugging purposes
CFLAGS_PURPLE = $(shell pkg-config --cflags purple)
EXTRA_LIBS=@LIBS@ @EXTRA_LIBS@
LOCAL_LDFLAGS=-rdynamic -ggdb ${EXTRA_LIBS}
LINK_FLAGS=${LDFLAGS} ${LOCAL_LDFLAGS}
@ -16,23 +17,98 @@ LINK_FLAGS=${LDFLAGS} ${LOCAL_LDFLAGS}
HEADERS= ${srcdir}/constants.h ${srcdir}/include.h ${srcdir}/interface.h ${srcdir}/LICENSE.h ${srcdir}/loop.h ${srcdir}/mtproto-client.h ${srcdir}/mtproto-common.h ${srcdir}/net.h ${srcdir}/no-preview.h ${srcdir}/queries.h ${srcdir}/structures.h ${srcdir}/telegram.h ${srcdir}/tree.h ${srcdir}/config.h ${srcdir}/binlog.h ${srcdir}/tools.h ${srcdir}/lua-tg.h ${srcdir}/msglog.h
INCLUDE=-I. -I${srcdir}
CC=@CC@
OBJECTS=main.o loop.o interface.o net.o mtproto-common.o mtproto-client.o queries.o structures.o binlog.o tools.o lua-tg.o msglog.o
OBJECTS=main.o loop.o interface.o net.o mtproto-common.o mtproto-client.o queries.o structures.o binlog.o tools.o lua-tg.o msglog.o tg-cli.o
.SUFFIXES:
.SUFFIXES: .c .h .o
all: telegram
#
# Plugin Flags
#
LIBS_PURPLE = $(shell pkg-config --libs purple)
CFLAGS_PURPLE = $(shell pkg-config --cflags purple)
PLUGIN_DIR_PURPLE:=$(shell pkg-config --variable=plugindir purple)
DATA_ROOT_DIR_PURPLE:=$(shell pkg-config --variable=datarootdir purple)
ARCH = ""
ifeq ($(ARCH),i686)
ARCHFLAGS = -m32
else ifeq ($(ARCH),x86_64)
ARCHFLAGS = -m64
else
ARCHFLAGS =
endif
LD = $(CC)
PRPL_C_SRCS = purple-plugin/telegram-purple.c
PRPL_C_OBJS = $(PRPL_C_SRCS:.c=.o)
PRPL_LIBNAME = telegram-purple.so
PRPL_INCLUDE = -I. -I./purple-plugin
PRPL_LDFLAGS = $(ARCHFLAGS) -shared
STRIP = strip
PRPL_CFLAGS = \
$(ARCHFLAGS) \
-fPIC \
-DPURPLE_PLUGINS \
-DPIC \
-g \
$(CFLAGS_PURPLE)
#
# Telegram Objects
#
.c.o :
${CC} -fPIC -DPIC ${CFLAGS_PURPLE} ${COMPILE_FLAGS} ${INCLUDE} -c $< -o $@
${OBJECTS}: ${HEADERS}
telegram: ${OBJECTS}
${CC} ${OBJECTS} ${LINK_FLAGS} -o $@
.c.o :
${CC} -fPIC -DPIC ${CFLAGS_PURPLE} ${COMPILE_FLAGS} ${INCLUDE} -c $< -o $@
#
# Plugin Objects
#
objects: ${OBJECTS}
$(PRPL_C_OBJS): $(PRPL_C_SRCS)
$(CC) -c $(PRPL_INCLUDE) $(PRPL_CFLAGS) $(CFLAGS) $(CPPFLAGS) -o $@ $<
$(PRPL_LIBNAME): $(OBJECTS) $(PRPL_C_OBJS)
$(LD) $(PRPL_LDFLAGS) $(LDFLAGS) $(PRPL_INCLUDE) $(LIBS_PURPLE) $(EXTRA_LIBS) -o $@ $(PRPL_C_OBJS) $(OBJECTS)
plugin: $(PRPL_LIBNAME)
.PHONY: strip
strip: $(PRPL_LIBNAME)
$(STRIP) --strip-unneeded $(PRPL_LIBNAME)
debug: PRPL_CFLAGS += -g -DDEBUG
debug: $(PRPL_LIBNAME)
gdb -tui -ex 'break telegram-purple.c:tgprpl_login' pidgin
# TODO: Find a better place for server.pub
install: $(PRPL_LIBNAME)
install -D $(PRPL_LIBNAME) $(DESTDIR)$(PLUGIN_DIR_PURPLE)/$(PRPL_LIBNAME)
install -D tg-server.pub /etc/telegram/server.pub
install -D purple-plugin/telegram16.png $(DESTDIR)$(DATA_ROOT_DIR_PURPLE)/pixmaps/pidgin/protocols/16/telegram.png
install -D purple-plugin/telegram22.png $(DESTDIR)$(DATA_ROOT_DIR_PURPLE)/pixmaps/pidgin/protocols/22/telegram.png
install -D purple-plugin/telegram48.png $(DESTDIR)$(DATA_ROOT_DIR_PURPLE)/pixmaps/pidgin/protocols/48/telegram.png
.PHONY: uninstall
uninstall: $(PRPL_LIBNAME)
rm -f $(DESTDIR)$(PLUGIN_DIR_PURPLE)/$(PRPL_LIBNAME)
rm -f /etc/telegram/server.pub
rm -f $(DESTDIR)$(DATA_ROOT_DIR_PURPLE)/pixmaps/pidgin/protocols/16/telegram.png
rm -f $(DESTDIR)$(DATA_ROOT_DIR_PURPLE)/pixmaps/pidgin/protocols/22/telegram.png
rm -f $(DESTDIR)$(DATA_ROOT_DIR_PURPLE)/pixmaps/pidgin/protocols/48/telegram.png
.PHONY: run
run: install
pidgin -d | grep 'telegram\|plugin'
clean:
rm -rf *.a *.o telegram config.log config.status > /dev/null || echo "all clean"
rm -rf *.so *.a *.o telegram config.log config.status $(PRPL_C_OBJS) $(PRPL_LIBNAME) > /dev/null || echo "all clean"

View file

@ -1,87 +0,0 @@
# Include libs from tg (--disable-liblua --disable-lib)
# TODO: These flags should depend on the used configuration flags
EXTRA_LIBS = -lcrypto -lz -lm -lreadline
LDFLAGSTG = -L/usr/local/lib
CPPFLAGSTG = -I/usr/local/include
OBJECTSTG = ../main.o ../loop.o ../interface.o ../net.o ../mtproto-common.o ../mtproto-client.o ../queries.o ../structures.o ../binlog.o ../tools.o ../lua-tg.o ../msglog.o ../tg-cli.o
INCLUDE = -I. -I..
#
LIBNAME = telegram-purple.so
ARCH = ""
ifeq ($(ARCH),i686)
ARCHFLAGS = -m32
else ifeq ($(ARCH),x86_64)
ARCHFLAGS = -m64
else
ARCHFLAGS =
endif
.PHONY: all
all: $(LIBNAME)
C_SRCS = telegram-purple.c
C_OBJS = $(C_SRCS:.c=.o)
STRIP = strip
CC = gcc
LD = $(CC)
CFLAGS_PURPLE = $(shell pkg-config --cflags purple)
CFLAGS = \
$(ARCHFLAGS) \
-fPIC \
-DPURPLE_PLUGINS \
-DPIC \
-g \
$(CFLAGS_PURPLE)
LIBS_PURPLE = $(shell pkg-config --libs purple)
LDFLAGS = $(ARCHFLAGS) -shared
%.o: %.c
$(CC) -c $(INCLUDE) $(CFLAGS) -o $@ $<
$(LIBNAME): $(C_OBJS)
cd ..; make objects; cd ./purple-plugin;
$(LD) $(LDFLAGS) $(INCLUDE) $(LIBS_PURPLE) $(EXTRA_LIBS) -o $@ $^ $(OBJECTSTG)
.PHONY: strip
strip: $(LIBNAME)
$(STRIP) --strip-unneeded $(LIBNAME)
.PHONY: debug install
debug: CFLAGS += -g -DDEBUG
debug: $(LIBNAME)
gdb -tui -ex 'break telegram-purple.c:tgprpl_login' pidgin
PLUGIN_DIR_PURPLE:=$(shell pkg-config --variable=plugindir purple)
DATA_ROOT_DIR_PURPLE:=$(shell pkg-config --variable=datarootdir purple)
# TODO: Find a better place for server.pub
.PHONY: install
install: $(LIBNAME)
install -D $(LIBNAME) $(DESTDIR)$(PLUGIN_DIR_PURPLE)/$(LIBNAME)
install -D ../tg-server.pub /etc/telegram/server.pub
install -D telegram16.png $(DESTDIR)$(DATA_ROOT_DIR_PURPLE)/pixmaps/pidgin/protocols/16/telegram.png
install -D telegram22.png $(DESTDIR)$(DATA_ROOT_DIR_PURPLE)/pixmaps/pidgin/protocols/22/telegram.png
install -D telegram48.png $(DESTDIR)$(DATA_ROOT_DIR_PURPLE)/pixmaps/pidgin/protocols/48/telegram.png
.PHONY: uninstall
uninstall: $(LIBNAME)
rm -f $(DESTDIR)$(PLUGIN_DIR_PURPLE)/$(LIBNAME)
rm -f /etc/telegram/server.pub
rm -f $(DESTDIR)$(DATA_ROOT_DIR_PURPLE)/pixmaps/pidgin/protocols/16/telegram.png
rm -f $(DESTDIR)$(DATA_ROOT_DIR_PURPLE)/pixmaps/pidgin/protocols/22/telegram.png
rm -f $(DESTDIR)$(DATA_ROOT_DIR_PURPLE)/pixmaps/pidgin/protocols/48/telegram.png
.PHONY: clean
clean:
-rm -f *.o *.a
-rm -f $(LIBNAME)
.PHONY: run
run: all install
pidgin -d