#
# Makefile.mingw
#
# Description: Makefile for win32 (mingw) version of Gastman
# Author: Roland Krikava
# Date: September 16, 2002
#

#
# PATHS
#

GASTMAN_TOP :=		.
WIN32DEV_TOP :=		../win32-dev
GTK_2_0_TOP :=		$(WIN32DEV_TOP)/gtk_2_0
GTK_1_2_TOP :=		$(WIN32DEV_TOP)/gtk_1_2
DB_TOP :=		$(WIN32DEV_TOP)/db-3.1
GTK_1_2_LIB :=		$(GTK_1_2_TOP)/lib
GTK_2_0_LIB :=		$(GTK_2_0_TOP)/lib
GASTMAN_INSTALL_DIR :=	./gastman-win32

##
## VARIABLE DEFINITIONS
##

TARGET = gastman

# Build version either GTK_1_2 or GTK_2_0
BUILD_VER = GTK_2_0

# Compiler Options

CC = gcc

CFLAGS = -O2 -g -Wall -mno-cygwin -fnative-struct

LDFLAGS = -mwindows # -mconsole

DEFINES = -DGTK_ENABLE_BROKEN

##
## INCLUDE  MAKEFILES
##


##
## INCLUDE PATHS
##

INCLUDES =		-I$(GASTMAN_TOP) \
			-I$(GASTMAN_TOP)/include \
			-I$(DB_TOP)

GTK_2_0_INCLUDES =	-I$(GTK_2_0_TOP)/include \
			-I$(GTK_2_0_TOP)/include/gtk-2.0 \
			-I$(GTK_2_0_TOP)/include/glib-2.0 \
			-I$(GTK_2_0_TOP)/include/pango-1.0 \
			-I$(GTK_2_0_TOP)/include/atk-1.0 \
			-I$(GTK_2_0_TOP)/lib/glib-2.0/include \
			-I$(GTK_2_0_TOP)/lib/gtk-2.0/include 

GTK_1_2_INCLUDES =	-I$(GTK_1_2_TOP)/include \
			-I$(GTK_1_2_TOP)/include/glib-2.0 \
			-I$(GTK_1_2_TOP)/lib/glib-2.0/include \
			-I$(GTK_1_2_TOP)/lib/gtk+/include

GTK_2_0_LIB_PATHS =	-L$(GTK_2_0_TOP)/lib \
			-L$(DB_TOP)

GTK_1_2_LIB_PATHS =	-L$(GTK_1_2_TOP)/lib \
			-L$(DB_TOP)


##
##  SOURCES, OBJECTS
##

C_SRC =			gastman.c \
			gui.c \
			gtklink.c

WIN32_C_SRC =		strsep.c \
			gettimeofday.c

OBJECTS = $(C_SRC:%.c=%.o) 

WIN32_OBJECTS = $(WIN32_C_SRC:%.c=win32/%.o)

##
## LIBRARIES
##

GTK_2_0_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 \
			-ldb31


GTK_1_2_LIBS =		-lgtk \
			-lglib-2.0 \
			-lgdk \
			-lgmodule-2.0 \
			-lintl \
			-lws2_32 \
			-liberty \
			-lwinmm \
			-ldb31


GTK_1_2_DLLS =		$(GTK_1_2_LIB)/libgdk-0.dll \
			$(GTK_1_2_LIB)/libglib-2.0-0.dll \
			$(GTK_1_2_LIB)/libintl-1.dll \
			$(GTK_1_2_LIB)/iconv.dll \
			$(GTK_1_2_LIB)/libgmodule-2.0-0.dll \
			$(GTK_1_2_LIB)/libgtk-0.dll \
			$(DB_TOP)/libdb31.dll


GTK_2_0_DLLS = 		$(GTK_2_0_LIB)/libgdk-win32-2.0-0.dll \
			$(GTK_2_0_LIB)/libglib-2.0-0.dll \
			$(GTK_2_0_LIB)/libintl-1.dll \
			$(GTK_2_0_LIB)/iconv.dll \
			$(GTK_2_0_LIB)/libgmodule-2.0-0.dll \
			$(GTK_2_0_LIB)/libgtk-win32-2.0-0.dll \
			$(GTK_2_0_LIB)/libgdk_pixbuf-2.0-0.dll \
			$(GTK_2_0_LIB)/libgobject-2.0-0.dll \
			$(GTK_2_0_LIB)/libpango-1.0-0.dll \
			$(GTK_2_0_LIB)/libpangowin32-1.0-0.dll \
			$(GTK_2_0_LIB)/libatk-1.0-0.dll \
			$(DB_TOP)/libdb31.dll

##
## RULES
##

ifeq ($(BUILD_VER),GTK_2_0)
INCLUDE_PATHS = $(INCLUDES) $(GTK_2_0_INCLUDES)
endif

ifeq ($(BUILD_VER),GTK_1_2)
INCLUDE_PATHS = $(INCLUDES) $(GTK_1_2_INCLUDES)
DEFINES += -DNO_PIXBUF
endif

# 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
##

ifeq ($(BUILD_VER),GTK_2_0)
LIB_PATHS = $(GTK_2_0_LIB_PATHS)
LIBS = $(GTK_2_0_LIBS)
endif

ifeq ($(BUILD_VER),GTK_1_2)
LIB_PATHS = $(GTK_1_2_LIB_PATHS)
LIBS = $(GTK_1_2_LIBS)
endif

.PHONY: all clean

all: $(TARGET).exe

$(TARGET).exe: $(OBJECTS) $(WIN32_OBJECTS)
	gcc $(OBJECTS) $(WIN32_OBJECTS) $(LIB_PATHS) $(LIBS) -o $(TARGET).exe

ifeq ($(BUILD_VER),GTK_2_0)
install: all
	mkdir -p $(GASTMAN_INSTALL_DIR)/icons
	cp $(GTK_2_0_DLLS) $(TARGET).exe $(GASTMAN_INSTALL_DIR)
	cp -R art/*.xpm $(GASTMAN_INSTALL_DIR)/icons
	mkdir -p $(GASTMAN_INSTALL_DIR)/lib/gtk-2.0
	cp -R $(GTK_2_0_LIB)/gtk-2.0/2.0.0 $(GASTMAN_INSTALL_DIR)/lib/gtk-2.0
	cp -R $(GTK_2_0_LIB)/pango $(GASTMAN_INSTALL_DIR)/lib
	cp -R $(GTK_2_0_TOP)/etc $(GASTMAN_INSTALL_DIR)
endif

ifeq ($(BUILD_VER),GTK_1_2)
install: all
	mkdir -p $(GASTMAN_INSTALL_DIR)/icons
	cp $(GTK_1_2_DLLS) $(TARGET).exe $(GASTMAN_INSTALL_DIR)
	cp -R art/*.xpm $(GASTMAN_INSTALL_DIR)/icons
endif

##
## CLEAN RULES
##

clean:
	rm -rf *.o win32/*.o
	rm -rf $(TARGET).exe
	rm -rf $(GASTMAN_INSTALL_DIR)



syntax highlighted by Code2HTML, v. 0.9.1