##########################################################################
#                                                                        #   
#               MAKEFILE FOR Connector/ODBC 3.51 DRIVER                  #
#                          WINDOWS - DEBUG                               #
#                  (C) Copyright MySQL AB 1995-2005                      #
#                                                                        #
##########################################################################


!MESSAGE *****************************************************************
!MESSAGE *             Connector/ODBC 3.51, Debug Build                  *          
!MESSAGE *             (C) Copyright MySQL AB. 1995-2005                 *
!MESSAGE *                                                               *
!MESSAGE *    AUTHORS: Monty (monty@mysql.com), Venu (venu@mysql.com)    *
!MESSAGE *****************************************************************
!MESSAGE *                                                               *
!MESSAGE *****************************************************************
!MESSAGE * This program is free software; you can redistribute it and/or *
!MESSAGE * modify it under the terms of the GNU General Public License   *
!MESSAGE * as published by the Free Software Foundation; either version  *
!MESSAGE * 2 of the License, or (at your option) any later version.      *
!MESSAGE *****************************************************************
!MESSAGE *                                                               *

include "Makefile.ini"

# outdir
OUTDIR             = $(DEBUG_OUTDIR)

#output path listing
OUTLIST            = -Fo$(OUTDIR)\ -Fd$(OUTDIR)

# all compiler flags in one place 'CFLAGS'
CFLAGS             = $(CGENERAL) $(WARNLEVEL) $(OPTLEVEL) \
                     $(MTHREAD) $(INCDIR) $(DEBUG_CFLAGS) $(OUTLIST)
                     
# mysql client release library path                     
MYSQL_LIB_PATH     = $(DEBUG_MYSQL_LIB_PATH)

# -----------------------------
# DRIVER DEFINATIONS
# -----------------------------

DRIVER_DLL         = $(OUTDIR)\$(MYODBC3_OUTFILE).dll
DRIVER_LIB         = $(OUTDIR)\$(MYODBC3_OUTFILE).lib
!IFNDEF PORTABLE_GUI
MYODBC3_RES        = $(OUTDIR)\myodbc3.res
MYODBC3_RC         = myodbc3_d.rc
MYODBC3_DEF        = myodbc3.def
!ELSE
MYODBC3_RES        = $(OUTDIR)\myodbc3_portable_gui.res
MYODBC3_RC         = myodbc3_portable_gui.rc
MYODBC3_DEF        = myodbc3_portable_gui.def
!ENDIF

# -----------------------------
# DRIVER SOURCE FILES
# -----------------------------

MYODBC3_SRCS       = $(DRIVER_SRC_DIR)/catalog.c \
                     $(DRIVER_SRC_DIR)/connect.c \
                     $(DRIVER_SRC_DIR)/cursor.c \
                     $(DRIVER_SRC_DIR)/dll.c \
                     $(DRIVER_SRC_DIR)/error.c \
                     $(DRIVER_SRC_DIR)/execute.c \
                     $(DRIVER_SRC_DIR)/handle.c \
                     $(DRIVER_SRC_DIR)/info.c \
                     $(DRIVER_SRC_DIR)/misc.c \
                     $(DRIVER_SRC_DIR)/myodbc3.c \
                     $(DRIVER_SRC_DIR)/options.c \
                     $(DRIVER_SRC_DIR)/prepare.c \
                     $(DRIVER_SRC_DIR)/results.c \
!IFNDEF PORTABLE_GUI
                     $(DRIVER_SRC_DIR)/setup.c \
!ENDIF		     
                     $(DRIVER_SRC_DIR)/transact.c \
                     $(DRIVER_SRC_DIR)/utility.c 

# --------------------------------------------------
# DRIVER INTERMEDIATE FILES - FOR DEPENDENCY PURPOSE
# --------------------------------------------------

MYODBC3_OBJS       = $(OUTDIR)/catalog.obj \
                     $(OUTDIR)/connect.obj \
                     $(OUTDIR)/cursor.obj \
                     $(OUTDIR)/dll.obj \
                     $(OUTDIR)/error.obj \
                     $(OUTDIR)/execute.obj \
                     $(OUTDIR)/handle.obj \
                     $(OUTDIR)/info.obj \
                     $(OUTDIR)/misc.obj \
                     $(OUTDIR)/myodbc3.obj \
                     $(OUTDIR)/options.obj \
                     $(OUTDIR)/prepare.obj \
                     $(OUTDIR)/results.obj \
