#UNIX VARS
CFLAGS = -Os -Wall
GTKFLAGS =`pkg-config gtk+-2.0 --cflags`
LIBS = `pkg-config gtk+-2.0 --libs`
install = cp
mkdir = mkdir
CC = gcc
ifndef prefix
    prefix=/usr/
endif
plugindir = $(prefix)/lib/xchat/plugins/
Objects = src/away_system.o src/data_manager.o src/events.o src/menu.o src/settings.o src/warnings.o src/help.o src/eggtrayicon.o src/systray.o

#WINDOWS VARS
GTKPREFIX=C:/DEV-CPP/include/
GTKLIBPREFIX=C:/DEV-CPP/lib/
#BINPREFIX=C:/DEV-CPP/bin/
WINCC   = $(BINPREFIX)gcc.exe
DLLWRAP= $(BINPREFIX)dllwrap.exe
DEFFILE=libSystray.def
STATICLIB=libSystray.a

WINLIBS =  -lgtk-win32-2.0 -lgdk-win32-2.0 -lgthread-2.0 -lgdi32 -lole32 -luuid -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl  -liconv -lm -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -L"C:/DEV-CPP/lib" -L"$(GTKPREFIX)gtk-2.0" -L"$(GTKPREFIX)glib-2.0" --no-export-all-symbols --add-stdcall-alias 

WINGTKFLAGS =  -I"$(GTKPREFIX)/gtk-2.0"  -I"$(GTKPREFIX)/glib-2.0"  -I"$(GTKPREFIX)/atk-1.0"  -I"$(GTKPREFIX)/atk-1.0/atk"  -I"$(GTKPREFIX)/gtk-2.0/gdk"  -I"$(GTKPREFIX)/gtk-2.0/gdk-pixbuf"  -I"$(GTKPREFIX)/gtk-2.0/gtk"  -I"$(GTKPREFIX)/glib-2.0/glib"  -I"$(GTKPREFIX)/glib-2.0/gobject"  -I"$(GTKPREFIX)/libpng12"  -I"$(GTKPREFIX)/pango-1.0"  -I"$(GTKPREFIX)/pango-1.0/pango"  -I"$(GTKLIBPREFIX)/glib-2.0"  -I"$(GTKLIBPREFIX)/glib-2.0/include"  -I"$(GTKLIBPREFIX)/gtk-2.0"  -I"$(GTKLIBPREFIX)/gtk-2.0/include"  -I"$(GTKLIBPREFIX)/pkgconfig" 
WINCFLAGS = $(WINGTKFLAGS) -DBUILDING_DLL=1 -D_WIN32_ -Os
WINObjects = src/away_system.o src/data_manager.o src/events.o src/menu.o src/settings.o src/warnings.o src/help.o src/systray.o

ifndef windows
	plugin = systray.so
else 
	plugin=Systray.dll
	plugindir=C:/Program Files/X-Chat2/plugins/
endif

all: $(plugin)
ifdef windows

src/away_system.o: src/away_system.c
	$(WINCC) $(WINCFLAGS) -c src/away_system.c -o src/away_system.o

src/data_manager.o: src/data_manager.c
	$(WINCC) $(WINCFLAGS) -c src/data_manager.c -o src/data_manager.o

src/events.o: src/events.c
	$(WINCC) $(WINCFLAGS) -c src/events.c -o src/events.o

src/menu.o: src/menu.c
	$(WINCC) $(WINCFLAGS) -c src/menu.c -o src/menu.o

src/help.o: src/help.c
	$(WINCC) $(WINCFLAGS) -c src/help.c -o src/help.o

src/settings.o: src/settings.c
	$(WINCC) $(WINCFLAGS) -c src/settings.c -o src/settings.o

src/warnings.o: src/warnings.c
	$(WINCC) $(WINCFLAGS) -c src/warnings.c -o src/warnings.o

src/systray.o: src/systray.c
	$(WINCC) $(WINCFLAGS) -c src/systray.c -o src/systray.o
	
else 

src/eggtrayicon.o: src/libs/Unix/eggtrayicon.c
	$(CC) $(CFLAGS) $(GTKFLAGS) -c src/libs/Unix/eggtrayicon.c -o src/eggtrayicon.o
	
src/away_system.o: src/away_system.c
	$(CC) $(CFLAGS) $(GTKFLAGS) -c src/away_system.c -o src/away_system.o

src/data_manager.o: src/data_manager.c
	$(CC) $(CFLAGS) $(GTKFLAGS) -c src/data_manager.c -o src/data_manager.o

src/events.o: src/events.c
	$(CC) $(CFLAGS) $(GTKFLAGS) -c src/events.c -o src/events.o

src/menu.o: src/menu.c
	$(CC) $(CFLAGS) $(GTKFLAGS) -c src/menu.c -o src/menu.o

src/help.o: src/help.c
	$(CC) $(CFLAGS) $(GTKFLAGS) -c src/help.c -o src/help.o

src/settings.o: src/settings.c
	$(CC) $(CFLAGS) $(GTKFLAGS) -c src/settings.c -o src/settings.o

src/warnings.o: src/warnings.c
	$(CC) $(CFLAGS) $(GTKFLAGS) -c src/warnings.c -o src/warnings.o

src/systray.o: src/systray.c
	$(CC) $(CFLAGS) $(GTKFLAGS) -c src/systray.c -o src/systray.o
endif

systray.so: $(Objects)
	$(CC) $(CFLAGS) $(LIBS) $(Objects) -shared -o $(plugin)

install: all
	$(mkdir) -p $(plugindir)
	$(install) $(plugin) $(plugindir)/$(plugin)
	$(install) src/images/Win32Tray $(plugindir)/ -r -f
	$(install) src/images/GTKTray $(plugindir)/ -r -f
	$(install) src/images/Menu $(plugindir)/ -r -f
	
win-install:
	@echo 'Copy "Systray.dll" and "images" directory where you want. Set images directory in the settings tab'
	@echo 'Automatic install is not provided yet.'
	
clean:
	rm -f src/*.o *.so *.dll

win32: 
	make windows=True

Systray.dll: $(WINObjects)
	$(DLLWRAP) -Os --def Systray.def --output-def $(DEFFILE) --implib $(STATICLIB) $(WINObjects) $(WINLIBS) -o $(plugin)
