1#
2# Makefile.mingw
3#
4# Description: Makefile for encrypt plugin.
5#
6
7#
8# PATHS
9#
10
11PE_PIDGIN_TOP :=		../../..
12GTK_TOP :=		$(PE_PIDGIN_TOP)/../win32-dev/gtk_2_0
13PE_TOP := .
14
15PIDGIN_INSTALL_DIR :=	$(PE_PIDGIN_TOP)/win32-install-dir
16DLL_INSTALL_DIR :=	$(PIDGIN_INSTALL_DIR)/plugins
17STANDALONE_INSTALL_DIR :=  $(PE_TOP)/win32-install-dir
18
19NSS_TOP :=		$(PE_PIDGIN_TOP)/../win32-dev/nss-3.11.4
20NSPR_TOP :=		$(PE_PIDGIN_TOP)/../win32-dev/nspr-4.6.4
21
22##
23## VARIABLE DEFINITIONS
24##
25
26ENC_VERSION := $(shell cat ./VERSION)
27MAIN_VERSION := $(shell cat ../../../VERSION)
28
29TARGET = encrypt
30
31PO = ./po
32
33# Compiler Options
34
35CFLAGS = -DGETTEXT_STATIC
36
37DEFINES = -DENABLE_NLS -DENC_VERSION=\"$(ENC_VERSION)\" -DNO_CONFIG -DENC_PACKAGE=\"pidgin-encryption\" -DPIDGIN_DATADIR="wpidgin_install_dir()"
38
39##
40## INCLUDE  MAKEFILES
41##
42
43include $(PE_PIDGIN_TOP)/libpurple/win32/global.mak
44
45##
46## INCLUDE PATHS
47##
48
49INCLUDE_PATHS +=	-I. \
50			-I$(GTK_TOP)/include \
51			-I$(NSS_TOP)/include \
52			-I$(NSPR_TOP)/include \
53			-I$(GTK_TOP)/include/gtk-2.0 \
54			-I$(GTK_TOP)/include/glib-2.0 \
55			-I$(GTK_TOP)/include/pango-1.0 \
56			-I$(GTK_TOP)/include/atk-1.0 \
57			-I$(GTK_TOP)/lib/glib-2.0/include \
58			-I$(GTK_TOP)/lib/gtk-2.0/include \
59			-I$(PE_PIDGIN_TOP)/libpurple \
60			-I$(PE_PIDGIN_TOP)/libpurple/win32 \
61			-I$(PE_PIDGIN_TOP)/pidgin \
62			-I$(PE_PIDGIN_TOP)/pidgin/win32 \
63			-I$(PE_PIDGIN_TOP)
64
65
66LIB_PATHS =		-L$(NSS_TOP)/lib \
67         -L$(NSPR_TOP)/lib \
68         -L$(GTK_TOP)/lib \
69			-L$(PE_PIDGIN_TOP)/libpurple \
70			-L$(PE_PIDGIN_TOP)/pidgin \
71			-L$(PE_PIDGIN_TOP)/win32-install-dir
72
73
74##
75##  SOURCES, OBJECTS
76##
77
78C_SRC = pe_blist.c config_ui.c cryptutil.c gpg.c keys_ui.c \
79        prefs.c cryptproto.c encrypt.c keys.c nonce.c\
80        nss_mgf1.c nss_oaep.c nss_pss.c rsa_nss.c \
81        state.c state_ui.c pe_ui.c
82
83
84
85OBJECTS = $(C_SRC:%.c=%.o)
86
87
88##
89## LIBRARIES
90##
91
92LIBS =			-lgtk-win32-2.0 \
93         -latk-1.0 \
94         -lpango-1.0 \
95			-lglib-2.0 \
96			-lgdk-win32-2.0 \
97         -lgdk_pixbuf-2.0 \
98			-lgmodule-2.0 \
99			-lgobject-2.0 \
100         -liberty \
101         -lwinmm \
102			-lws2_32 \
103			-lintl \
104			-lpurple \
105			-lpidgin \
106         -lnss3 \
107         -lnspr4 \
108         -lssl3
109
110
111##
112## RULES
113##
114
115# How to make a C file
116
117%.o: %.c
118	$(CC) $(CFLAGS) $(DEFINES) $(INCLUDE_PATHS) -o $@ -c $<
119
120##
121## TARGET DEFINITIONS
122##
123
124.PHONY: all clean installer
125
126all: $(TARGET).dll
127
128install: $(TARGET).dll
129	$(MAKE) -C $(PO) -f Makefile.mingw install
130	cp $(TARGET).dll $(DLL_INSTALL_DIR)
131	mkdir -p $(STANDALONE_INSTALL_DIR)/plugins
132	cp $(TARGET).dll $(STANDALONE_INSTALL_DIR)/plugins
133	mkdir -p $(STANDALONE_INSTALL_DIR)/pixmaps/pidgin-encryption
134	cp pixmaps/*.png $(STANDALONE_INSTALL_DIR)/pixmaps/pidgin-encryption
135
136##
137## BUILD Dependencies
138##
139
140#$(PURPLE_TOP)/src/purple.lib:
141#	$(MAKE) -C $(PURPLE_TOP)/src -f Makefile.mingw purple.lib
142
143##
144## BUILD DLL
145##
146# $(PURPLE_TOP)/src/purple.lib
147$(TARGET).dll: pidgin-encryption-config.h $(OBJECTS)
148	$(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $(TARGET).dll
149
150installer:
151	makensis.exe /DPIDGIN-ENCRYPTION_VERSION="$(ENC_VERSION)" /DPIDGIN_VERSION="$(MAIN_VERSION)" pidgin-encryption-installer.nsi
152
153pidgin-encryption-config.h:
154	touch pidgin-encryption-config.h
155
156##
157## CLEAN RULES
158##
159
160clean:
161	rm -rf *.o
162	rm -rf $(TARGET).dll
163