!IFNDEF PORTABLE_GUI
                     $(OUTDIR)/setup.obj \
!ENDIF		     
                     $(OUTDIR)/transact.obj \
                     $(OUTDIR)/utility.obj \
!IFDEF PORTABLE_GUI
                     $(OUTDIR)/myodbc3_portable_gui.res
!ELSE
                     $(OUTDIR)/myodbc3.res
!ENDIF

# ------------------------------------
# BASED ON OS, SPECIFY THE TARGET PATH
# ------------------------------------

!IF "$(OS)" == "Windows_NT"
SYSDIR             = $(WINDIR)\system32
CFLAGS             = $(CFLAGS) -D_WIN32 -DWIN32 -D_WINDOWS -D__WIN__
NULL               = 
!ELSE

SYSDIR             = $(WINDIR)\system
CFLAGS             = $(CFLAGS) -D_WINDOWS -D__WIN__
NULL               = nul
!ENDIF


# -----------------------------
# LINKER FLAGS
# -----------------------------

# mysql client libraries

MYSQL_CLIENT_LIBS  = mysqlclient.lib zlib.lib

# system libraries

!IFDEF PORTABLE_GUI
SYSLIBS            = kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
                     advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib\
                     odbc32.lib odbccp32.lib wsock32.lib
!ELSE
SYSLIBS            = kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
                     advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib\
                     odbc32.lib odbccp32.lib wsock32.lib ctl3d32.lib 
!ENDIF

# linker flags             

LDFLAGS            = $(SYSLIBS) /NODEFAULTLIB:LIBC \
                     /DLL /DEF:$(MYODBC3_DEF) $(MYODBC3_OBJS) \
		     ..\util\myodbcutil.lib \
                     $(MYSQL_CLIENT_LIBS) /implib:$(DRIVER_LIB) \
                     /libpath:$(MYSQL_LIB_PATH) \
                     /out:$(DRIVER_DLL)

# ---------------------------------------------------
# RESOURCE COMPILATION
#
# ONE MUST SUPPLY THE RESOURCE FILE LANGUAGE USING /l 
# IN HEX FORMAXT, 0x409 for english
# ---------------------------------------------------

RES_LANGUAGE       = 0x409
MYODBC3_RES_PROJ   = /l $(RES_LANGUAGE) /fo $(MYODBC3_RES) $(INCDIR) $(MYODBC3_RC)

# -----------------------------
# BUILD TARGET SPECIFICATION
# -----------------------------

all     : build
build   : $(OUTDIR) $(DRIVER_DLL)
default : build
buildall: build copy
install : buildall

#------------------------------
# DRIVER DLL BUILD SPECIFICATION
#------------------------------

$(DRIVER_DLL): $(MYODBC3_OBJS) $(RES) $(MYODBC3_RES) $(MYODBC3_SRCS)
      $(LINK) /DEBUG $(LDFLAGS)

{$(DRIVER_SRC_DIR)}.c{$(OUTDIR)}.obj:
        $(CC) -c $(CFLAGS) $< -o $*.obj

#------------------------------
# RESOURCE COMPILATION
#------------------------------

.rc{$(OUTDIR)}.res: 
	$(RSC) $(MYODBC3_RES_PROJ)
	
#------------------------------
# CREATE OUTPUT DIR, IF IT DOES NOT EXISTS
#------------------------------

$(OUTDIR):
	if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"  
         
# -----------------------------	
# INSTALL SPECIFICATION
# -----------------------------            

copy: 
     copy $(DRIVER_DLL) $(SYSDIR)\myodbc3.dll
     copy $(DRIVER_LIB) $(SYSDIR)\myodbc3.lib

# -----------------------------	
# CLEAN SPECIFICATION
# -----------------------------            

clean:
     -@erase  $(DRIVER_DLL)
     -@erase  $(DRIVER_LIB)
     -@erase  $(OUTDIR)\*.exp
     -@erase  $(MYODBC3_RES)
     -@erase  $(OUTDIR)\*.pdb
     -@erase  $(OUTDIR)\*.ilk
     -@erase  $(OUTDIR)\*.obj
     -@erase  $(OUTDIR)\*.sbr
     -@erase  $(OUTDIR)\*.idb
     -@erase  *.idb
     -@erase  *.pdb
