This topic contains an actual sources file template. This template specifies the target component to be built and the list of sources files needed to build it. It also specifies optional compiler switches and libraries that are unique for the component being built. Follow the instructions in this topic to copy and edit this template so you can use it to run the Build utility.
Using this sources template
# # The developer defines the TARGETNAME variable. It is the name of # the target (component) that is being built by this makefile. # It should not include any path or filename extension. # TARGETNAME=xxxxx # # The developer defines the TARGETPATH and TARGETTYPE variables. # The first variable specifies where the target will be built. The second specifies # the type of target (either PROGRAM, DYNLINK, LIBRARY, UMAPPL_NOLIB or # BOOTPGM). Use UMAPPL_NOLIB when you are only building user-mode # programs and do not need to build a library. # TARGETPATH=obj # Select one of the following, and delete the others: TARGETTYPE=PROGRAM TARGETTYPE=DYNLINK TARGETTYPE=LIBRARY TARGETTYPE=UMAPPL_NOLIB TARGETTYPE=BOOTPGM TARGETTYPE=DRIVER TARGETTYPE=DRIVER_LIBRARY TARGETTYPE=EXPORT_DRIVER TARGETTYPE=GDI_DRIVER TARGETTYPE=MINIPORT TARGETTYPE=NOTARGET TARGETTYPE=PROGLIB# # If your TARGETTYPE is DRIVER, you can optionally specify DRIVERTYPE. # If you are building a WDM Driver, use DRIVERTYPE=WDM, if you are building # a VxD use DRIVERTYPE=VXD. Otherwise, delete the following two lines. # DRIVERTYPE=WDM DRIVERTYPE=VXD # # The TARGETLIBS macro specifies additional libraries to link against your target # image. Each library path specification should contain an asterisk (*) # where the machine-specific subdirectory name should go. # TARGETLIBS= # # The INCLUDES variable specifies any include paths that are specific to # this source directory. Separate multiple paths with single # semicolons. Relative path specifications are okay. # INCLUDES=..\inc # # The developer defines the SOURCES macro. It contains a list of all the # source files for this component. Specify each source file on a separate # line using the line-continuation character. This minimizes merge # conflicts if two developers are adding source files to the same component. # SOURCES=source1.c \ source2.c \ source3.c \ source4.c i386_SOURCES=i386\source1.asm IA64_SOURCES=ia64\source1.s # # Next, specify options for the compiler using C_DEFINES. # All parameters specified here will be passed to both the C # compiler and the resource compiler. C_DEFINES= # # Next, specify one or more user-mode test programs and their type. # Use UMTEST for optional test programs. Use UMAPPL for # programs that are always built when the directory is built. See also # UMTYPE, UMBASE, and UMLIBS. If you are building a driver, the next # 5 lines should be deleted. # UMTYPE=nt UMTEST=bunny*baz UMAPPL=bunny*baz UMBASE=0x1000000 UMLIBS=obj\*\bunny.lib # # Defining either (or both) the variables NTTARGETFILE0 and/or NTTARGETFILES # causes makefile.def to include .\makefile.inc immediately after it # specifies the top level targets (all, clean and loc) and their dependencies. # The makefile.def file expands NTTARGETFILE0 as the first dependent for the # "all" target and NTTARGETFILES as the last dependent for the "all" target. # This is useful for specifying additional targets and dependencies that do not fit the # general case covered by makefile.def. # # NTTARGETFILE0= # NTTARGETFILES=
The following environment variables and macros enable you to specify alternate object directories: BINPLACE_PLACEFILE, COFFBASE_TXT_FILE, COMPILER_WARNINGS, MASTER_VERSION_FILE, DDK_INC_PATH, DDK_LIB_PATH, WDM_INC_PATH, SDK_INC_PATH, SDK_LIB_PATH, CRT_INC_PATH, CRT_LIB_PATH, OAK_INC_PATH.