mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
353 lines
6.7 KiB
353 lines
6.7 KiB
# 16-bit makefile
|
|
#
|
|
# Copyright (c) 1991, Microsoft Corporation
|
|
#
|
|
# History:
|
|
#
|
|
# 18-Feb-1994 KevinRo
|
|
# 24-Feb-1994 DrewB, added OBJDIR and some other niceties from win40.mk
|
|
#
|
|
|
|
.SUFFIXES:
|
|
.SUFFIXES: .c .cxx .cpp .asm .h .inc .obj .lst
|
|
.SUFFIXES: .sys .exe .com .map .sym .def .lib .rc .res
|
|
|
|
!include $(NTMAKEENV)\makefile.plt
|
|
|
|
!if "$(TARGET)" == ""
|
|
!error TARGET must be defined
|
|
!endif
|
|
|
|
|
|
!if "$(OPST)" == ""
|
|
!error OPSTR must be defined [chic|dayt]
|
|
!endif
|
|
|
|
OUTNUL= 1>nul 2>nul
|
|
|
|
# !if "$(NTDEBUG)" != "" && "$(NTDEBUG)" != "retail" && "$(NTDEBUG)" != "ntsdnodbg"
|
|
# OBJDIR = objd$(OPST)
|
|
# !else
|
|
# OBJDIR = objr$(OPST)
|
|
# !endif
|
|
OBJDIR=$(_OBJ_DIR)\$(TARGET_DIRECTORY)
|
|
|
|
# Build up lists of files to produce from sources
|
|
|
|
!if "$(CFILES)" != ""
|
|
OBJFILES = $(OBJFILES) $(CFILES:.c=.obj)
|
|
!endif
|
|
!if "$(CXXFILES)" != ""
|
|
OBJFILES = $(OBJFILES) $(CXXFILES:.cxx=.obj)
|
|
!endif
|
|
!if "$(CPPFILES)" != ""
|
|
OBJFILES = $(OBJFILES) $(CPPFILES:.cpp=.obj)
|
|
!endif
|
|
|
|
!if "$(ASMFILES)" != ""
|
|
OBJFILES = $(OBJFILES) $(ASMFILES:.asm=.obj)
|
|
!endif
|
|
|
|
!if "$(RCFILES)" != ""
|
|
RESFILES = $(RCFILES:.rc=.res)
|
|
!endif
|
|
|
|
# Replace .\ with $(OBJDIR)
|
|
# Unfortunately we can't do this directly so we have to explicitly check
|
|
# the value of OBJDIR
|
|
#
|
|
# JohnDoty:
|
|
# The build will break with $(O) has a new range of supported types.
|
|
# This sucks. However, I don't think I can do this correctly.
|
|
#
|
|
!if "$(OBJDIR)" == "obj\i386"
|
|
OBJFILES = $(OBJFILES:.\=obj\i386\)
|
|
RESFILES = $(RESFILES:.\=obj\i386\)
|
|
|
|
!else
|
|
!error Unknown OBJDIR: $(OBJDIR)
|
|
!endif
|
|
|
|
# Default target
|
|
|
|
all: $(OBJDIR)\$(TARGET)
|
|
|
|
# Determine target type and base name
|
|
|
|
# Is it a DLL?
|
|
TARGETBASE=$(TARGET:.dll=)
|
|
!if "$(TARGETBASE)" != "$(TARGET)"
|
|
TARGETTYPE=dll
|
|
!else
|
|
|
|
# Is it an EXE?
|
|
TARGETBASE=$(TARGET:.exe=)
|
|
! if "$(TARGETBASE)" != "$(TARGET)"
|
|
TARGETTYPE=exe
|
|
! else
|
|
|
|
# Is it a LIB?
|
|
TARGETBASE=$(TARGET:.lib=)
|
|
! if "$(TARGETBASE)" != "$(TARGET)"
|
|
TARGETTYPE=lib
|
|
! endif
|
|
! endif
|
|
!endif
|
|
|
|
!if "$(TARGETTYPE)" == ""
|
|
!error Unknown target type for "$(TARGET)"
|
|
!endif
|
|
|
|
!if "$(BUILDDETAILS)" != ""
|
|
BLDKEEP= KEEP
|
|
!endif
|
|
BLDKEEP= KEEP
|
|
|
|
!ifndef OLEDIR
|
|
OLEDIR=..\..\..
|
|
!endif
|
|
OLETHUNK= $(OLEDIR)\olethunk
|
|
OLE16= $(OLETHUNK)\ole16
|
|
|
|
!if "$(OPST)" == "chic"
|
|
RCINC = $(RCINC) -i..\inc\chicago -i..\inc
|
|
!else
|
|
RCINC = $(RCINC) -i$(OLE16)\inc
|
|
!endif
|
|
INCS = -I$(OLE16)\inc -I$(OLETHUNK)\h -I$(SDK_INC_PATH)
|
|
|
|
PATH = $(OLE16)\tools;$(PATH)
|
|
LINK = link16
|
|
#
|
|
# We need to mark our Windows 95 components as version 4.0.
|
|
#
|
|
!if "$(OPST)" == "chic"
|
|
RCT = rc_chic -40
|
|
!else
|
|
RCT = rc16
|
|
!endif
|
|
RC = rc16
|
|
CL = cl16
|
|
IMPLIB = implib
|
|
LIBUTIL = lib16
|
|
MAPSYM = mapsym
|
|
MASM = masm
|
|
|
|
DEFINES = $(DEFINES) -DWOW
|
|
|
|
AOBJ = -Mx -t $(DEFINES) $(INCS)
|
|
|
|
!if "$(TARGETTYPE)" == "exe"
|
|
CW16 = -GA
|
|
!else
|
|
CW16 = -GD
|
|
DEFINES = $(DEFINES) -D_WINDLL
|
|
!endif
|
|
|
|
CW16 = $(CW16) -G2 -Alfw $(DEFINES) $(INCS) /NMSEG_CODE
|
|
|
|
LFLAGS = $(LFLAGS) /nod /noe /map:0 /align:16
|
|
|
|
!if "$(NTDEBUG)" != "" && "$(NTDEBUG)" != "retail" && "$(NTDEBUG)" != "ntsdnodbg"
|
|
|
|
DEFINES = $(DEFINES) -DDBG=1 -DDEVL=1
|
|
|
|
!if ("$(NTDEBUGTYPE)" == "windbg") || ("$(NTDEBUGTYPE)" == "both")
|
|
AOBJ = $(AOBJ) -Zi
|
|
CW16 = $(CW16) /Odi /Zip -DDBG=1 -DDEVL=1
|
|
LFLAGS = $(LFLAGS) /CO
|
|
!else
|
|
AOBJ = $(AOBJ) -Zd
|
|
CW16 = $(CW16) /Odi /Zd
|
|
LFLAGS = $(LFLAGS) /LI
|
|
!endif
|
|
|
|
!else
|
|
CW16 = $(CW16) /Os /Zp /Gs -DDBG=0 -DDEVL=1
|
|
DEFINES = $(DEFINES) -DDBG=0 -DDEVL=1
|
|
!endif
|
|
|
|
!if "$(TARGETTYPE)" == "dll"
|
|
W16LIBS = $(OLE16)\lib\ldllcew.lib
|
|
!else
|
|
!if "$(QUICKWINDOWS)" != ""
|
|
W16LIBS = $(OLE16)\lib\llibcewq.lib
|
|
!else
|
|
W16LIBS = $(OLE16)\lib\llibcew.lib
|
|
!endif
|
|
!endif
|
|
|
|
W16LIBS = $(W16LIBS) $(OLE16)\lib\libw.lib
|
|
|
|
!if "$(TARGETTYPE)" == "dll" || "$(TARGETTYPE)" == "exe"
|
|
LIBS = $(LIBS) $(W16LIBS)
|
|
!endif
|
|
|
|
.asm{$(OBJDIR)}.obj:
|
|
@-md $(OBJDIR) $(OUTNUL)
|
|
$(MASM) $(AOBJ) $*,$*;
|
|
|
|
.asm.lst:
|
|
@-md $(OBJDIR) $(OUTNUL)
|
|
$(MASM) $(AOBJ) -l $*,nul,$*.lst;
|
|
|
|
|
|
.c{$(OBJDIR)}.obj:
|
|
@-md $(OBJDIR) $(OUTNUL)
|
|
$(CL) -c -nologo @<<$*.rsp
|
|
$(CW16: =
|
|
)
|
|
-Fo$*.obj
|
|
$<
|
|
<<$(BLDKEEP)
|
|
|
|
.c.lst:
|
|
@-md $(OBJDIR) $(OUTNUL)
|
|
$(CL) -c -nologo @<<$(OBJDIR)\$*.rsp
|
|
$(CW16: =
|
|
)
|
|
-Fonul
|
|
-Fc$*.lst
|
|
$<
|
|
<<$(BLDKEEP)
|
|
|
|
.cxx{$(OBJDIR)}.obj:
|
|
@-md $(OBJDIR) $(OUTNUL)
|
|
$(CL) -c -nologo @<<$*.rsp
|
|
$(CW16: =
|
|
)
|
|
-Fo$*.obj
|
|
-Tp$<
|
|
<<$(BLDKEEP)
|
|
|
|
.cxx.lst:
|
|
@-md $(OBJDIR) $(OUTNUL)
|
|
$(CL) -c -nologo @<<$(OBJDIR)\$*.rsp
|
|
$(CW16: =
|
|
)
|
|
-Fc$*.lst
|
|
-Fonul
|
|
-Tp$<
|
|
<<$(BLDKEEP)
|
|
|
|
.cxx.pp:
|
|
@-md $(OBJDIR) $(OUTNUL)
|
|
$(CL) -c -nologo @<<$(OBJDIR)\$*.rsp > $*.pp
|
|
$(CW16: =
|
|
)
|
|
-E
|
|
-Fonul
|
|
-Tp$<
|
|
<<$(BLDKEEP)
|
|
|
|
|
|
.cpp{$(OBJDIR)}.obj:
|
|
@-md $(OBJDIR) $(OUTNUL)
|
|
$(CL) -c -nologo @<<$*.rsp
|
|
$(CW16: =
|
|
)
|
|
-Fo$*.obj
|
|
-Tp$<
|
|
<<$(BLDKEEP)
|
|
|
|
.cpp.lst:
|
|
@-md $(OBJDIR) $(OUTNUL)
|
|
$(CL) -c -nologo @<<$(OBJDIR)\$*.rsp
|
|
$(CW16: =
|
|
)
|
|
-Fc$*.lst
|
|
-Fonul
|
|
-Tp$<
|
|
<<$(BLDKEEP)
|
|
|
|
.cpp.pp:
|
|
@-md $(OBJDIR) $(OUTNUL)
|
|
$(CL) -c -nologo @<<$(OBJDIR)\$*.rsp > $*.pp
|
|
$(CW16: =
|
|
)
|
|
-E
|
|
-Fonul
|
|
-Tp$<
|
|
<<$(BLDKEEP)
|
|
|
|
|
|
.def{$(OBJDIR)}.lib:
|
|
@-md $(OBJDIR) $(OUTNUL)
|
|
$(IMPLIB) $*.lib $<
|
|
|
|
{$(OBJDIR)}.map{$(OBJDIR)}.sym:
|
|
@-md $(OBJDIR) $(OUTNUL)
|
|
$(MAPSYM) $<
|
|
|
|
.rc{$(OBJDIR)}.res:
|
|
@-md $(OBJDIR) $(OUTNUL)
|
|
$(RC) -r $(RCINC) -fo $*.res $<
|
|
|
|
|
|
cleanup:
|
|
if exist $(OBJDIR)\*.lrf del $(OBJDIR)\*.lrf
|
|
if exist $(OBJDIR)\*.obj del $(OBJDIR)\*.obj
|
|
if exist $(OBJDIR)\*.exe del $(OBJDIR)\*.exe
|
|
if exist $(OBJDIR)\*.map del $(OBJDIR)\*.map
|
|
if exist $(OBJDIR)\*.sym del $(OBJDIR)\*.sym
|
|
if exist $(OBJDIR)\*.res del $(OBJDIR)\*.res
|
|
|
|
clean: cleanup
|
|
|
|
!if "$(TARGETTYPE)" == "dll"
|
|
|
|
$(OBJDIR)\$(TARGETBASE).lib: $(TARGETBASE).def
|
|
|
|
$(OBJDIR)\$(TARGET) $(OBJDIR)\$(TARGETBASE).map: $(OBJFILES) $(RESFILES) \
|
|
$(TARGETBASE).def $(OBJDIR)\$(TARGETBASE).lib $(LIBS)
|
|
@-md $(OBJDIR) $(OUTNUL)
|
|
$(LINK) $(LFLAGS) @<<$(OBJDIR)\$(TARGETBASE).rsp
|
|
$(OBJFILES: =+^
|
|
)
|
|
$(OBJDIR)\$(TARGET)
|
|
$(OBJDIR)\$(TARGETBASE).map
|
|
$(LIBS: =+^
|
|
)
|
|
$(TARGETBASE).def
|
|
<<$(BLDKEEP)
|
|
$(MAPSYM) -o $(OBJDIR)\$(TARGETBASE).sym $(OBJDIR)\$(TARGETBASE).map
|
|
!if "$(RCFILES)" != ""
|
|
$(RCT) -t $(OBJDIR)\$(TARGETBASE).res $(OBJDIR)\$(TARGET)
|
|
!endif
|
|
|
|
!elseif "$(TARGETTYPE)" == "lib"
|
|
|
|
$(OBJDIR)\$(TARGET): $(OBJFILES) $(LIBS)
|
|
@-md $(OBJDIR) $(OUTNUL)
|
|
-del $@ $(OUTNUL)
|
|
$(LIBUTIL) @<<$*.lnb
|
|
$(OBJDIR)\$(TARGET)
|
|
y
|
|
$(OBJFILES: = &^
|
|
)&
|
|
$(LIBS: = &^
|
|
)&
|
|
|
|
$*.lls
|
|
<<$(BLDKEEP)
|
|
|
|
!elseif "$(TARGETTYPE)" == "exe"
|
|
|
|
$(OBJDIR)\$(TARGET) $(OBJDIR)\$(TARGETBASE).map: $(OBJFILES) $(RESFILES) \
|
|
$(TARGETBASE).def $(LIBS)
|
|
@-md $(OBJDIR) $(OUTNUL)
|
|
$(LINK) $(LFLAGS) @<<$(OBJDIR)\$(TARGETBASE).rsp
|
|
$(OBJFILES: =+^
|
|
)
|
|
$(OBJDIR)\$(TARGET)
|
|
$(OBJDIR)\$(TARGETBASE).map
|
|
$(LIBS: =+^
|
|
)
|
|
$(TARGETBASE).def
|
|
<<$(BLDKEEP)
|
|
!if "$(RCFILES)" != ""
|
|
$(RCT) -t $(OBJDIR)\$(TARGETBASE).res $(OBJDIR)\$(TARGET)
|
|
!endif
|
|
$(MAPSYM) -o $(OBJDIR)\$(TARGETBASE).sym $(OBJDIR)\$(TARGETBASE).map
|
|
|
|
!endif
|