diff Makefile.mingw @ 16177:d88f0f320c9b

merge of '07fc4db9a3c2c12596e0354b8e7959aa847f966b' and '2e6d324c725b3e6a2c803589bca3f0ac9b9790bf'
author Richard Laager <rlaager@wiktel.com>
date Mon, 16 Apr 2007 00:44:33 +0000
parents ded8da3de5f8
children 8da9fef3843a
line wrap: on
line diff
--- a/Makefile.mingw	Mon Apr 16 00:43:53 2007 +0000
+++ b/Makefile.mingw	Mon Apr 16 00:44:33 2007 +0000
@@ -2,128 +2,99 @@
 #
 # Author: hermanator12002@yahoo.com
 # Date 9/11/02
-# Description: Top Makefile for win32 (mingw) port of Gaim
+# Description: Top Makefile for win32 (mingw) port of Pidgin and LibPurple
 #
 
-GAIM_SRC = ./src
-GAIM_PROTOS = $(GAIM_SRC)/protocols
-GAIM_PLUGINS = ./plugins
-GAIM_PIXMAPS = ./pixmaps
-GAIM_SOUNDS = ./sounds
-GAIM_INSTALL_DIR = ./win32-install-dir
-GTKSPELL_TOP = ../win32-dev/gtkspell-2.0.6/gtkspell
-IDLETRACK_TOP = $(GAIM_SRC)/win32/IdleTracker
-GTKRC_TOP = ../win32-dev/gtkrc
-OSCAR = $(GAIM_PROTOS)/oscar
-YAHOO = $(GAIM_PROTOS)/yahoo
-MSN = $(GAIM_PROTOS)/msn
-TOC = $(GAIM_PROTOS)/toc
-IRC = $(GAIM_PROTOS)/irc
-JABBER = $(GAIM_PROTOS)/jabber
-NAPSTER = $(GAIM_PROTOS)/napster
-GG = $(GAIM_PROTOS)/gg
-NOVELL = $(GAIM_PROTOS)/novell
-SILC = $(GAIM_PROTOS)/silc
-SIMPLE = $(GAIM_PROTOS)/simple
-SAMETIME = $(GAIM_PROTOS)/sametime
-PO = ./po
+PIDGIN_TREE_TOP := .
+include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
 
-MAKENSIS := makensis.exe
-
-VERSION := $(shell cat ./VERSION)
-
-NEEDED_DLLS =		$(GTKSPELL_TOP)/libgtkspell.dll \
-			$(IDLETRACK_TOP)/idletrack.dll
+# Generate a X.X.X.X version for the installer file versioning header
+# The last digit will be 99 for a final release, 0 for dev or unknown, or the beta number
+PIDGIN_PRODUCT_VERSION = $(shell \
+awk 'BEGIN {FS="."} { \
+    if (int($$3) == $$3) { \
+        $$4 = "99"; \
+    } else { \
+        $$5 = $$3; \
+        sub(int($$3), "", $$5); \
+        if ($$5 == "dev") { \
+            $$4 = "0"; \
+        } else { \
+            if (sub("beta", "", $$5) > 0) { \
+                $$4 = $$5; \
+            } else { \
+                $$4 = "0"; \
+            } \
+        } \
+    } \
+    printf("%s.%s.%s.%s", $$1, $$2, int($$3), $$4); \
+    exit; \
+}' VERSION)
 
-SOUNDS =		$(GAIM_SOUNDS)/alert.wav \
-			$(GAIM_SOUNDS)/login.wav \
-			$(GAIM_SOUNDS)/logout.wav \
-			$(GAIM_SOUNDS)/receive.wav \
-			$(GAIM_SOUNDS)/send.wav
-
-
-##
-## Don't forget to change STATIC_PROTO_INIT, in config.h.mingw if you
-## change the status of a protocol (static/plugin)
-##
+GTK_INSTALL_VERSION = $(shell \
+  source ../gtk_installer/version.sh; \
+  echo $$gtk_version \
+)
 
-OSCAR_TYPE = PLUGIN
-YAHOO_TYPE = PLUGIN
-MSN_TYPE = PLUGIN
-TOC_TYPE = PLUGIN
-IRC_TYPE = PLUGIN
-JABBER_TYPE = PLUGIN
-NAPSTER_TYPE = PLUGIN
-GG_TYPE = PLUGIN
-NOVELL_TYPE = PLUGIN
-SILC_TYPE = PLUGIN
-SIMPLE_TYPE = PLUGIN
-SAMETIME_TYPE = PLUGIN
+# Any *.dll or *.exe files included in win32-install-dir that we don't compile
+# should be included in this list so they don't get stripped
+EXTERNAL_DLLS = \
+	freebl3.dll \
+	libgtkspell.dll \
+	libmeanwhile-1.dll \
+	libxml2.dll \
+	nspr4.dll \
+	nss3.dll \
+	nssckbi.dll \
+	plc4.dll \
+	plds4.dll \
+	silc.dll \
+	silcclient.dll \
+	softokn3.dll \
+	ssl3.dll
 
