📄 clock.make.bat
字号:
@ECHO OFF
SETLOCAL
REM ================================ Compiling unitilty =======================
REM 1) INSTALLATION NOTES:
REM - The CLOCKSDK environment variable must specify the path to the CLOCKSDK
REM installation directory _without_ terminating slash
REM ===========================================================================
REM /* -----------------------------------------------------------------------
REM
REM C O N F I G U R A T O N
REM
REM -------------------------------------------------------------------------*/
REM
IF NOT #%CLOCKSDK%#==## GOTO install_ok
SET CLOCKSDK=F:\.optimize-I\bin\clock
REM default path to CLOCK SDK
:install_ok
SET MSVC_NAME=Microsoft Visual C++
SET BC_NAME=Borland C++
SET WPP_NAME=WATCOM
SET COMPIL=MSVC
REM ^^^^^^^^^^^ Default compiler type
REM The following compilers are supported:
REM MSVC : Microsoft Visual C++
REM BC : Borland C++
REM WPP : Watcom C++
SET COMPIL_NAME=%MSVC_NAME%
REM ^^^^^^^^^^^ Default compiler name
SET OPTIONS=
REM ^^^^^^^^^^^^^^^
REM Default compile mode
REM The following modes are supported:
REM -release : compiling with optimization
REM -debug : compiling with debug information
REM ## : default compiling
SET WX=
REM call-back for KPNC.SHELL
:kpnc_shell
IF #%1#==#__class# GOTO end
IF #%1#==#__typeinfo# GOTO usage
IF #%1#==#/?# GOTO help
REM // TITLE
ECHO * CLOCK PROJECT MAKER * by Kris Kaspersky Version 1.0 beta AT 23-07-2001
ECHO (utility for "Program optimization technique" book)
IF #%CLOCKSDK%#==## GOTO ERR_NO_CLOCKSDK
REM /* -----------------------------------------------------------------------
REM
REM P A R S I N G C O M M A N D L I N E A R G U M E N T S
REM
REM -------------------------------------------------------------------------*/
REM
REM /* Parsing command-line arguemtns */
REM ===================================================================
:P1
IF #%1#==## GOTO help
:parse
:P11
IF NOT #%1#==#-MSVC# GOTO P2
SHIFT
SET COMPIL=MSVC
SET COMPIL_NAME==%MSVC_NAME%
:P2
IF NOT #%1#==#-BC# GOTO P3
SHIFT
SET COMPIL=BC
SET COMPIL_NAME=%BC_NAME%
:P3
IF NOT #%1#==#-WPP# GOTO P4
SHIFT
SET COMPIL=WPP
SET COMPIL_NAME=%WPP_NAME%
:P4
IF NOT #%1#==#-debug# GOTO P5
SHIFT
SET OPTIONS=-debug
:P5
IF NOT #%1#==#-release# GOTO P6
SHIFT
SET OPTIONS=-release
:P6
IF NOT #%1#==#-nop# GOTO P7
SHIFT
:P7
IF NOT #%1#==#-nocleartmp# GOTO P8
SHIFT
SET nocleartmp=YES
:P8
IF NOT #%1#==#-LIB# GOTO P9
SHIFT
SET MYLIB=%1
SHIFT
:P9
IF NOT #%1#==#--w!# GOTO P10
SHIFT
SET WX=--w!
:P10
IF NOT #%1#==#--cpp# GOTO P11
SHIFT
SET C_AS_CPP=--cpp
:P11
:do_it
REM /* -----------------------------------------------------------------------
REM
REM Check for existence of SDK riles
REM
REM -------------------------------------------------------------------------*/
REM
IF NOT EXIST %CLOCKSDK%\SOURCE\DoCPU.asm GOTO ERR_NO_DoCPU_ASM
IF NOT EXIST %CLOCKSDK%\INCLUDE\DoCPU.h GOTO ERR_NO_DoCPU_H
REM /* STARTING PROJECT BUILD */
REM ======================================================================
ECHO ===== %~n1 project =====
IF NOT EXIST %~n1.c GOTO ERR_C_NOT_EXIST
IF #%~n1#==#code# GOTO ERR_PRJ_NAME
REM displaying list of project files
SET FILES_PRG=%~n1.c
IF EXIST %~n1.mod SET FILES_PRG=%FILES_PRG%;%~n1.mod
IF EXIST %~n1.ini SET FILES_PRG=%FILES_PRG%;%~n1.ini
SET FILES_PRG=%FILES_PRG%;DoCPU.asm;DoCPU.h.
ECHO [0/3] Project files %FILES_PRG%
REM /* Preparing files for assembling */
REM ======================================================================
COPY %CLOCKSDK%\SOURCE\DoCPU.asm %CLOCKSDK%\TEMP\ >NUL
IF EXIST %~n1.mod COPY %~n1.mod %CLOCKSDK%\TEMP\ >NUL
IF EXIST %~n1.ini COPY %~n1.ini %CLOCKSDK%\TEMP\ >NUL
IF EXIST %~n1.mod ECHO INCLUDE %~n1.mod > %CLOCKSDK%\TEMP\code.inc
IF NOT EXIST %~n1.mod ECHO ; > %CLOCKSDK%\TEMP\code.inc
IF EXIST %~n1.ini ECHO INCLUDE %~n1.ini > %CLOCKSDK%\TEMP\code.ini
IF NOT EXIST %~n1.ini ECHO ; > %CLOCKSDK%\TEMP\code.ini
REM /* Preparing the clock.clear.bat file */
REM ===========================================================================
ECHO ECHO this file was generated by clock.make.bat for clearing temprary files of the %~n1 project > %CLOCKSDK%\TEMP\clock.clear.bat
ECHO DEL %CLOCKSDK%\TEMP\code.inc > %CLOCKSDK%\TEMP\clock.clear.bat
ECHO DEL %CLOCKSDK%\TEMP\code.ini >> %CLOCKSDK%\TEMP\clock.clear.bat
ECHO DEL %CLOCKSDK%\TEMP\DoCPU.asm >> %CLOCKSDK%\TEMP\clock.clear.bat
IF EXIST %CLOCKSDK%\TEMP\%~n1.mod ECHO DEL %CLOCKSDK%\TEMP\%~n1.mod >> %CLOCKSDK%\TEMP\clock.clear.bat
IF EXIST %CLOCKSDK%\TEMP\%~n1.ini ECHO DEL %CLOCKSDK%\TEMP\%~n1.ini >> %CLOCKSDK%\TEMP\clock.clear.bat
ECHO IF EXIST DoCPU.obj DEL DoCPU.obj >> %CLOCKSDK%\TEMP\clock.clear.bat
ECHO IF EXIST %~n1.obj DEL %~n1.obj >> %CLOCKSDK%\TEMP\clock.clear.bat
IF #%OPTIONS%#==#-release# ECHO IF EXIST %~n1.pdb DEL %~n1.pdb >> %CLOCKSDK%\TEMP\clock.clear.bat
IF #%OPTIONS%#==#-release# ECHO IF EXIST vc??.pdb DEL vc??.pdb >> %CLOCKSDK%\TEMP\clock.clear.bat
IF #%OPTIONS%#==#-release# ECHO IF EXIST %~n1.tds DEL %~n1.tds >> %CLOCKSDK%\TEMP\clock.clear.bat
REM ********************** Assembling DoCPU ******************************
REM ==========================================================================
ECHO [1/3] Assembling DoCPU.asm
rem IF #%COMPIL%#==#MSVC# SET OOPS1=/coff
rem IF #%OPTIONS%#==#DEBUG# SET OOPS2=/Zi
ml.exe /WX /X /c /nologo %CLOCKSDK%\TEMP\DoCPU.asm > %~n1.err
IF NOT EXIST DoCPU.obj GOTO ERR_LINK
IF EXIST %~n1.err DEL %~n1.err
REM ************************* Compiling *******************************
REM =========================================================================
ECHO [2/3] Compiling the "%~n1" project by %compil_name% %2 %3 %4 %5 %6 %7 %8 %9
IF EXIST %~n1.exe DEL %~n1.exe
SET CMDLINE=%WX% %OPTIONS% -nologo %C_AS_CPP% --I %CLOCKSDK%\INCLUDE\ --o DoCPU.obj --l USER32.LIB --l "%MYLIB%"
IF #%MYLIB%#==## SET CMDLINE=%WX% %OPTIONS% -nologo %C_AS_CPP% --I %CLOCKSDK%\INCLUDE\ --o DoCPU.obj --l USER32.LIB
rem ECHO %COMPIL%
REM choosing the compiler
IF %COMPIL%==MSVC GOTO msvc
IF %COMPIL%==BC GOTO bc
IF %COMPIL%==WPP GOTO wpp
GOTO ERR_UNK_COMPIL
:MSVC
rem ECHO XXXX
call cl.bat %CMDLINE% %~n1.c %2 %3 %4 %5 >%~n1.err
GOTO after_compil
:BC
call bcc32.bat %CMDLINE% %~n1.c %2 %3 %4 %5 >%~n1.err
GOTO after_compil
:WPP
call wpp.bat %WX% %OPTIONS% -nologo --I %CLOCKSDK%\INCLUDE\ --o DoCPU.obj --l USER32.LIB;%MYLIB% %~n1.c %2 %3 %4 %5 >%~n1.err
GOTO after_compil
:AFTER_COMPIL
REM /* Deleting temporary files */
REM =====================================================================
IF #%OPTIONS%#==#RELEASE# IF EXIST %~n1.pdb DEL %~n1.pdb
IF #%OPTIONS%#==#RELEASE# IF EXIST %~n1.ilk DEL %~n1.ilk
IF NOT #%NOCLEARTMP%#==#YES# GOTO DEL_TEMP
ECHO [3/3] Temporary files were not deleted because of -nocleartmp option
GOTO CHK_ERR
:DEL_TEMP
ECHO [3/3] Deleting temporary files
CALL %CLOCKSDK%\TEMP\clock.clear.bat
:CHK_ERR
IF #%ERR_COMPIL%#==#TRUE# GOTO err_compil
IF NOT EXIST %~n1.exe GOTO ERR_COMPIL
IF EXIST %~n1.err DEL %~n1.err
ECHO [+OK] Project successfully compiled
ECHO ::The %~n1.exe file was created
IF #%OPTIONS%#==#DEBUG# ECHO ::with debug info
IF #%OPTIONS%#==#RELEASE# ECHO ::compiled with maximum optimization
GOTO END
:HELP
ECHO USAGE:
ECHO clock.make.bat [-debug\-release\-nop\-BC\-WPP\-LIB] modname [arg1,arg2,..]
ECHO -debug : generate debug info
ECHO -release : maximum optimization
ECHO -nocleartmp : do not delete temporary files
GOTO END
:USAGE
ECHO CLOCK PROJECT MAKER [clock.make.bat $opt $filename $user_opt]
GOTO END
:ERR_LINK
ECHO -ERR: Assembling error. See %~n1.err
GOTO END
:ERR_COMPIL
ECHO -ERR: Compiling error. See %~n1.err
GOTO END
:ERR_C_NOT_EXIST
ECHO -ERR: The %1 main module doesn't exist
GOTO END
:ERR_PRJ_NAME
ECHO -ERR: The CODE keyword cannot be used for naming the project
GOTO END
:ERR_NO_DoCPU_ASM
ECHO.
ECHO -ERR: The %CLOCKSDK%\SOURCE\DoCPU.ASM file is missing
ECHo Restore the file and try again!
GOTO END
:ERR_NO_DoCPU_H
ECHO.
ECHO -ERR: The %CLOCKSDK%\INCLUDE\DoCPU.h file is missing
ECHo Restore the file and try again!
GOTO END
:ERR_NO_CLOCKSDK
ECHO.
ECHO -ERR: The CLOCKSDK environment variable is not specified.
ECHO This variable sets the path to CLOCKSDK installation directory
ECHO without terminating slash. Set this variable and try again...
GOTO END
:ERR_UNK_COMPIL
ECHO -ERR: Unknown compiler: %compil%
GOTO END
ENDLOCAL
:END
set errorlevel=1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -