view src/Makefile.mingw @ 5556:8ab1875e6d09

[gaim-migrate @ 5957] This is mostly some small changes to oscar to make it faster and more portable (like, to 64 bit platforms). It's pretty much all from The Ryan McCabe (odin). He's the man. I didn't actually test this, but CVS is probably broken right now anyway. Fear not--if it doesn't work I'll be sure to fix it real good now, ya hear. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Fri, 30 May 2003 02:35:44 +0000
parents d44a62911183
children 2c04c55222b7
line wrap: on
line source

#
# Makefile.mingw
#
# Description: Makefile for win32 (mingw) version of Gaim
#

#
# PATHS
#

INCLUDE_DIR :=		.
GTK_TOP :=		../../win32-dev/gtk_2_0
GAIM_TOP :=		..
GAIM_SRC :=		.
ASPELL_TOP :=		../../win32-dev/aspell-dev-0-50-3-3
GTKSPELL_TOP :=		../../win32-dev/gtkspell-2.0.4
IDLETRACK_TOP :=	$(GAIM_TOP)/src/win32/IdleTracker
GAIM_INSTALL_DIR :=	$(GAIM_TOP)/win32-install-dir
MINGW_PLUS_DIR :=	$(GAIM_SRC)/win32/mingw_plus

##
## VARIABLE DEFINITIONS
##

TARGET = gaim

# Compiler and Linker Options

CFLAGS =

DEFINES =

LDFLAGS = -mconsole -mwindows

#-mconsole
#-mwindows

##
## INCLUDE  MAKEFILES
##

include $(GAIM_TOP)/src/win32/global.mak

##
## INCLUDE PATHS
##

INCLUDE_PATHS =		-I$(INCLUDE_DIR) \
			-I$(INCLUDE_DIR)/win32 \
			-I$(MINGW_PLUS_DIR) \
			-I$(IDLETRACK_TOP) \
			-I$(GAIM_TOP) \
			-I$(GTK_TOP)/include \
			-I$(GTK_TOP)/include/gtk-2.0 \
			-I$(GTK_TOP)/include/glib-2.0 \
			-I$(GTK_TOP)/include/pango-1.0 \
			-I$(GTK_TOP)/include/atk-1.0 \
			-I$(GTK_TOP)/lib/glib-2.0/include \
			-I$(GTK_TOP)/lib/gtk-2.0/include \
			-I$(ASPELL_TOP)/include \
			-I$(GTKSPELL_TOP)


LIB_PATHS =		-L$(GTK_TOP)/lib \
			-L$(GAIM_SRC) \
			-L$(IDLETRACK_TOP) \
			-L$(ASPELL_TOP)/lib

##
##  SOURCES, OBJECTS
##

DLL_C_SRC =		about.c \
			away.c \
			blist.c \
			browser.c \
			buddy_chat.c \
			conversation.c \
			core.c \
			debug.c \
			dialogs.c \
			dnd-hints.c \
			event.c \
			ft.c \
			gaim-disclosure.c \
			gaimrc.c \
			gtkblist.c \
			gtkconv.c \
			gtkcellrendererprogress.c \
			gtkdebug.c \
			gtkft.c \
			gtkimhtml.c \
			gtknotify.c \
			gtkplugin.c \
			gtkpounce.c \
			gtkprefs.c \
			gtkrequest.c \
			gtkutils.c \
			html.c \
			idle.c \
			log.c \
			main.c \
			md5.c \
			multi.c \
			notify.c \
			plugin.c \
			pounce.c \
			prefs.c \
			proxy.c \
			prpl.c \
			request.c \
			server.c \
			sound.c \
			stock.c \
			themes.c \
			util.c \
			win32/win32dep.c \
			win32/MinimizeToTray.c \
			win32/libc_interface.c \
			win32/systray.c \
			win32/wspell.c \
			win32/untar.c

RC_SRC =		win32/gaimrc.rc

EXE_C_SRC = 		win_gaim.c

DLL_OBJECTS = $(DLL_C_SRC:%.c=%.o) 

EXE_OBJECTS = $(EXE_C_SRC:%.c=%.o) $(RC_SRC:%.rc=%.o) 

##
## LIBRARIES
##

DLL_LIBS =		-lgtk-win32-2.0 \
			-lpango-1.0 \
			-lglib-2.0 \
			-lgdk-win32-2.0 \
			-lgobject-2.0 \
			-lintl \
			-lgmodule-2.0 \
			-lgdk_pixbuf-2.0 \
			-lws2_32 \
			-liberty \
			-lwinmm \
			-llibz \
			-lidletrack
			

EXE_LIBS = -lgaim -lglib-2.0

##
## RULES
##

# How to make a C file
%.o: %.c
	$(CC) $(CFLAGS) $(INCLUDE_PATHS) $(DEFINES) -c $< -o $@

# How to make an RC file
%.o: %.rc
	windres -i $< -o $@

##
## TARGET DEFINITIONS
##

.PHONY: all clean

all: $(TARGET).exe $(TARGET).dll

install:
	cp $(GAIM_SRC)/gaim.exe $(GAIM_SRC)/gaim.dll $(GAIM_INSTALL_DIR)

$(IDLETRACK_TOP)/idletrack.dll:
	$(MAKE) -C $(IDLETRACK_TOP) -f Makefile.mingw

#
# BUILD DLL
#

$(TARGET).def: $(DLL_OBJECTS)
	dlltool -D $(TARGET).dll -z $(TARGET).def --export-all-symbols \
		--exclude-symbols WinMain@16 $^

$(TARGET).base: $(DLL_OBJECTS)
	$(CC) -mdll $(LDFLAGS) -o junk.tmp -Wl,--base-file,$@ $(DLL_OBJECTS) $(LIB_PATHS) $(DLL_LIBS)
	rm -rf junk.tmp

$(TARGET).exp: $(TARGET).base $(TARGET).def
	dlltool --dllname $(TARGET).dll --base-file $(TARGET).base \
		--output-exp $(TARGET).exp --def $(TARGET).def

$(TARGET).dll: $(DLL_OBJECTS) $(IDLETRACK_TOP)/idletrack.dll $(TARGET).exp
	$(CC) -mdll $(LDFLAGS) -o $(TARGET).dll $(DLL_OBJECTS) -Wl,$(TARGET).exp $(LIB_PATHS) $(DLL_LIBS)
	rm -rf $(TARGET).exp $(TARGET).def $(TARGET).base

$(TARGET).lib: $(TARGET).def
	dlltool -D $(TARGET).dll -d $(TARGET).def -l $(TARGET).lib

#
# BUILD EXE
#

$(TARGET).exe: $(TARGET).lib $(EXE_OBJECTS)
	$(CC) $(LDFLAGS) $(EXE_OBJECTS) $(LIB_PATHS) $(EXE_LIBS) -o $(TARGET).exe

##
## CLEAN RULES
##

clean:
	$(MAKE) -C $(IDLETRACK_TOP) -f Makefile.mingw clean
	rm -rf *.o ./win32/*.o
	rm -rf $(TARGET).dll
	rm -rf $(TARGET).lib
	rm -rf $(TARGET).exe