-all:
-	cp config.h.mingw config.h
-	$(MAKE) TYPE='$(OSCAR_TYPE)' -C $(OSCAR) -f Makefile.mingw
-	$(MAKE) TYPE='$(YAHOO_TYPE)' -C $(YAHOO) -f Makefile.mingw
-	$(MAKE) TYPE='$(MSN_TYPE)' -C $(MSN) -f Makefile.mingw
-	$(MAKE) TYPE='$(IRC_TYPE)' -C $(IRC) -f Makefile.mingw
-	$(MAKE) TYPE='$(JABBER_TYPE)' -C $(JABBER) -f Makefile.mingw
-	$(MAKE) TYPE='$(NAPSTER_TYPE)' -C $(NAPSTER) -f Makefile.mingw
-	$(MAKE) TYPE='$(GG_TYPE)' -C $(GG) -f Makefile.mingw
-	$(MAKE) TYPE='$(NOVELL_TYPE)' -C $(NOVELL) -f Makefile.mingw
-	$(MAKE) TYPE='$(SILC_TYPE)' -C $(SILC) -f Makefile.mingw
-	$(MAKE) TYPE='$(SIMPLE_TYPE)' -C $(SIMPLE) -f Makefile.mingw
-	$(MAKE) TYPE='$(SAMETIME_TYPE)' -C $(SAMETIME) -f Makefile.mingw
-	$(MAKE) -C $(GAIM_SRC) -f Makefile.mingw
-	$(MAKE) -C $(GAIM_PLUGINS) -f Makefile.mingw
+#build an expression for `find` to use to ignore the above files
+EXTERNAL_DLLS_FIND_EXP = $(patsubst %,-o -name %,$(EXTERNAL_DLLS))
 
+.PHONY: all install installer installer_nogtk installer_debug installers clean uninstall create_release_install_dir
 
-install: all
-	mkdir -p $(GAIM_INSTALL_DIR)/plugins
-	mkdir -p $(GAIM_INSTALL_DIR)/sounds/gaim
-	$(MAKE) -C $(GAIM_PIXMAPS) -f Makefile.mingw install
-	$(MAKE) -C $(PO) -f Makefile.mingw install
-	$(MAKE) -C $(GAIM_SRC) -f Makefile.mingw install
-	$(MAKE) -C $(GAIM_PLUGINS) -f Makefile.mingw install
-	$(MAKE) TYPE='$(OSCAR_TYPE)' -C $(OSCAR) -f Makefile.mingw install
-	$(MAKE) TYPE='$(YAHOO_TYPE)' -C $(YAHOO) -f Makefile.mingw install
-	$(MAKE) TYPE='$(MSN_TYPE)' -C $(MSN) -f Makefile.mingw install
-	$(MAKE) TYPE='$(IRC_TYPE)' -C $(IRC) -f Makefile.mingw install
-	$(MAKE) TYPE='$(JABBER_TYPE)' -C $(JABBER) -f Makefile.mingw install
-	$(MAKE) TYPE='$(NAPSTER_TYPE)' -C $(NAPSTER) -f Makefile.mingw install
-	$(MAKE) TYPE='$(GG_TYPE)' -C $(GG) -f Makefile.mingw install
-	$(MAKE) TYPE='$(NOVELL_TYPE)' -C $(NOVELL) -f Makefile.mingw install
-	$(MAKE) TYPE='$(SILC_TYPE)' -C $(SILC) -f Makefile.mingw install
-	$(MAKE) TYPE='$(SIMPLE_TYPE)' -C $(SIMPLE) -f Makefile.mingw install
-	$(MAKE) TYPE='$(SAMETIME_TYPE)' -C $(SAMETIME) -f Makefile.mingw install
-	cp $(NEEDED_DLLS) $(GAIM_INSTALL_DIR)
-	cp $(SOUNDS) $(GAIM_INSTALL_DIR)/sounds/gaim
+all: $(PIDGIN_CONFIG_H)
+	$(MAKE) -C $(PURPLE_TOP) -f $(MINGW_MAKEFILE)
+	$(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE)
+	$(MAKE) -C $(PURPLE_PO_TOP) -f $(MINGW_MAKEFILE)
+
+install: all $(PIDGIN_INSTALL_DIR)
+	$(MAKE) -C $(PURPLE_TOP) -f $(MINGW_MAKEFILE) install
+	$(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE) install
+	$(MAKE) -C $(PURPLE_PO_TOP) -f $(MINGW_MAKEFILE) install
 
