| |
| !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 |