summaryrefslogtreecommitdiffstats
path: root/PC/make_nt.in
blob: 7e836b6eb00d1e03c2e5ffe9c17d47021901036d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93

!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