!include <ntwin32.mak> # 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