📄 makefile
字号:
#
# Phelix testbench makefile
#
!if defined(ECRYPT_API) || defined(ECRYPT)
_DEFINES_ = -DECRYPT_API
_CIPHER_ = "ECRYPT-Phelix"
_TASMDEF_ = -TDECRYPT_API # pass along the switch to assembler
_MASMDEF_ = -DECRYPT_API
!else # default is non-ECRYPT
_DEFINES_ =
_CIPHER_ = "Phelix"
_TASMDEF_ =
_MASMDEF_ =
!endif
C_TEST = testPhelix.c
C_ALL = $(C_TEST) phelix.c
!ifdef _PERF
RUN_TEST = testPhelix.exe >> make.log
!else
RUN_TEST = testPhelix.exe
!endif
# compiler/assembler invocations
BCC32 = bcc32 # already in the path
MASM = ml
MSVC42 = \dos\msc42\bin\cl /Oi
MSVC60 = "\Program Files\microsoft visual Studio\vc98\bin\cl"
GCC_32 = \dos\MinGW32\bin\gcc
GCC_342 = \dos\MinGW342\bin\gcc
# compiler/assembler switches
BCC_OPT = -q -B -v -w-8057 -M -g1 $(_TASMDEF_) -Tm2 -Tt -Tl
GCC_OPT = -O3 -Werror -Wall
MSC_OPT = /Zi /O2 /WX /W4 /G5
MASM_OPT = /coff /c /Fl $(_MASMDEF_)
#++++++++++++++++++++++++++ Borland C++ compiler
default: tasm bcc
# just compile both
bcc:
$(BCC32) $(BCC_OPT) $(_DEFINES_) $(C_ALL)
$(RUN_TEST)
@echo Success: BCC32 $(_DEFINES_) >> make.log
tasm:
$(BCC32) $(BCC_OPT) $(_DEFINES_) $(C_TEST) phelix86.asm
$(RUN_TEST)
@echo Success: TASM $(_DEFINES_) >> make.log
#++++++++++++++++++++++++++ gcc (MingW)
gcc320: gcc320_masm
$(GCC_32) $(GCC_OPT) $(_DEFINES_) $(C_ALL) -o testPhelix.exe
$(RUN_TEST)
@echo Success: GCC3.2 $(_DEFINES_) >> make.log
gcc320_masm:
$(MASM) $(MASM_OPT) $(_MASM_DEF_) pHelix86.asm
objcopy -I pe-i386 -O elf32-i386 pHelix86.obj pHelix86.o
$(GCC_32) $(GCC_OPT) $(_DEFINES_) $(C_TEST) pHelix86.o -o testPhelix.exe
$(RUN_TEST)
@echo Success: GCC3.2/MASM $(_DEFINES_) >> make.log
as:
$(GCC_32) $(GCC_OPT) $(_DEFINES_) $(C_TEST) pHelix86.S -o testPhelix.exe
$(RUN_TEST)
$(GCC_342) $(GCC_OPT) $(_DEFINES_) $(C_TEST) pHelix86.S -o testPhelix.exe
$(RUN_TEST)
@echo Success: AS $(_DEFINES_) >> make.log
#++++++++++++++++++++++++++ gcc342 (MingW)
gcc342: gcc342_masm
$(GCC_342) $(GCC_OPT) $(_DEFINES_) $(C_ALL) -o testPhelix.exe
$(RUN_TEST)
@echo Success: GCC3.42 $(_DEFINES_) >> make.log
gcc342_masm:
$(MASM) $(MASM_OPT) $(_MASM_DEF_) pHelix86.asm
objcopy -I pe-i386 -O elf32-i386 pHelix86.obj pHelix86.o
$(GCC_342) $(GCC_OPT) $(_DEFINES_) $(C_TEST) pHelix86.o -o testPhelix.exe
$(RUN_TEST)
@echo Success: GCC3.4/MASM $(_DEFINES_) >> make.log
#++++++++++++++++++++++++++ msvc42
msvc42: masm
@if exist testPhelix.pdb del testPhelix.pdb
$(MSVC42) $(MSC_OPT) $(_DEFINES_) $(C_ALL)
$(RUN_TEST)
@echo Success: MSVC4.2 $(_DEFINES_) >> make.log
masm:
@if exist testPhelix.pdb del testPhelix.pdb
$(MASM) $(MASM_OPT) $(_MASM_DEF_) pHelix86.asm
$(MSVC42) $(MSC_OPT) $(_DEFINES_) $(C_TEST) pHelix86.obj
$(RUN_TEST)
@echo Success: MASM4.2 $(_DEFINES_) >> make.log
#++++++++++++++++++++++++++ msvc60
msvc60: masm60
@if exist testPhelix.pdb del testPhelix.pdb
$(MSVC60) $(MSC_OPT) $(_DEFINES_) $(C_ALL)
$(RUN_TEST)
@echo Success: MSVC6.0 $(_DEFINES_) >> make.log
masm60:
$(MASM) $(MASM_OPT) $(_MASM_DEF_) pHelix86.asm
@if exist testPhelix.pdb del testPhelix.pdb
$(MSVC60) $(MSC_OPT) $(_DEFINES_) $(C_TEST) pHelix86.obj
$(RUN_TEST)
@echo Success: MASM6.0 $(_DEFINES_) >> make.log
#++++++++++++++++++++++++++ check ANSI C compliance (no timer code)
ansi:
$(GCC_32) -ansi -D_ANSI_CHK $(GCC_OPT) $(_DEFINES_) -pedantic $(C_ALL) -o testPhelix.exe
$(RUN_TEST)
$(GCC_342) -ansi -D_ANSI_CHK $(GCC_OPT) $(_DEFINES_) -pedantic $(C_ALL) -o testPhelix.exe
$(RUN_TEST)
@if exist testPhelix.pdb del testPhelix.pdb
$(MSVC42) /Za -D_ANSI_CHK $(MSC_OPT) $(_DEFINES_) $(C_ALL)
$(RUN_TEST)
@if exist testPhelix.pdb del testPhelix.pdb
$(MSVC60) /Za -D_ANSI_CHK $(MSC_OPT) $(_DEFINES_) $(C_ALL)
$(RUN_TEST)
$(BCC32) -A -D_ANSI_CHK $(BCC_OPT) $(_DEFINES_) $(C_ALL)
$(RUN_TEST)
@echo Success: ANSI-C $(_DEFINES_) >> make.log
#++++++++++++++++++++++++++ randomly mix C and assembly calls
mix:
@if exist testPhelix.pdb del testPhelix.pdb
$(MASM) $(MASM_OPT) $(_MASM_DEF_) -DMIX_ASM pHelix86.asm
$(MSVC42) $(MSC_OPT) $(_DEFINES_) -DMIX_ASM $(C_ALL) pHelix86.obj
$(RUN_TEST)
$(GCC_32) $(GCC_OPT) -DMIX_ASM $(_DEFINES_) $(C_ALL) pHelix86.S -o testPhelix.exe
$(RUN_TEST)
$(GCC_342) $(GCC_OPT) -DMIX_ASM $(_DEFINES_) $(C_ALL) pHelix86.S -o testPhelix.exe
$(RUN_TEST)
$(BCC32) $(BCC_OPT) $(_DEFINES_) -DMIX_ASM -TDMIX_ASM $(C_ALL) phelix86.asm
$(RUN_TEST)
@echo Success: MIX $(_DEFINES_) >> make.log
#++++++++++++++++++++++++++ test them all at once
test: bcc tasm gcc gcc342 as msvc msvc60 ansi mix # test ALL compilers
@echo ************************************************
@echo ****** Test Successful: $(_CIPHER_)
@echo ************************************************
all: # recurse to try both settings: ECRYPT, Phelix
@if exist make.log del make.log
make -D_PERF test
@echo .
@echo .
@echo .
@echo .
make -DECRYPT_API -D_PERF test # ECRYPT compiles
@grep Success make.log
#++++++++++++++++++++++++++ quick test
quickTest: bcc gcc
@echo ************************************************
@echo ****** Quick Test Successful: $(_CIPHER_)
@echo ************************************************
quick: # recurse to try both settings: ECRYPT, Phelix
make quickTest
@echo .
@echo .
@echo .
@echo .
make -DECRYPT_API quickTest
#++++++++++++++++++++++++++ debugging and vectors
noAsm:
$(BCC32) $(BCC_OPT) -A -DALLOW_DEBUG_IO -D_ANSI_CHK -DNO_ASM=1 $(_DEFINES_) $(C_ALL)
$(RUN_TEST) -k
vectors: noAsm
$(RUN_TEST) -k -g > phelixKAT.h
$(RUN_TEST) -k -gTex > phelixKAT.tex
#++++++++++++++++++++++++++ debug the executable
db:
$(BCC32) $(BCC_OPT) -DALLOW_DEBUG_IO $(_DEFINES_) $(C_ALL)
db_asm:
$(BCC32) $(BCC_OPT) -DALLOW_DEBUG_IO $(_DEFINES_) $(C_TEST) pHelix86.asm
td32: td
td: db
db.bat
#++++++++++++++++++++++++++ aliases
msvc: msvc42
msc: msvc42
gcc: gcc320
#++++++++++++++++++++++++++
unix:
copy *.c unix\*.*
copy *.h unix\*.*
copy *.S unix\*.*
dos2unix unix\phelix.c
dos2unix unix\testPhelix.c
dos2unix unix\phelix.h
dos2unix unix\platform.h
dos2unix unix\ecrypt-config.h
dos2unix unix\ecrypt-machine.h
dos2unix unix\ecrypt-portable.h
dos2unix unix\ecrypt-sync-ae.h
dos2unix unix\strucmac.S
dos2unix unix\phelix86.S
xcopy /y unix\*.c \\earth\u.dwhiting\phelix\*.c
xcopy /y unix\*.h \\earth\u.dwhiting\phelix\*.h
xcopy /y unix\*.S \\earth\u.dwhiting\phelix\*.S
#++++++++++++++++++++++++++ Put all the ecrypt files together
ecrypt:
$(BCC32) $(BCC_OPT) -A -DECRYPT_API="ecrypt-sync-ae.h" -DANSI_CHK ecrypt-test.c phelix.c
@-if exist ecrypt.zip del ecrypt.zip
winzip ecrypt.zip readme coversheet.txt IPstatement.txt
winzip ecrypt.zip tex\phelix.pdf tex\phelix.ps tex\*.tex tex\*.mp
winzip ecrypt.zip tex\phelix.1 tex\phelix.2 tex\*.bbl tex\llncs.cls
winzip ecrypt.zip makefile *.h *.c *.inc *.asm *.S phelix86.obj testphelix.exe
winzip -v ecrypt.zip
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -