From 74ae0f28073405a10a22089caf91c9706f4533f3 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Mon, 2 Jun 2014 13:33:46 +0300 Subject: [PATCH] Clean up Windows makefiles Get rid of the CPU and CPUTYPE variables in win64.mak. Instead, assume that the TARGET_CPU variable has been set correctly in the environment. TARGET_CPU is set by "setenv" script that comes with the Microsoft Visual Studio C compiler package. It never worked to pass a "CPU=x86" and using a x64 compiler, for example, so seems better to determine the correct target from the environment, than fail with a cryptic error message if the CPU argument and the environment don't match. To build 32-bit binaries with win64.mak, simply do "setenv /x86" before running "nmake -f win64.mak". Similarly, to build 64-bit binaries, use "setenv /x64". It should now be possible to build both 32-bit and 64-bit binaries with win64.mak. Ideally, we could now remove win32.mak altogether, but there are small differences between win64.mak and win32.mak in the build options that they use. I don't understand the differences enough to dare to remove win32.mak yet. The CPU=AMD64 alias for x64 is no longer supported (as the whole parameter is now gone). Also do whitespace & other cosmetic fixes to win32.mak and win64, to make them more similar. This helps when comparing the two with "diff". Remove remains of the long-gone "MULTIBYTE" setting (it was misspelled in win64.mak, anyway) --- win32.mak | 20 +++++++------ win64.mak | 85 ++++++++++++++++++++++++------------------------------- 2 files changed, 48 insertions(+), 57 deletions(-) diff --git a/win32.mak b/win32.mak index d6a4ce4..0b1a2d3 100644 --- a/win32.mak +++ b/win32.mak @@ -92,6 +92,7 @@ DTCLIB = pgenlista DTCLIB = pgenlist !ENDIF DTCDLL = $(DTCLIB).dll + !IF "$(_NMAKE_VER)" == "6.00.9782.0" MSVC_VERSION=vc60 VC07_DELAY_LOAD= @@ -107,9 +108,9 @@ ADD_DEFINES=$(ADD_DEFINES) /D RESET_CRYPTO_CALLBACKS !ENDIF !ENDIF !IF "$(USE_SSPI)" == "yes" -VC07_DELAY_LOAD=$(VC07_DELAY_LOAD) /Delayload:secur32.dll /Delayload:crypt32.dll +VC07_DELAY_LOAD=$(VC07_DELAY_LOAD) /DelayLoad:secur32.dll /Delayload:crypt32.dll !ENDIF -VC07_DELAY_LOAD=$(VC07_DELAY_LOAD) /delayLoad:$(DTCDLL) /DELAY:UNLOAD +VC07_DELAY_LOAD=$(VC07_DELAY_LOAD) /DelayLoad:$(DTCDLL) /DELAY:UNLOAD VC_FLAGS=/EHsc !ENDIF ADD_DEFINES = $(ADD_DEFINES) /D "DYNAMIC_LOAD" @@ -134,10 +135,10 @@ ADD_DEFINES = $(ADD_DEFINES) /D _WIN64 !ENDIF !IF "$(PG_INC)" != "" -INC_OPT=$(INC_OPT) /I "$(PG_INC)" +INC_OPT = $(INC_OPT) /I "$(PG_INC)" !ENDIF !IF "$(SSL_INC)" != "" -INC_OPT=$(INC_OPT) /I "$(SSL_INC)" +INC_OPT = $(INC_OPT) /I "$(SSL_INC)" !ENDIF !IF "$(OS)" == "Windows_NT" @@ -214,7 +215,7 @@ CLEAN : !ENDIF !IF "$(MSDTC)" != "no" -"$(OUTDIR)\$(MAINDLL)" : "$(OUTDIR)\$(DTCLIB).lib" +"$(OUTDIR)\$(MAINDLL)": "$(OUTDIR)\$(DTCLIB).lib" !ENDIF $(INTDIR)\connection.obj $(INTDIR)\psqlodbc.res: version.h @@ -227,6 +228,7 @@ CPP_PROJ=/$(LINKMT)d /Gm /ZI /Od /RTC1 /D "_DEBUG" !ENDIF CPP_PROJ=$(CPP_PROJ) $(CUSTOMCLOPT) $(VC_FLAGS) $(INC_OPT) /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_CRT_SECURE_NO_DEPRECATE" /D "PSQLODBC_EXPORTS" /D "WIN_MULTITHREAD_SUPPORT" $(ADD_DEFINES) /Fp"$(INTDIR)\psqlodbc.pch" /Fo"$(INTDIR)"\ /Fd"$(INTDIR)"\ /FD !MESSAGE CPP_PROJ=$(CPP_PROJ) + .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) /c $< @@ -261,7 +263,7 @@ MTL=midl.exe RSC=rc.exe BSC32=bscmake.exe MTL_PROJ=/nologo /mktyplib203 /win32 -RSC_PROJ=/l 0x809 /d "MULTIBYTE" +RSC_PROJ=/l 0x809 /fo"$(INTDIR)\psqlodbc.res" BSC32_FLAGS=/nologo /o"$(OUTDIR)\psqlodbc.bsc" !IF "$(CFG)" == "Release" MTL_PROJ=$(MTL_PROC) /D "NDEBUG" @@ -345,7 +347,7 @@ LINK32_OBJS= \ "$(INTDIR)\psqlodbc.res" DTCDEF_FILE= "$(DTCLIB).def" -LIB_DTCLIBFLAGS=/nologo /machine:I386 /def:$(DTCDEF_FILE) +LIB32_DTCLIBFLAGS=/nologo /machine:I386 /def:$(DTCDEF_FILE) LINK32_DTCFLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib wsock32.lib XOleHlp.lib $(OUTDIR)\$(MAINLIB).lib Delayimp.lib /DelayLoad:XOLEHLP.DLL /nologo /dll /incremental:no /machine:I386 LINK32_DTCOBJS= \ @@ -363,7 +365,7 @@ LINK32_XAOBJS= \ "$(OUTDIR)\$(DTCLIB).lib" : $(DTCDEF_FILE) $(LINK32_DTCOBJS) $(LIB32) @<< - $(LIB_DTCLIBFLAGS) $(LINK32_DTCOBJS) /out:$@ + $(LIB32_DTCLIBFLAGS) $(LINK32_DTCOBJS) /out:$@ << "$(OUTDIR)\$(DTCDLL)" : $(DTCDEF_FILE) $(LINK32_DTCOBJS) @@ -380,4 +382,4 @@ LINK32_XAOBJS= \ SOURCE=psqlodbc.rc "$(INTDIR)\psqlodbc.res" : $(SOURCE) - $(RSC) $(RSC_PROJ) /fo$@ $(RSC_DEFINES) $(SOURCE) + $(RSC) $(RSC_PROJ) $(RSC_DEFINES) $(SOURCE) diff --git a/win64.mak b/win64.mak index aa3e8fa..143916d 100755 --- a/win64.mak +++ b/win64.mak @@ -11,16 +11,10 @@ # Comments: Created by Hiroshi Inoue, 2006-10-31 # -!IF "$(CPU)" == "" -!MESSAGE Making 64bit DLL... -!MESSAGE You should set the CPU environemt variable -!MESSAGE to distinguish your OS -!ENDIF - !IF "$(ANSI_VERSION)" == "yes" -!MESSAGE Building the PostgreSQL ANSI 3.0 Driver for $(CPU)... +!MESSAGE Building the PostgreSQL ANSI 3.0 Driver for $(TARGET_CPU)... !ELSE -!MESSAGE Building the PostgreSQL Unicode 3.5 Driver for $(CPU)... +!MESSAGE Building the PostgreSQL Unicode 3.5 Driver for $(TARGET_CPU)... !ENDIF !MESSAGE !IF "$(CFG)" == "" @@ -38,8 +32,8 @@ CFG=Release !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE -!MESSAGE "Release" ($(CPU) Release DLL) -!MESSAGE "Debug" ($(CPU) Debug DLL) +!MESSAGE "Release" ($(TARGET_CPU) Release DLL) +!MESSAGE "Debug" ($(TARGET_CPU) Debug DLL) !MESSAGE !ERROR An invalid configuration was specified. !ENDIF @@ -61,7 +55,9 @@ CUSTOMCLOPT=/nologo /MD /W3 /wd4018 /EHsc # CUSTOMLINKLIBS= +!IF "$(TARGET_CPU)" == "x64" ADD_DEFINES=/D _WIN64 +!ENDIF # # Include libraries as well as import libraries # may be different from those of 32bit ones. @@ -74,7 +70,7 @@ PG_INC=$(PROGRAMFILES)\PostgreSQL\9.3\include !ENDIF !IFNDEF PG_LIB -PG_LIB=C:\develop\lib\$(CPU) +PG_LIB=C:\develop\lib\$(TARGET_CPU) !MESSAGE Using default PostgreSQL Library directory: $(PG_LIB) !ENDIF @@ -125,7 +121,7 @@ VC07_DELAY_LOAD=$(VC07_DELAY_LOAD) /DelayLoad:secur32.dll /Delayload:crypt32.dll !IF "$(USE_GSS)" == "yes" VC07_DELAY_LOAD=$(VC07_DELAY_LOAD) /Delayload:gssapi64.dll !ENDIF -VC07_DELAY_LOAD="$(VC07_DELAY_LOAD) /DelayLoad:$(DTCDLL) /DELAY:UNLOAD" +VC07_DELAY_LOAD=$(VC07_DELAY_LOAD) /DelayLoad:$(DTCDLL) /DELAY:UNLOAD !ENDIF ADD_DEFINES = $(ADD_DEFINES) /D "DYNAMIC_LOAD" @@ -135,15 +131,10 @@ ADD_DEFINES = $(ADD_DEFINES) /D "_HANDLE_ENLIST_IN_DTC_" !IF "$(MEMORY_DEBUG)" == "yes" ADD_DEFINES = $(ADD_DEFINES) /D "_MEMORY_DEBUG_" /GS !ENDIF -!IF "$(CPU)" == "AMD64" -CPUTYPE = x64 -!ELSE -CPUTYPE = $(CPU) -!ENDIF !IF "$(ANSI_VERSION)" == "yes" -ADD_DEFINES = $(ADD_DEFINES) /D "DBMS_NAME=\"PostgreSQL ANSI($(CPUTYPE))\"" /D "ODBCVER=0x0300" +ADD_DEFINES = $(ADD_DEFINES) /D "DBMS_NAME=\"PostgreSQL ANSI($(TARGET_CPU))\"" /D "ODBCVER=0x0300" !ELSE -ADD_DEFINES = $(ADD_DEFINES) /D "DBMS_NAME=\"PostgreSQL Unicode($(CPUTYPE))\"" /D "ODBCVER=0x0351" /D "UNICODE_SUPPORT" +ADD_DEFINES = $(ADD_DEFINES) /D "DBMS_NAME=\"PostgreSQL Unicode($(TARGET_CPU))\"" /D "ODBCVER=0x0351" /D "UNICODE_SUPPORT" RSC_DEFINES = $(RSC_DEFINES) /D "UNICODE_SUPPORT" !ENDIF @@ -181,23 +172,23 @@ XADLL = $(XALIB).dll !IF "$(CFG)" == "Release" !IF "$(ANSI_VERSION)" == "yes" -OUTDIR=.\$(CPU)ANSI -OUTDIRBIN=.\$(CPU)ANSI -INTDIR=.\$(CPU)ANSI +OUTDIR=.\$(TARGET_CPU)ANSI +OUTDIRBIN=.\$(TARGET_CPU)ANSI +INTDIR=.\$(TARGET_CPU)ANSI !ELSE -OUTDIR=.\$(CPU) -OUTDIRBIN=.\$(CPU) -INTDIR=.\$(CPU) +OUTDIR=.\$(TARGET_CPU) +OUTDIRBIN=.\$(TARGET_CPU) +INTDIR=.\$(TARGET_CPU) !ENDIF !ELSEIF "$(CFG)" == "Debug" !IF "$(ANSI_VERSION)" == "yes" -OUTDIR=.\$(CPU)ANSIDebug -OUTDIRBIN=.\$(CPU)ANSIDebug -INTDIR=.\$(CPU)ANSIDebug +OUTDIR=.\$(TARGET_CPU)ANSIDebug +OUTDIRBIN=.\$(TARGET_CPU)ANSIDebug +INTDIR=.\$(TARGET_CPU)ANSIDebug !ELSE -OUTDIR=.\$(CPU)Debug -OUTDIRBIN=.\$(CPU)Debug -INTDIR=.\$(CPU)Debug +OUTDIR=.\$(TARGET_CPU)Debug +OUTDIRBIN=.\$(TARGET_CPU)Debug +INTDIR=.\$(TARGET_CPU)Debug !ENDIF !ENDIF @@ -205,7 +196,6 @@ ALLDLL = "$(INTDIR)" !IF "$(OUTDIR)" != "$(INTDIR)" ALLDLL = $(ALLDLL) "$(INTDIR)" !ENDIF - ALLDLL = $(ALLDLL) "$(OUTDIR)\$(MAINDLL)" !IF "$(MSDTC)" != "no" @@ -226,18 +216,17 @@ CLEAN : -@erase "$(OUTDIR)\$(XADLL)" !ENDIF -!IF "$(MSDTC)" != "no" -"$(OUTDIR)\$(MAINDLL)": "$(OUTDIR)\$(DTCLIB).lib" -!ENDIF - "$(INTDIR)" : if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)" - !IF "$(OUTDIR)" != "$(INTDIR)" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" !ENDIF +!IF "$(MSDTC)" != "no" +"$(OUTDIR)\$(MAINDLL)": "$(OUTDIR)\$(DTCLIB).lib" +!ENDIF + CPP=cl.exe CPP_PROJ=$(CUSTOMCLOPT) $(INC_OPT) /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_CRT_SECURE_NO_DEPRECATE" /D "PSQLODBC_EXPORTS" /D "WIN_MULTITHREAD_SUPPORT" $(ADD_DEFINES) /Fp"$(INTDIR)\psqlodbc.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD !IF "$(CFG)" == "Release" @@ -280,7 +269,7 @@ MTL=midl.exe RSC=rc.exe BSC32=bscmake.exe MTL_PROJ=/nologo /mktyplib203 /win32 -RSC_PROJ=/l 0x809 /fo"$(INTDIR)\psqlodbc.res" /d "MULTIBUTE" +RSC_PROJ=/l 0x809 /fo"$(INTDIR)\psqlodbc.res" BSC32_FLAGS=/nologo /o"$(OUTDIR)\psqlodbc.bsc" !IF "$(CFG)" == "Release" MTL_PROJ=$(MTL_PROJ) /D "NDEBUG" @@ -293,7 +282,7 @@ BSC32_SBRS= \ LINK32=link.exe LIB32=lib.exe -LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib advapi32.lib odbc32.lib odbccp32.lib wsock32.lib ws2_32.lib XOleHlp.lib winmm.lib "$(OUTDIR)\$(DTCLIB).lib" msvcrt.lib $(CUSTOMLINKLIBS) /nologo /dll /machine:$(CPU) /def:"$(DEF_FILE)" +LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib advapi32.lib odbc32.lib odbccp32.lib wsock32.lib ws2_32.lib XOleHlp.lib winmm.lib "$(OUTDIR)\$(DTCLIB).lib" msvcrt.lib $(CUSTOMLINKLIBS) /nologo /dll /def:"$(DEF_FILE)" !IF "$(ANSI_VERSION)" == "yes" DEF_FILE= "psqlodbca.def" !ELSE @@ -304,7 +293,7 @@ LINK32_FLAGS=$(LINK32_FLAGS) /incremental:no !ELSE LINK32_FLAGS=$(LINK32_FLAGS) /incremental:yes /debug /pdbtype:sept !ENDIF -LINK32_FLAGS=$(LINK32_FLAGS) "$(VC07_DELAY_LOAD)" +LINK32_FLAGS=$(LINK32_FLAGS) $(VC07_DELAY_LOAD) !IF "$(PG_LIB)" != "" LINK32_FLAGS=$(LINK32_FLAGS) /libpath:"$(PG_LIB)" !ENDIF @@ -367,14 +356,14 @@ LINK32_OBJS= \ "$(INTDIR)\psqlodbc.res" DTCDEF_FILE= "$(DTCLIB).def" -LIB32_DTCLIBFLAGS=/nologo /machine:$(CPU) /def:"$(DTCDEF_FILE)" +LIB32_DTCLIBFLAGS=/nologo /def:"$(DTCDEF_FILE)" -LINK32_DTCFLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib wsock32.lib XOleHlp.lib $(OUTDIR)\$(MAINLIB).lib $(CUSTOMLINKLIBS) Delayimp.lib /DelayLoad:XOLEHLP.DLL /nologo /dll /incremental:no /machine:$(CPU) +LINK32_DTCFLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib wsock32.lib XOleHlp.lib $(OUTDIR)\$(MAINLIB).lib $(CUSTOMLINKLIBS) Delayimp.lib /DelayLoad:XOLEHLP.DLL /nologo /dll /incremental:no LINK32_DTCOBJS= \ - "$(INTDIR)\msdtc_enlist.obj" "$(INTDIR)\xalibname.obj" + "$(INTDIR)\msdtc_enlist.obj" "$(INTDIR)\xalibname.obj" XADEF_FILE= "$(XALIB).def" -LINK32_XAFLAGS=/nodefaultlib:libcmt.lib kernel32.lib user32.lib gdi32.lib advapi32.lib odbc32.lib odbccp32.lib wsock32.lib XOleHlp.lib winmm.lib msvcrt.lib $(CUSTOMLINKLIBS) /nologo /dll /incremental:no /machine:$(CPU) /def:"$(XADEF_FILE)" +LINK32_XAFLAGS=/nodefaultlib:libcmt.lib kernel32.lib user32.lib gdi32.lib advapi32.lib odbc32.lib odbccp32.lib wsock32.lib XOleHlp.lib winmm.lib msvcrt.lib $(CUSTOMLINKLIBS) /nologo /dll /incremental:no /def:"$(XADEF_FILE)" LINK32_XAOBJS= \ "$(INTDIR)\pgxalib.obj" @@ -383,12 +372,12 @@ LINK32_XAOBJS= \ $(LINK32_FLAGS) $(LINK32_OBJS) /pdb:$*.pdb /implib:$*.lib /out:$@ << -"$(OUTDIR)\$(DTCLIB).lib" : $(DEF_FILE) $(LINK32_DTCOBJS) +"$(OUTDIR)\$(DTCLIB).lib" : $(DTCDEF_FILE) $(LINK32_DTCOBJS) $(LIB32) @<< $(LIB32_DTCLIBFLAGS) $(LINK32_DTCOBJS) /out:$@ << -"$(OUTDIR)\$(DTCDLL)" : $(LINK32_DTCOBJS) +"$(OUTDIR)\$(DTCDLL)" : $(DTCDEF_FILE) $(LINK32_DTCOBJS) $(LINK32) @<< $(LINK32_DTCFLAGS) $(LINK32_DTCOBJS) $*.exp /pdb:$*.pdb /out:$@ << @@ -401,5 +390,5 @@ LINK32_XAOBJS= \ SOURCE=psqlodbc.rc -"$(INTDIR)\psqlodbc.res" : $(SOURCE) "$(INTDIR)" - $(RSC) $(RSC_PROJ) $(RSC_DEFINES) $(SOURCE) +"$(INTDIR)\psqlodbc.res" : $(SOURCE) + $(RSC) $(RSC_PROJ) $(RSC_DEFINES) $(SOURCE) -- 2.39.5