-installer:
-	$(MAKENSIS) /DGAIM_VERSION="$(VERSION)" /DWITH_GTK gaim-installer.nsi
+create_release_install_dir: install
+	rm -rf $(PIDGIN_INSTALL_DIR).release
+	cp -R $(PIDGIN_INSTALL_DIR) $(PIDGIN_INSTALL_DIR).release
+	find $(PIDGIN_INSTALL_DIR).release \( -name '*.dll' -o -name '*.exe' \) \
+	 -not \( -false $(EXTERNAL_DLLS_FIND_EXP) \) -exec $(STRIP) --strip-unneeded {} ';'
 
-installer_nogtk:
-	$(MAKENSIS) /DGAIM_VERSION="$(VERSION)" gaim-installer.nsi
+installer: create_release_install_dir
+	$(MAKENSIS) /V3 /DPIDGIN_VERSION="$(PIDGIN_VERSION)" /DPIDGIN_PRODUCT_VERSION="$(PIDGIN_PRODUCT_VERSION)" /DWITH_GTK /DPIDGIN_INSTALL_DIR="$(PIDGIN_INSTALL_DIR).release" /DGTK_INSTALL_VERSION="$(GTK_INSTALL_VERSION)" pidgin/win32/nsis/pidgin-installer.nsi
+	mv pidgin/win32/nsis/pidgin*.exe ./
 
-installer_debug:
-	$(MAKENSIS) /DGAIM_VERSION="$(VERSION)" /DDEBUG gaim-installer.nsi
+installer_nogtk: create_release_install_dir
+	$(MAKENSIS) /V3 /DPIDGIN_VERSION="$(PIDGIN_VERSION)" /DPIDGIN_PRODUCT_VERSION="$(PIDGIN_PRODUCT_VERSION)" /DPIDGIN_INSTALL_DIR="$(PIDGIN_INSTALL_DIR).release" /DGTK_INSTALL_VERSION="$(GTK_INSTALL_VERSION)" pidgin/win32/nsis/pidgin-installer.nsi
+	mv pidgin/win32/nsis/pidgin*.exe ./
 
-installers: installer installer_nogtk
+installer_debug: install
+	$(MAKENSIS) /V3 /DPIDGIN_VERSION="$(PIDGIN_VERSION)" /DPIDGIN_PRODUCT_VERSION="$(PIDGIN_PRODUCT_VERSION)" /DPIDGIN_INSTALL_DIR="$(PIDGIN_INSTALL_DIR)" /DDEBUG /DGTK_INSTALL_VERSION="$(GTK_INSTALL_VERSION)" pidgin/win32/nsis/pidgin-installer.nsi
+	mv pidgin/win32/nsis/pidgin*.exe ./
 
+installers: installer installer_nogtk installer_debug
 
 clean:
-	$(MAKE) -C $(PO) -f Makefile.mingw clean
-	$(MAKE) -C $(OSCAR) -f Makefile.mingw clean
-	$(MAKE) -C $(YAHOO) -f Makefile.mingw clean
-	$(MAKE) -C $(MSN) -f Makefile.mingw clean
-	$(MAKE) -C $(IRC) -f Makefile.mingw clean
-	$(MAKE) -C $(JABBER) -f Makefile.mingw clean
-	$(MAKE) -C $(NAPSTER) -f Makefile.mingw clean
-	$(MAKE) -C $(GG) -f Makefile.mingw clean
-	$(MAKE) -C $(NOVELL) -f Makefile.mingw clean
-	$(MAKE) -C $(SILC) -f Makefile.mingw clean
-	$(MAKE) -C $(SIMPLE) -f Makefile.mingw clean
-	$(MAKE) -C $(SAMETIME) -f Makefile.mingw clean
-	$(MAKE) -C $(GAIM_SRC) -f Makefile.mingw clean
-	$(MAKE) -C $(GAIM_PLUGINS) -f Makefile.mingw clean
-	rm -rf config.h $(GAIM_INSTALL_DIR)
-	rm -rf gaim*.exe
+	$(MAKE) -C $(PURPLE_PO_TOP) -f $(MINGW_MAKEFILE) clean
+	$(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE) clean
+	$(MAKE) -C $(PURPLE_TOP) -f $(MINGW_MAKEFILE) clean
+	rm -f $(PIDGIN_CONFIG_H) VERSION pidgin*.exe
+
+uninstall:
+	rm -rf $(PURPLE_INSTALL_PERLMOD_DIR) $(PIDGIN_INSTALL_PLUGINS_DIR) $(PURPLE_INSTALL_PO_DIR) $(PIDGIN_INSTALL_DIR) $(PIDGIN_INSTALL_DIR).release
+
+include $(PIDGIN_COMMON_TARGETS)