⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smakefile

📁 给出了 zip 压缩算法的完整实现过程。
💻
📖 第 1 页 / 共 2 页
字号:
LDFLAGSS = FROM SC:LIB/$(LSTARTUP)# common linker flags for all other executeablesLDFLAGSC = FROM SC:LIB/c.oLDFLAGS2 = NOICONS $(LDBG)LIBFLAGS = LIB $(LMEMLIB) SC:LIB/$(SASLIB).lib SC:LIB/amiga.lib# Assembler definitions#ASM = asm## Options used for assembling amiga/deflate.a# Must match defines in C-Source.#AFLAGS0  = -d__SASC -dSASC -dAMIGAAFLAGS1  = $(AUSE020) $(ASMOPTS) $(ADBG)AFLAGS2  = -m$(AUSECPU) -jm -iINCLUDE:AFLAGS   = $(AFLAGS0) $(AFLAGS1) $(AFLAGS2)ASMOPTSZ = $(AFLAGS) $(AUSEMEM) -dDYN_ALLOC     # Zip asm flagsASMOPTSL = $(AFLAGS) $(ALOWMEM)                 # Zip low-mem version asm flags################### TARGET OBJECTS #################### Zip objectsOBJZ1 = zip$(O) zipfile$(O) zipup$(O) fileio$(O) util$(O) globals$(O)OBJZ2 = crc32$(O) crctab$(O) crypt$(O) timezone$(O) ttyio$(O)OBJZI = deflate$(O) trees$(O)OBJZA = amiga$(O) amigazip$(O) stat$(O) filedate$(O)OBJZ  = $(OBJZ1) $(OBJZ2) $(OBJZI) $(OBJZA)# Shared utility objects for ZipNote, ZipCloak and ZipSplitOBJU1 = globals$(O)OBJUU = zipfile$(OU) fileio$(OU) timezone$(O) util$(OU)OBJUA = amigazip$(OU) amiga$(O) stat$(O) filedate$(O)OBJU  = $(OBJU1) $(OBJUU) $(OBJUA)# ZipNote objectsOBJN1 = zipnote$(O)OBJN  = $(OBJN1) $(OBJU)# ZipCloak objectsOBJC1 = zipcloak$(O)OBJCU = $(OBJU) crypt$(OU)OBJCS = crctab$(O) ttyio$(O)OBJC  = $(OBJC1) $(OBJCU) $(OBJCS)#ZipSplit objectsOBJS1 = zipsplit$(O)OBJS  = $(OBJS1) $(OBJU)# ZipLM objectsOBJL1 = zip$(OL) zipfile$(OL) zipup$(OL) fileio$(OL) util$(OL) globals$(OL)OBJL2 = crc32$(OL) crctab$(OL) crypt$(OL) timezone$(OL) ttyio$(OL)OBJLI = deflate$(OL) trees$(OL)OBJLA = amiga$(OL) amigazip$(OL) stat$(OL) filedate$(OL)OBJL  = $(OBJL1) $(OBJL2) $(OBJLI) $(OBJLA)# Common header filesZIP_H1 = zip.h ziperr.h tailor.hZIP_HA = amiga/osdep.h amiga/z-stat.hZIP_H  = $(ZIP_H1) $(ZIP_HA)# Output targetsZIPS  = Zip ZipNote ZipCloak ZipSplit ZipLM# Temp filenames for object lists to load using linker "WITH" command.OBJLISTZ = zip_objlist.with            # Zip      object listOBJLISTN = zipnote_objlist.with        # ZipNote  object listOBJLISTC = zipcloak_objlist.with       # ZipCloak object listOBJLISTS = zipsplit_objlist.with       # ZipSplit object listOBJLISTL = ziplm_objlist.with          # Zip low-mem object list######################################## DEFAULT TARGET AND PROCESSING RULES ########################################all: request flush $(ZIPS)# Zip transformation rules#.c$(O):      $(CC) WITH=$(CFILE) $(CUSEMEM) LISTFILE=$>$(LISTEXTZ) OBJNAME=$@ $*.c# Zip low-memory version transformation rules#.c$(OL):      $(CC) WITH=$(CFILE) $(CLOWMEM) LISTFILE=$>$(LISTEXTL) OBJNAME=$@ $*.c# Utilities (ZipNote, ZipCloak and ZipSplit) transformation rules#.c$(OU):      $(CC) WITH=$(CFILE) $(CUSEMEM) DEF=UTIL LISTFILE=$>$(LISTEXTU) OBJNAME=$@ $*.c########################## Final output targets. ##########################zip:      local_zip CommonFlags $(OBJZ)          @Echo "$(OBJZ)" > $(OBJLISTZ)          Type $(OBJLISTZ)          @Echo "$(LDFLAGSS) $(LUTIL) WITH $(OBJLISTZ) $(LIBFLAGS)" \                "$(LDFLAGS2) $(LMAPZ)" >$(LWITHZ)          Type $(LWITHZ)          $(LD) TO Zip      WITH $(LWITHZ)zipnote:  local_zip CommonFlags $(OBJN)          @Echo "$(OBJN)" > $(OBJLISTN)          Type $(OBJLISTN)          @Echo "$(LDFLAGSS) $(LUTIL) WITH $(OBJLISTN) $(LIBFLAGS) " \                "$(LDFLAGS2) $(LMAPN)" >$(LWITHN)          Type $(LWITHN)          $(LD) TO ZipNote  WITH $(LWITHN)zipcloak: local_zip CommonFlags $(OBJC)          @Echo "$(OBJC)" > $(OBJLISTC)          Type $(OBJLISTC)          @Echo "$(LDFLAGSS) $(LUTIL) WITH $(OBJLISTC) $(LIBFLAGS) " \                "$(LDFLAGS2) $(LMAPC)" >$(LWITHC)          Type $(LWITHC)          $(LD) TO ZipCloak WITH $(LWITHC)zipsplit: local_zip CommonFlags $(OBJS)          @Echo "$(OBJS)" > $(OBJLISTS)          Type $(OBJLISTS)          @Echo "$(LDFLAGSS) $(LUTIL) WITH $(OBJLISTS) $(LIBFLAGS) " \                "$(LDFLAGS2) $(LMAPS)" >$(LWITHS)          Type $(LWITHS)          $(LD) TO ZipSplit WITH $(LWITHS)ziplm:    local_zip CommonFlags $(OBJL)          @Echo "$(OBJL)" > $(OBJLISTL)          Type $(OBJLISTL)          @Echo "$(LDFLAGSS) $(LUTIL) WITH $(OBJLISTL) $(LIBFLAGS) " \                "$(LDFLAGS2) $(LMAPL)" >$(LWITHL)          Type $(LWITHL)          $(LD) TO ZipLM    WITH $(LWITHL)clean:        -Delete >nil: $(OBJZ) quiet        -Delete >nil: $(OBJN) quiet        -Delete >nil: $(OBJC) quiet        -Delete >nil: $(OBJS) quiet        -Delete >nil: $(OBJL) quiet        -Delete >nil: $(OBJLISTZ) $(OBJLISTL) $(OBJLISTN) $(OBJLISTS) $(OBJLISTC) quiet        -Delete >nil: $(MAPFZ) $(MAPFN) $(MAPFC) $(MAPFS) $(MAPFL) quiet        -Delete >nil: \#?$(LISTEXTZ) \#?$(LISTEXTU) \#?$(LISTEXTL) quiet        -Delete >nil: $(CWITHOPT) $(CFILE) quiet        -Delete >nil: $(LWITHZ) $(LWITHN) $(LWITHC) $(LWITHS) $(LWITHL) quiet        -Delete >nil: env:VersionDate quiet        -Delete >nil: \#?.q.?? \#?.tmp \#?.cov quietspotless: clean        -Delete >nil: $(ZIPS) quiet################# DEPENDENCIES ################## To change between the assembler and C sources, you have to comment/uncomment# the approprite lines. C sources are marked by #C-src and assembler sources# #asm-src at the end.# Zip dependencies:#zip$(O):        zip.c      $(ZIP_H) revision.h crypt.h ttyio.hzipup$(O):      zipup.c    $(ZIP_H) revision.h crypt.h amiga/zipup.hzipfile$(O):    zipfile.c  $(ZIP_H) revision.hcrypt$(O):      crypt.c    $(ZIP_H) crypt.h ttyio.httyio$(O):      ttyio.c    $(ZIP_H) crypt.h ttyio.hdeflate$(O):    deflate.c  $(ZIP_H)                          #C-srctrees$(O):      trees.c    $(ZIP_H)fileio$(O):     fileio.c   $(ZIP_H)util$(O):       util.c     $(ZIP_H)crc32$(O):      crc32.c    $(ZIP_H)crctab$(O):     crctab.c   $(ZIP_H)globals$(O):    globals.c  $(ZIP_H)timezone$(O):   timezone.c $(ZIP_H) timezone.h# Amiga specific objectsstat$(O):       amiga/stat.c     amiga/z-stat.hfiledate$(O):   amiga/filedate.c crypt.h timezone.hamiga$(O):      amiga/amiga.c    ziperr.hamigazip$(O):   amiga/amigazip.c $(ZIP_H) amiga/amiga.h env:Workbench# Substitute assembly version of deflate.c:#deflate$(O):  amiga/deflate.a                               #asm-src#        $(ASM) $(ASMOPTSZ) -o$@ $*.a                        #asm-src# Utility (ZipNote, ZipCloak, ZipSplit) dependencies:#zipnote$(O):    zipnote.c  $(ZIP_H) revision.hzipcloak$(O):   zipcloak.c $(ZIP_H) revision.h crypt.h ttyio.hzipsplit$(O):   zipsplit.c $(ZIP_H) revision.hzipfile$(OU):   zipfile.c  $(ZIP_H) revision.hfileio$(OU):    fileio.c   $(ZIP_H)util$(OU):      util.c     $(ZIP_H)crypt$(OU):     crypt.c    $(ZIP_H) crypt.h ttyio.h# Amiga specific objectsamigazip$(OU):   amiga/amigazip.c $(ZIP_H) amiga/amiga.h env:Workbench# ZipLM dependencies:#zip$(OL):       zip.c      $(ZIP_H) revision.h crypt.h ttyio.hzipup$(OL):     zipup.c    $(ZIP_H) revision.h crypt.h amiga/zipup.hzipfile$(OL):   zipfile.c  $(ZIP_H) revision.hcrypt$(OL):     crypt.c    $(ZIP_H) crypt.h ttyio.httyio$(OL):     ttyio.c    $(ZIP_H) crypt.h ttyio.hdeflate$(OL):   deflate.c  $(ZIP_H)trees$(OL):     trees.c    $(ZIP_H)fileio$(OL):    fileio.c   $(ZIP_H)util$(OL):      util.c     $(ZIP_H)crc32$(OL):     crc32.c    $(ZIP_H)crctab$(OL):    crctab.c   $(ZIP_H)globals$(OL):   globals.c  $(ZIP_H)timezone$(OL):  timezone.c $(ZIP_H) timezone.h# Amiga specific objectsstat$(OL):      amiga/stat.c     amiga/z-stat.hfiledate$(OL):  amiga/filedate.c crypt.h timezone.hamiga$(OL):     amiga/amiga.c    ziperr.h# Substitute assembly version of deflate.c:#deflate$(OL): amiga/deflate.a#        $(ASM) $(ASMOPTSL) -o$@ $*.a######################### DEPENDECIES END HERE ########################## flush all libraries to provide more mem for compilationflush:        @Avail flush >nil:# write common compiler flags to file and echo to userCommonFlags:        @Echo "$(CFLAGS)"    >$(CFILE)        @Type "$(CWITHOPT)" >>$(CFILE)        -Type $(CFILE)# special rules for adding Amiga internal version number to amiga/amiga.camiga$(O):         rx > env:VersionDate "say '""'translate(date('E'),'.','/')'""'"         $(CC) WITH=$(CFILE) $(CUSEMEM) LISTFILE=$>$(LISTEXTZ) OBJNAME=$@ $*.c         -Delete env:VersionDateamiga$(OL):         rx > env:VersionDate "say '""'translate(date('E'),'.','/')'""'"         $(CC) WITH=$(CFILE) $(CLOWMEM) LISTFILE=$>$(LISTEXTL) OBJNAME=$@ $*.c         -Delete env:VersionDate# needed in amiga/amigazip.c# should be set in startup-sequence, but just in case:# (only works with OS 2.0 and above)env\:WorkBench:        @Execute < < (Workbench_smk.tmp)           FailAt 21           If not exists ENV:Workbench              Version >nil:              SetEnv Workbench $$Workbench           Endif        <# Read environment variable LOCAL_ZIP and convert options to SAS format## e.g.: to define FOO_ONE and FOO_TWO enter:## SetEnv LOCAL_ZIP "-DFOO_ONE -DFOO_TWO"## Put the statement into your startup-sequence or (for AmigaDOS 2.0 or higher# only) make sure LOCAL_ZIP is stored in the ENVARC: directory# ( Copy ENV:LOCAL_ZIP ENVARC: )#local_zip:        @Execute < < (Local_Zip_smk.tmp)           Failat 21           If exists ENV:LOCAL_ZIP              Echo "Using environment variable LOCAL_ZIP !"              Copy >NIL: ENV:LOCAL_ZIP SASCOPTS           Else              Echo "You could use envvar ZIP_OPT to set your special compilation options."              Delete >nil: SASCOPTS quiet           Endif           ; Do not remove the lctosc command! If LOCAL_ZIP is unset, an           ; empty file is created which needed by CommonFlags !           lctosc >$(CWITHOPT)        <# Echo request to the user#request:        @Echo ""        @Echo " This makefile is for use with SAS/C version 6.58."        @Echo " If you still have an older version, please upgrade!"        @Echo " Patches are available on the Aminet under biz/patch/sc\#?."        @Echo ""        @Echo " Just a simple request..."        @Echo " Please give me a mail that you compiled whether you encounter any errors"        @Echo " or not. I'd just like to know how many Amiga users actually make use of"        @Echo " this makefile."        @Echo " If you mail me, I'll put you on my mailing-list and notify you whenever"        @Echo " new versions of Info-Zip are released."        @Echo " Have a look at the makefile for changes like CPU type, UtilLib, etc."        @Echo " Feel free to mail comments, suggestions, etc."        @Echo " Enjoy Info-Zip !"        @Echo " Haidinger Walter, <walthaid@unix.ict.tuwien.ac.at>"        @Echo ""# Echo help in case of an error#.ONERROR:        @Echo ""        @Echo "[sigh] An error running this makefile was detected."        @Echo "This message may also appear if you interrupted smake by pressing CTRL-C."        @Echo "Contact Info-Zip authors at Zip-Bugs@lists.wku.edu or me for help."        @Echo "Haidinger Walter, <walthaid@unix.ict.tuwien.ac.at>"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -