diff --git a/PC/make_nt.in b/PC/make_nt.in new file mode 100644 index 00000000000..7e836b6eb00 --- /dev/null +++ b/PC/make_nt.in @@ -0,0 +1,93 @@ + +!include # bring in platform specific stuff. + +#Fix a problem with ntwin32.mak and Visual C++ +# problem is .mak defines "link=link32" and "lib=lib32" +# Problem is MSVC linker/library manager use these environment +# variables as additional flags to link/lib +# Consequently, link warns "link32.obj not found" and similarly lib. +# This has really p___ed me of. It has been very hard to get right. +# The LIB variable is used by MSVC to locate system library files, and +# damn ntwin32.mak sets lib. Now although NMAKE is case sensitive, the OS' +# environment vars arent. Therefore /E option _must_ be specified for MSVC +# nmake itself is also very average :-( +# + +# Damn it. Even with .pyd in the suffixes, nmake wont infer a line +# mymodule.dll: +# and run up the .c->.obj, .obj->.pyd. And with all debug turned on, all +# it says is "dont know how to make .." Damn it (probably me, but I gave up:) +#.SUFFIXES : +#.SUFFIXES : .exe .dll .obj .asm .c .cpp .cxx .bas .cbl .for .pas .res .rc + +# Version information. +pyversion=140 +pypatchlevel=b1 + +pythondllext=pyd +linker=$(link) +libmgr=$(implib) +LINK= + +#cdebug = -Z7 -Od # Z7 for win32s debugging + +# +# Additional common definitions +# +cinclude=/I$(pythondir)\Include +python_dll=Py$(pyversion)-$(pypatchlevel).dll +python_defs_lib=$(pythondir)\Modules\Python.lib +python_defs_exp=$(pythondir)\Modules\Python.exp +pythonopts=/DHAVE_CONFIG_H /nologo /MD /G3 + +#!IFDEF MSVC +# Although this is handled, it generates warning. This is to avoid them +#cc=cl +#linker=link +#libmgr=lib +#!ENDIF + +!IFNDEF NODEBUG +ldebug = -debug:full -debugtype:both +!ENDIF + +!ifndef BUILD_DL +cdl=/DUSE_DL_EXPORT /DWIN32_PATCH_LEVEL=\"$(pyversion)-$(pypatchlevel)\" + +.c.obj: + @$(cc) $(cflags) $(ccustom) $(cdebug) $(cinclude) $(pythonopts) $(cdl) $*.c +!else +# +# Useful stuff for building DL modules under NT. +# + +cdl=/DUSE_DL_IMPORT + +#if you have a .DEF file, define HAVE_DEF +# if you dont want precompiled headers, define PCH=0 (in your makefile, not here!) +!ifndef PCH +PCH=1 +!endif +!if "$(PCH)"=="1" +cpch=/YX +!else +cpch= +!endif + +!ifdef HAVE_DEF +export_statements=/DEF:$*.def +!else +export_statements=/EXPORT:init$(*:module=) +!endif +# Note for 'C', I use /Tp, to force as CPP - this will allow .C to define types. +.c.obj: + @echo Warning - compiling as C++ file + @$(cc) $(cdl) $(cflags) $(ccustom) $(cdebug) $(cinclude) $(cpch) $(pythonopts) /DUSE_DL_IMPORT /Tp $*.c + +.cpp.obj: + @$(cc) $(cdl) $(cflags) $(ccustom) $(cdebug) $(cinclude) $(cpch) $(pythonopts) /DUSE_DL_IMPORT $*.cpp + +.obj.$(pythondllext): + @link -dll -out:$*.$(pythondllext) $*.obj $(ldebug) $(export_statements) $(guilibsdll) $(lcustom) $(python_defs_lib) + +!endif # !BUILD_DL