📄 activex.mak
字号:
# resource compiler flags
rccommon = -l409 -r -DWIN32 -D_WIN32 $(noansi)
!IF "$(WIN_VER)" == "5.0"
rccommon = $(rccommon) -DWINVER=0x0500
!else
rccommon = $(rccommon) -DWINVER=0x0400
!ENDIF
!ifdef NODEBUG
rcdebug = -DDBG=0
!else
rcdebug = -DDBG=1 -DDEBUG -D_DEBUG
!endif
rcflags = $(rccommon) $(rcdebug) $(RC_DEFINES)
#----------------------------------------------------------------------------
# library flags
# common stuff
libcommon = /NODEFAULTLIB /machine:$(CPU)
# debug type = coff|cv|both
!ifdef USE_LEGO
libdebug = -debugtype:cv,fixup
!else
!ifdef NODEBUG
!ifdef SYMBOLS
libdebug = -debugtype:coff
!endif
!else
libdebug = -debugtype:cv
!endif
!endif
# subsystem, def file, etc. switched
# in according to TARGET_TYPE and EXE_TYPE
!if "$(TARGET_TYPE)" == "DYNLINK"
liblink = /subsystem:windows,$(WIN_VER)
!if "$(DEF_FILE)" != ""
liblink = $(liblink) /def:$(DEF_FILE)
!endif
!else
!if "$(TARGET_TYPE)" == "PROGRAM"
!if "$(EXE_TYPE)" == "console"
liblink = /subsystem:console,$(WIN_VER)
!else
!if "$(EXE_TYPE)" == "windows"
liblink = /subsystem:windows,$(WIN_VER)
!else
!error EXE_TYPE=console|windows must be defined for PROGRAM
!endif
!endif
!else
liblink = /subsystem:windows,$(WIN_VER)
!endif
!endif
libflags = $(libcommon) $(liblink) $(libdebug)
#----------------------------------------------------------------------------
# linker flags
!ifdef USE_DEFAULT_LIB
DEFAULTLIBSWITCH = /NODEFAULTLIB:MSVCRT
!else
DEFAULTLIBSWITCH = /NODEFAULTLIB
!endif
lcommon = $(DEFAULTLIBSWITCH) /INCREMENTAL:NO /NOLOGO /MACHINE:$(CPU)
!ifdef NO_PDB_FILES
lcommon = $(lcommon) /PDB:NONE
!else
lcommon = $(lcommon) /PDB:$(DBG_RTL)\$(TARGET_NAME).pdb
!endif
# declarations for use on Intel i386, i486, and Pentium systems
!IF "$(CPU)" == "i386"
DLLENTRY = @12
lcommon = $(lcommon) /align:0x1000
!ENDIF
# declarations for use on self hosted MIPS R4x000 systems
!IF "$(CPU)" == "MIPS"
DLLENTRY =
lcommon = $(lcommon)
!ENDIF
# declarations for use on self hosted PowerPC systems
!IF "$(CPU)" == "PPC"
DLLENTRY =
lcommon = $(lcommon)
!ENDIF
# declarations for use on self hosted Digital Alpha AXP systems
!IF "$(CPU)" == "ALPHA"
DLLENTRY =
lcommon = $(lcommon)
!ENDIF
# NODEBUG means a retail build
# PERF is a special case of retail:
# == retail plus performance stuff
!ifndef DEBUG_TYPE
DEBUG_TYPE = both
!endif
!ifdef USE_LEGO
ldebug = /OPT:REF /RELEASE /debug /debugtype:cv,fixup
!else
!IFDEF NODEBUG
!IFDEF PERF
ldebug = /OPT:REF /RELEASE /debug:mapped,minimal /debugtype:$(DEBUG_TYPE)
!ELSE
!ifdef SYMBOLS
ldebug = /OPT:REF /RELEASE /debug:mapped,minimal /debugtype:$(DEBUG_TYPE)
!else
ldebug = /OPT:REF /RELEASE /debug:none
!endif
!ENDIF
!ELSE
ldebug = /debug:mapped,full /debugtype:$(DEBUG_TYPE)
!ENDIF
!endif
!if "$(TARGET_TYPE)" == "DYNLINK"
!ifndef DLL_BASE
DLL_BASE = 0x1c400000
!endif
llink = /dll /base:$(DLL_BASE) /subsystem:windows,$(WIN_VER)
!if "$(DEF_FILE)" != ""
llink = $(llink)
TARGET_EXP = $(DBG_RTL)\$(TARGET_NAME).exp
!endif
!if "$(DLL_ENTRY)" != ""
!if "$(DLL_ENTRY)" != "none"
llink = $(llink) /entry:$(DLL_ENTRY)$(DLLENTRY)
!endif
!else
llink = $(llink) /entry:DllEntryPoint$(DLLENTRY)
!endif
!else
!if "$(TARGET_TYPE)" == "PROGRAM"
!if "$(EXE_TYPE)" == "console"
llink = /subsystem:console,$(WIN_VER) /entry:mainCRTStartup
!else
!if "$(EXE_TYPE)" == "windows"
llink = /subsystem:windows,$(WIN_VER) /entry:WinMainCRTStartup
!endif
!endif
!endif
!endif
lflags = $(lcommon) $(ldebug) $(llink)
#----------------------------------------------------------------------------
# make type library flags
mtlflags = /nologo $(MTL_DEFINES)
#----------------------------------------------------------------------------
# unicode flags
!ifdef UNICODE
cflags = $(cflags) -DUNICODE
rcflags = $(rcflags) -DUNICODE
!endif
#----------------------------------------------------------------------------
# Include path
!ifndef NO_ACTIVEX_INCLUDES
INC_PATH = .; \
$(MSSDK)\include; \
$(MSTOOLS)\include; \
$(MSSDK)\samples\graphics\DirectShow\classes\base; \
$(MSTOOLS)\samples\graphics\DirectShow\classes\base; \
$(INC_PATH)
!endif
!if "$(INC_PATH)" != ""
INC_FLAGS = $(INC_PATH: =)***
INC_FLAGS = $(INC_FLAGS:;***=)
INC_FLAGS = $(INC_FLAGS:***=)
INC_FLAGS = -I$(INC_FLAGS:;= -I)
!endif
#----------------------------------------------------------------------------
# Next work out what obj files need to be built from
# the list of source files
!if "$(SRC_FILES)" != ""
OBJ_FILES = $(SRC_FILES)
OBJ_FILES = $(OBJ_FILES:.cpp =.cpp*)
OBJ_FILES = $(OBJ_FILES:.c =.c*)
OBJ_FILES = $(OBJ_FILES: =)
!if "$(DBG_RTL)" == "retail"
OBJ_FILES = retail\$(OBJ_FILES:*= retail\)
!else
OBJ_FILES = debug\$(OBJ_FILES:*= debug\)
!endif
OBJ_FILES = $(OBJ_FILES:.cpp=.obj)
OBJ_FILES = $(OBJ_FILES:.c=.obj)
!endif
# Similary for res file wrt rc file
!if "$(RC_FILE)" != ""
!if "$(DBG_RTL)" == "retail"
RES_FILE = retail\$(RC_FILE:.rc=.res)
!else
RES_FILE = debug\$(RC_FILE:.rc=.res)
!endif
!endif
# and TLB file wrt ODL
!if "$(ODL_FILE)" != ""
!if "$(TLB_FILE)" == ""
!if "$(DBG_RTL)" == "retail"
TLB_FILE = retail\$(ODL_FILE:.odl=.tlb)
!else
TLB_FILE = debug\$(ODL_FILE:.odl=.tlb)
!endif
!endif
!endif
#----------------------------------------------------------------------------
# PCH stuff
!ifndef NO_COMMON_PCH
!ifdef NODEBUG
STREAMS_PCH = $(MSSDK)\lib\streams.pch
!else
STREAMS_PCH = $(MSSDK)\lib\streamsd.pch
!endif
!if exist( "$(STREAMS_PCH)" )
NEED_PCH_OBJ = 1
LINK_TASK = $(LINK_TASK) $(DBG_RTL)\_streams.obj
END_TASK = $(END_TASK) del_own_streams_obj
COMMON_PCH_OBJ = $(DBG_RTL)\_streams.obj
!endif
!endif
!ifndef DISABLE_PCH
!ifdef PCH_HEADER
pchusage = /Yu$(PCH_HEADER)
!ifdef PCH_NAME
!ifdef PCH_OBJ_NAME
PCH_OBJ = $(DBG_RTL)\$(PCH_OBJ_NAME).obj
!else
PCH_OBJ = $(DBG_RTL)\$(PCH_NAME).obj
!endif
PCH_PCH = $(DBG_RTL)\$(PCH_NAME).pch
!else
!ERROR must specify PCH_NAME when using PCH_HEADER
!endif
cpppch = $(pchusage) /Fp$(PCH_PCH)
!else
!if exist( "$(STREAMS_PCH)" )
PCH_OBJ =
PCH_PCH = $(STREAMS_PCH)
pchusage = /Yustreams.h
cpppch = $(pchusage) /Fp$(PCH_PCH)
!else
DISABLE_PCH = 1
!endif
!endif
!endif
#----------------------------------------------------------------------------
# Browser files
!if "$(BROWSER)" == "TRUE"
cbrowser = -FR$(@R).sbr
TARGET_BSC = $(DBG_RTL)\$(TARGET_NAME).bsc
!else
cbrowser =
TARGET_BSC =
!endif
#----------------------------------------------------------------------------
# Map and Sym files
!if "$(TARGET_MAP)" !=""
!ifdef SYM_FILES
END_TASK = $(END_TASK) $(TARGET_MAP:.map=.sym)
lmap = -map:$(TARGET_MAP)
!endif
!ifdef MAP_FILES
lmap = -map:$(TARGET_MAP)
!endif
LINKER_FLAGS = $(LINKER_FLAGS) $(lmap)
!endif
#----------------------------------------------------------------------------
# Define common libraries
# base (not version!)
_CORE_LIBS = kernel32.lib \
advapi32.lib \
version.lib \
largeint.lib
# win libs
_USER_LIBS = user32.lib \
gdi32.lib \
comctl32.lib
_OLE__LIBS = ole32.lib \
oleaut32.lib \
uuid.lib
# !ifdef USE_MSVCRT_LIB
!ifndef USE_LIBCMT_LIB
!ifdef NODEBUG
_CRT__LIBS = msvcrt.lib
!else
!ifdef USE_MSVC20
_CRT__LIBS = msvcrt.lib
!else
_CRT__LIBS = msvcrtd.lib
!endif
!endif
!else
!ifdef NODEBUG
_CRT__LIBS = libcmt.lib
!else
!ifdef USE_MSVC20
_CRT__LIBS = libcmt.lib
!else
_CRT__LIBS = libcmtd.lib
!endif
!endif
!endif
_MM___LIBS = vfw32.lib \
winmm.lib
!ifdef NODEBUG
_AX1__LIBS = $(MSSDK)\lib\strmbase.lib
!else
_AX1__LIBS = $(MSSDK)\lib\strmbasd.lib
!endif
_AX2__LIBS = $(MSSDK)\lib\quartz.lib
!ifdef PERF
_AX2__LIBS = $(_AX2__LIBS) \
$(MSSDK)\lib\measure.lib
!endif
BASE_LIBS = $(_CRT__LIBS) \
$(_MM___LIBS) \
$(_CORE_LIBS) \
$(_USER_LIBS) \
$(_OLE__LIBS)
!ifndef NO_ACTIVEX_LIBS
LINK_LIBS = $(_AX2__LIBS) $(LINK_LIBS) $(_AX1__LIBS)
!if "$(TARGET_TYPE)" == "DYNLINK"
CODE_LIBS = $(_AX1__LIBS) $(CODE_LIBS)
!endif
!endif
!if "$(TARGET_TYPE)" != "DYNLINK"
LINK_LIBS = $(CODE_LIBS) $(LINK_LIBS)
!endif
LINK_LIBS = $(LINK_LIBS) $(BASE_LIBS)
#----------------------------------------------------------------------------
# Pseudo-targets
.SILENT:
.IGNORE:
.SUFFIXES:
.SUFFIXES: .c .cpp
.PRECIOUS: $(TARGET_LIB) $(TARGET_BIN)
#----------------------------------------------------------------------------
# Rules
CC_COMMAND_LINE = $(cflags) $(cbrowser) -Fo$(DBG_RTL)\ $(INC_FLAGS) $(@B).c
CPP_COMMAND_LINE = $(cflags) $(cbrowser) -Fo$(DBG_RTL)\ $(INC_FLAGS) $(@B).cpp
.c{$(DBG_RTL)}.obj:
echo Compiling $(@B).c... > $(MAKE_ECHO)
if exist $@ del $@ > NUL
$(TYPE_ECHO)
$(FILE_ECHO)
echo $(cc) $(ccpch) $(CC_COMMAND_LINE) > $(MAKE_ECHO)
$(TYPE_ECHO2)
$(FILE_ECHO)
$(cc) $(ccpch) $(CC_COMMAND_LINE) > $(MAKE_ECHO)
$(TYPE_ECHO)
$(FILE_ECHO)
echo. > $(MAKE_ECHO)
$(TYPE_ECHO2)
$(FILE_ECHO)
.c.cod:
echo Compiling $(@B).c - with cod file... > $(MAKE_ECHO)
if exist $@ del $@ > NUL
$(TYPE_ECHO)
$(FILE_ECHO)
echo $(cc) -Fc $(CC_COMMAND_LINE) > $(MAKE_ECHO)
$(TYPE_ECHO2)
$(FILE_ECHO)
$(cc) -Fc $(CC_COMMAND_LINE) > $(MAKE_ECHO)
$(TYPE_ECHO)
$(FILE_ECHO)
echo. > $(MAKE_ECHO)
$(TYPE_ECHO2)
$(FILE_ECHO)
.cpp{$(DBG_RTL)}.obj:
echo Compiling $(@B).cpp... > $(MAKE_ECHO)
if exist $@ del $@ > NUL
$(TYPE_ECHO)
$(FILE_ECHO)
echo $(cc) $(cpppch) $(CPP_COMMAND_LINE) > $(MAKE_ECHO)
$(TYPE_ECHO2)
$(FILE_ECHO)
$(cc) $(cpppch) $(CPP_COMMAND_LINE) > $(MAKE_ECHO)
$(TYPE_ECHO)
$(FILE_ECHO)
echo. > $(MAKE_ECHO)
$(TYPE_ECHO2)
$(FILE_ECHO)
.cpp.cod:
echo Compiling $(@B).cpp - with cod file... > $(MAKE_ECHO)
if exist $@ del $@ > NUL
$(TYPE_ECHO)
$(FILE_ECHO)
echo $(cc) -Fc $(CPP_COMMAND_LINE) > $(MAKE_ECHO)
$(TYPE_ECHO2)
$(FILE_ECHO)
$(cc) -Fc $(CPP_COMMAND_LINE) > $(MAKE_ECHO)
$(TYPE_ECHO)
$(FILE_ECHO)
echo. > $(MAKE_ECHO)
$(TYPE_ECHO2)
$(FILE_ECHO)
#----------------------------------------------------------------------------
# TARGETS - key
#
# default
#
all : log_start \
dump_params \
pass1 \
log_done \
clear_params \
del_echo
#
# clean
#
clean: dump_params0 \
pass0 \
clear_params0 \
del_echo0 \
log_reset
#----------------------------------------------------------------------------
# TARGETS - passes
pass0: log_pass0 \
$(CLEAN_TASK) \
delete
pass1: log_pass \
make_dir \
$(START_TASK) \
$(TLB_FILE) \
$(LIB_TASK) \
$(RES_FILE) \
$(PCH_PCH) \
$(PCH_OBJ) \
$(OBJ_FILES) \
$(TARGET_LIB) \
$(GOAL_LIB) \
$(LINK_TASK) \
$(TARGET_BIN) \
$(TARGET_BSC) \
$(END_TASK) \
$(GOAL_BIN)
#----------------------------------------------------------------------------
# TARGETS - logging
log_reset:
if exist $(MAKE_LOG) del $(MAKE_LOG)
log_start:
if exist $(MAKE_LOG) del $(MAKE_LOG)
echo Making $(MAKEDIR) > $(MAKE_ECHO)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -