168 lines
4.1 KiB
Makefile
168 lines
4.1 KiB
Makefile
#################################################################
|
|
## Makefile for building ODBC library on Windows using MinGW ##
|
|
#################################################################
|
|
|
|
ifndef $(OPENSSL_DIR)
|
|
OPENSSL_DIR:=/d/Program_Files/OpenSSL-Win32
|
|
endif
|
|
|
|
ifndef $(MINGW_DIR)
|
|
MINGW_DIR:=/d/buildtools/mingw-8.1.0/msys32/mingw32
|
|
endif
|
|
|
|
PWD_DIR:=$(shell pwd)
|
|
LIBPQ_DIR:=$(PWD_DIR)/libpq
|
|
MINGW32_DIR:=$(MINGW_DIR)/i686-w64-mingw32
|
|
|
|
OUT_DIR:=$(PWD_DIR)/output
|
|
OBJ_DIR:=$(PWD_DIR)/obj
|
|
|
|
DLL_TARGET:=$(OUT_DIR)/psqlodbc35w.dll
|
|
LIB_TARGET:=$(OUT_DIR)/psqlodbc35w.lib
|
|
|
|
CC:=$(MINGW_DIR)/bin/i686-w64-mingw32-gcc
|
|
AR:=$(MINGW_DIR)/bin/i686-w64-mingw32-gcc-ar
|
|
RC_CC:=$(MINGW_DIR)/bin/windres
|
|
|
|
MD:=mkdir -p
|
|
RM:=rm -rf
|
|
|
|
DEFFILE:=$(PWD_DIR)/psqlodbc.def
|
|
|
|
CCFLAG:=-std=gnu++11 \
|
|
-DWIN32 \
|
|
-D_MINGW32 \
|
|
-DUNICODE_SUPPORT \
|
|
-DWIN_MULTITHREAD_SUPPORT \
|
|
-DDRIVER_CURSOR_IMPLEMENT \
|
|
-fpermissive \
|
|
-fPIC \
|
|
-w \
|
|
-m32
|
|
|
|
ifdef RELEASE
|
|
CCFLAG:=$(CCFLAG) -O2
|
|
else
|
|
CCFLAG:=$(CCFLAG) -g
|
|
endif
|
|
|
|
LFLAG:=-L$(OPENSSL_DIR)/lib \
|
|
-L$(LIBPQ_DIR)/lib \
|
|
-L$(MINGW_DIR)/bin \
|
|
-L$(MINGW32_DIR)/lib \
|
|
-llibpq \
|
|
-lodbc32 \
|
|
-lodbccp32 \
|
|
-lwinmm \
|
|
-lws2_32 \
|
|
-llibsecurec \
|
|
-lsecurity \
|
|
-llibcrypto \
|
|
-llibssl \
|
|
-lgdi32 \
|
|
-Wl,--enable-stdcall-fixup,--out-implib,$(DLL_TARGET)
|
|
|
|
RC_SRC:=$(PWD_DIR)/psqlodbc.rc
|
|
RC_OBJ:=$(OBJ_DIR)/psqlodbc_rc.o
|
|
|
|
INC:=-I$(PWD_DIR) \
|
|
-I$(LIBPQ_DIR)/include \
|
|
-I$(LIBPQ_DIR)/include/libpq \
|
|
-I$(MINGW_DIR)/include \
|
|
-I$(MINGW32_DIR)/include
|
|
|
|
SRC:=$(PWD_DIR)/bind.c \
|
|
$(PWD_DIR)/columninfo.c \
|
|
$(PWD_DIR)/connection.c \
|
|
$(PWD_DIR)/convert.c \
|
|
$(PWD_DIR)/descriptor.c \
|
|
$(PWD_DIR)/dlg_specific.c \
|
|
$(PWD_DIR)/dlg_wingui.c \
|
|
$(PWD_DIR)/drvconn.c \
|
|
$(PWD_DIR)/environ.c \
|
|
$(PWD_DIR)/execute.c \
|
|
$(PWD_DIR)/info.c \
|
|
$(PWD_DIR)/inouealc.c \
|
|
$(PWD_DIR)/loadlib.c \
|
|
$(PWD_DIR)/lobj.c \
|
|
$(PWD_DIR)/misc.c \
|
|
$(PWD_DIR)/multibyte.c \
|
|
$(PWD_DIR)/mylog.c \
|
|
$(PWD_DIR)/odbcapi.c \
|
|
$(PWD_DIR)/odbcapi30.c \
|
|
$(PWD_DIR)/odbcapi30w.c \
|
|
$(PWD_DIR)/odbcapiw.c \
|
|
$(PWD_DIR)/options.c \
|
|
$(PWD_DIR)/parse.c \
|
|
$(PWD_DIR)/pgapi30.c \
|
|
$(PWD_DIR)/pgtypes.c \
|
|
$(PWD_DIR)/psqlodbc.c \
|
|
$(PWD_DIR)/qresult.c \
|
|
$(PWD_DIR)/results.c \
|
|
$(PWD_DIR)/setup.c \
|
|
$(PWD_DIR)/statement.c \
|
|
$(PWD_DIR)/tuple.c \
|
|
$(PWD_DIR)/win_unicode.c
|
|
|
|
OBJ:=$(OBJ_DIR)/bind.o \
|
|
$(OBJ_DIR)/columninfo.o \
|
|
$(OBJ_DIR)/connection.o \
|
|
$(OBJ_DIR)/convert.o \
|
|
$(OBJ_DIR)/descriptor.o \
|
|
$(OBJ_DIR)/dlg_specific.o \
|
|
$(OBJ_DIR)/dlg_wingui.o \
|
|
$(OBJ_DIR)/drvconn.o \
|
|
$(OBJ_DIR)/environ.o \
|
|
$(OBJ_DIR)/execute.o \
|
|
$(OBJ_DIR)/info.o \
|
|
$(OBJ_DIR)/inouealc.o \
|
|
$(OBJ_DIR)/loadlib.o \
|
|
$(OBJ_DIR)/lobj.o \
|
|
$(OBJ_DIR)/misc.o \
|
|
$(OBJ_DIR)/multibyte.o \
|
|
$(OBJ_DIR)/mylog.o \
|
|
$(OBJ_DIR)/odbcapi.o \
|
|
$(OBJ_DIR)/odbcapi30.o \
|
|
$(OBJ_DIR)/odbcapi30w.o \
|
|
$(OBJ_DIR)/odbcapiw.o \
|
|
$(OBJ_DIR)/options.o \
|
|
$(OBJ_DIR)/parse.o \
|
|
$(OBJ_DIR)/pgapi30.o \
|
|
$(OBJ_DIR)/pgtypes.o \
|
|
$(OBJ_DIR)/psqlodbc.o \
|
|
$(OBJ_DIR)/qresult.o \
|
|
$(OBJ_DIR)/results.o \
|
|
$(OBJ_DIR)/setup.o \
|
|
$(OBJ_DIR)/statement.o \
|
|
$(OBJ_DIR)/tuple.o \
|
|
$(OBJ_DIR)/win_unicode.o
|
|
|
|
SRC_TO_OBJ=$(OBJ_DIR)/$(patsubst %.c,%.o, $(notdir $(1)))
|
|
|
|
define BUILD_OBJ
|
|
$(call SRC_TO_OBJ,$(1)):$(1)
|
|
$(CC) $(CCFLAG) $(INC) -c $$^ -o $$@
|
|
endef
|
|
|
|
#$(RC_OBJ):$(RC_SRC)
|
|
# $(RC_CC) -Jrc -I$(PWD_DIR) $(RC_SRC) -o $(RC_OBJ)
|
|
|
|
all:dirs $(OBJ)
|
|
$(RC_CC) -Jrc -I$(PWD_DIR) $(RC_SRC) -o $(RC_OBJ)
|
|
$(CC) $(OBJ) $(RC_OBJ) $(DEFFILE) -static -shared -o $(DLL_TARGET) $(LFLAG)
|
|
$(AR) rcs $(LIB_TARGET) $(OBJ) $(RC_OBJ)
|
|
dirs:
|
|
$(MD) $(OBJ_DIR)
|
|
$(MD) $(OUT_DIR)
|
|
|
|
clean:
|
|
$(RM) $(OBJ_DIR)
|
|
$(RM) $(OUT_DIR)
|
|
|
|
$(foreach c,$(SRC),$(eval $(call BUILD_OBJ,$(c))))
|
|
|
|
.PHONY: all clean dirs
|
|
#################################################################
|
|
## THE END OF PSQLODBC MINGW32 Makefile ##
|
|
#################################################################
|