**(Compile_Info.txt)*** This .exe was compiled with ICL 4.5 with the following options in a 3 step process: 1. "nmake -f Makefile.MSVC PROF_OPT=GEN OPT=ULTRA" 2. The created file was then run through some common functions such as encoding and decoding to generate a profile. 3. "nmake -f Makefile.MSVC PROF_OPT=USE OPT=ULTRA" This creates an .exe which uses profile guided optimization, which seems to allow a slight speed increase (2%-5%). This .exe should be as fast or perhaps slightly faster than Mitiok's "fast" compiles. *****(end of file)***** ****(Makefile.MSVC)**** # Makefile.MSVC: MSVC Makefile for LAME 3.88 # # 2000-11-21 Robert Hegemann e-mail: Robert.Hegemann@gmx.de # dedicated to the LAME project http://www.mp3dev.org ################################################## ############################# #__ readme __________________________________________________ __________________ # nmake -f Makefile.MSVC # -> build lame and dll, but not mp3x # -> use Robert's code modifications # -> assume INTEL compiler available # -> assume NASM available # -> assemble MMX code with NASM # -> optimize for PIII # -> single file optimizations # -> no compiler warnings # # passing arguments, one can modify the default behaviour: # COMP= -> use MS compiler # WARN= -> give verbose compiler warnings # VERBOSE_VEC= -> give verbose vectorization information for Intel Compiler # PROF_OPT= -> generate or use profile guided optimzations for Intel Compiler # OPT= -> different Intel optimizations # ASM= -> no NASM nor MMX # MMX= -> do not assemble MMX code # CFG= -> disable Robert's modifications # OGG= -> have Vorbis library, use it # CPU=P1 -> optimize for Pentium instead of P II/III # GTK=YES -> have GTK, adds mp3x to default targets # # Example: # nmake -f Makefile.MSVC CPU=P1 GTK=YES #_________________________________________________ ___________________ readme __ # targets <-> DOS filenames T_LAME = lame.exe T_LDLL = lame_enc.dll T_MP3X = mp3x.exe # default targets PGM = $(T_LDLL) $(T_LAME) # some default settings ! IF "$(COMP)" == "" COMP = INTEL ! ENDIF ! IF "$(ASM)" == "" ASM = YES ! ENDIF ! IF "$(MMX)" == "" MMX = YES ! ENDIF ! IF "$(CFG)" == "NO-ALTERNATE-CODE-AVAILABLE" CFG = RH ! ENDIF ! IF "$(CPU)" == "" CPU = P3 ! ENDIF ! IF "$(OPT)" == "" OPT = NORMAL ! ENDIF ! IF "$(WARN)" == "" WARN = OFF ! ENDIF ! IF "$(VERBOSE_VEC)" == "" VEC = OFF ! ENDIF ! IF "$(PROF_OPT)" == "" PROF_OPT = OFF ! ENDIF OFF = win32 ! MESSAGE ---------------------------------------------------------------------- ! MESSAGE building LAME featuring $(CFG) ! IF "$(ASM)" == "YES" ! MESSAGE + ASM ! IF "$(MMX)" == "YES" ! MESSAGE + MMX ! ENDIF ! ENDIF ! IF "$(GTK)" == "YES" ! MESSAGE + GTK ! ENDIF ! IF "$(OGG)" != "" ! MESSAGE + Ogg-Vorbis ! ENDIF ! IF "$(COMP)" == "INTEL" ! MESSAGE using INTEL COMPILER ! IF "$(PROF_OPT)" == "GEN" ! MESSAGE + compiling profile generating binary ! ENDIF ! IF "$(PROF_OPT)" == "USE" ! MESSAGE + compiling binary using pre-generated profile ! ENDIF ! IF "$(OPT)" == "NORMAL" ! MESSAGE + perform single-file optimizations ! ENDIF ! IF "$(OPT)" == "EXTRA" ! MESSAGE + perform multi-file optimizations ! ENDIF ! IF "$(OPT)" == "ULTRA" ! MESSAGE + perform multi-file optimizations over entire program ! ENDIF ! ELSE ! MESSAGE using MS COMPILER ! ENDIF ! IF "$(CPU)" == "P1" ! MESSAGE + optimizing for Pentium (MMX) (may slow down PIII a few percent) ! ELSE ! MESSAGE + optimizing for Pentium II/III (slows down Pentium a few percent) ! ENDIF ! MESSAGE ---------------------------------------------------------------------- ! IF "$(COMP)" != "INTEL" ! IF "$(COMP)" != "BCC" #__ Microsoft C options __________________________________________________ _____ # # /O2 maximize speed # /Ob inline expansion # /Og enable global optimizations # /Oi enable intrinsic functions # /Ot favor code speed # /Oy enable frame pointer omission # /G5 Pentium optimization # /G6 Pentium II/III optimization # /GA optimize for Windows Application # /GF enable read-only string pooling # /Gf enable string spooling # /Gs disable stack checking calls # /Gy separate functions for linker # /QIfdiv generate code for Pentium FDIV fix # /QI0f generate code for Pentium 0x0f erratum fix # # remarks: # - aliasing options seem to break code # - try to get the Intel compiler demonstration code! # ICL produces faster code. # debugging options # CC_OPTS = /nologo /Zi /Ge /GZ # LN_OPTS = /nologo /debug:full /debugtype:cv /fixed:no # profiling options # CC_OPTS = /nologo /Zi /O2b2gity /G6As /DNDEBUG # LN_OPTS = /nologo /debug:full /debugtype:cv /fixed:no /profile # release options CC_OPTS = /nologo /DNDEBUG /O2 /Ob2 /GAy /Gs1024 /QIfdiv /QI0f /YX LN_OPTS = /nologo /DNDEBUG ! IF "$(CPU)" == "P1" CC_OPTS = $(CC_OPTS) /G5 ! ELSE CC_OPTS = $(CC_OPTS) /GX ! ENDIF ! IF "$(WARN)" == "OFF" CC_OPTS = $(CC_OPTS) /w ! ELSE CC_OPTS = $(CC_OPTS) /W2 /Wport ! ENDIF LN_DLL = /LD LN_OUT = /Fe CC_OUT = /Fo CC = cl LN = cl #_________________________________________________ ______ Microsoft C options __ ! ELSE #__ Borland BCC options __________________________________________________ _____ # # first draft, DLL not working, generates very slow code! BCCINST = C:/Borland/BCC55 CC_OPTS = -pc -q -ff -fp -jb -j1 -tWC -tWM -O2 -OS -I$(BCCINST)/include -DNDEBUG -DWIN32 # dll >> -tWD LN_OPTS = -lGn -lGi -lap -lx -L$(BCCINST)/lib # dll >> -Tpd ! IF "$(CPU)" == "P1" CC_OPTS = $(CC_OPTS) -5 ! ELSE CC_OPTS = $(CC_OPTS) -6 ! ENDIF ! IF "$(WARN)" == "OFF" CC_OPTS = $(CC_OPTS) -w- ! ELSE CC_OPTS = $(CC_OPTS) ! ENDIF LN_DLL = #$(CCINST)/lib/cw32R.lib LN_OUT = -e CC_OUT = -o CC = bcc32 LN = bcc32 OFF = obj PGM = $(T_LAME) ! ENDIF #_________________________________________________ ______ Borland BCC options __ ! ELSE #__ Intel 4.5 options __________________________________________________ _______ # # /YX enable automatic precompiled header file creation/usage # /Ox maximum optimization same as /O2 without /Gfy # /O2 same as /Gfsy /Ob1gyti # /Gd 1) make cdecl the default calling convention # /G5 2) optimized for Pentium # /G6 3) optimized for Pentium II/III # /GA assume single threaded # /Gs[n] disable stack checks for functions with