1# Makefile.MSVC: MSVC Makefile for LAME 2# 3# 2000-2010 Robert Hegemann 4# dedicated to the LAME project https://lame.sourceforge.io/ 5############################################################################### 6 7 8 9#__ readme ____________________________________________________________________ 10# nmake -f Makefile.MSVC 11# -> build lame, but not mp3x 12# -> use Robert's code modifications 13# -> assume MSVC 6.0 compiler available 14# -> assume NASM available 15# -> assemble MMX code with NASM 16# -> no compiler warnings 17# -> use single precision float 18# 19# passing arguments, one can modify the default behaviour: 20# COMP=<not INTEL or BCC> -> use MS compiler 21# WARN=<anything but OFF> -> give verbose compiler warnings 22# ASM=<anything but YES> -> no NASM nor MMX 23# MMX=<anything but YES> -> do not assemble MMX code 24# CFG=<anything but RH> -> disable Robert's modifications 25# CPU=P1 -> optimize for Pentium instead of P II/III 26# CPU=P2 -> optimize for Pentium II/III, you need a PII or better 27# CPU=P3 -> optimize for Pentium III, you need a PIII or better 28# GTK=YES -> have GTK, adds mp3x to default targets 29# PREC=<anything but SINGLE> -> use double instead of single float 30# SNDFILE=<anything but YES> -> do not use LibSndfile for reading input files 31# 32# Example: 33# nmake -f Makefile.MSVC CPU=P1 GTK=YES 34#____________________________________________________________________ readme __ 35 36 37 38# targets <-> DOS filenames 39 40T_LAME = lame.exe 41T_MP3X = mp3x.exe 42T_MP3RTP = mp3rtp.exe 43T_DLL = libmp3lame.dll 44T_LIB_DYNAMIC = libmp3lame.lib 45T_LIB_STATIC = libmp3lame-static.lib 46T_LEGACY_DLL = lame_enc.dll 47 48TARGET_DIR = .\output\ 49 50# default targets 51 52PGM = $(T_LAME) 53 54# some default settings 55 56! IF "$(MSVCVER)" != "" 57COMP = MS 58! IF "$(MSVCVER)" == "Win64" 59! IF "$(ASM)" == "" 60ASM = NO # or it could be ML64 if we want to use it... 61GTK = NO 62! ENDIF 63! ENDIF 64! ELSE 65! IF "$(COMP)" == "" 66COMP = MSVC 67! ENDIF 68! ENDIF 69 70! IF "$(ASM)" == "" 71ASM = YES 72! ENDIF 73 74! IF "$(MMX)" == "" 75MMX = YES 76! ENDIF 77 78! IF "$(CFG)" == "" 79CFG = RH 80! ENDIF 81 82! IF "$(CPU)" == "" 83CPU = P2auto 84!if "$(PROCESSOR_LEVEL)"=="6" 85CPU = P6 86!endif 87! ENDIF 88 89! IF "$(WARN)" == "" 90WARN = OFF 91! ENDIF 92 93! IF "$(PREC)" == "" 94PREC = SINGLE 95! ENDIF 96 97! IF "$(SNDFILE)" == "" 98SNDFILE = NO 99! ENDIF 100 101OFF = win32 102MACHINE = /machine:I386 103LIB_OPTS = /nologo $(MACHINE) 104 105! MESSAGE ---------------------------------------------------------------------- 106! IF "$(CFG)" == "" 107! MESSAGE building LAME 108! ELSE 109! MESSAGE building LAME featuring $(CFG) 110! ENDIF 111! IF "$(ASM)" == "YES" 112! MESSAGE + ASM 113! IF "$(MMX)" == "YES" 114! MESSAGE + MMX 115! ENDIF 116! ENDIF 117! IF "$(GTK)" == "YES" 118! MESSAGE + GTK 119! ENDIF 120! IF "$(COMP)" == "INTEL" 121! MESSAGE using INTEL COMPILER 122! IF "$(CPU)" == "P1" 123! MESSAGE + optimizing for Pentium (MMX) 124! ELSE 125! IF "$(CPU)" == "P2" 126! MESSAGE + you need a Pentium II or better 127! ELSE 128! IF "$(CPU)" == "P3" 129! MESSAGE + you need a Pentium III or better 130! ELSE 131! MESSAGE + optimizing for Pentium II/III 132! ENDIF 133! ENDIF 134! ENDIF 135! ELSE 136! IF "$(MSVCVER)" == "6.0" 137! MESSAGE + using MSVC 6.0 32-Bit Compiler 138! IF "$(CPU)" == "P1" 139! MESSAGE + optimizing for Pentium (MMX) (may slow down PIII a few percent) 140! ELSE 141! MESSAGE + optimizing for Pentium II/III 142! ENDIF 143! ELSEIF "$(MSVCVER)" == "8.0" 144! MESSAGE + using MSVC 8.0 32-Bit Compiler 145! IF "$(CPU)" == "P1" 146! MESSAGE + optimizing for Pentium (MMX) (may slow down PIII a few percent) 147! ELSE 148! MESSAGE + optimizing for Pentium II/III 149! ENDIF 150! ELSE 151! IF "$(MSVCVER)" == "Win64" 152! MESSAGE + using MS 64-Bit Compiler 153! ELSE 154! MESSAGE using MS COMPILER 155! IF "$(CPU)" == "P1" 156! MESSAGE + optimizing for Pentium (MMX) (may slow down PIII a few percent) 157! ELSE 158! MESSAGE + optimizing for Pentium II/III 159! ENDIF 160! ENDIF 161! ENDIF 162! ENDIF 163! IF "$(PREC)" == "SINGLE" 164! MESSAGE + using Single precision 165! ENDIF 166! IF "$(SNDFILE)" == "YES" 167! MESSAGE + using LibSndfile reading input files 168! ENDIF 169! MESSAGE ---------------------------------------------------------------------- 170 171! IF "$(COMP)" != "INTEL" 172! IF "$(COMP)" != "BCC" 173 174#__ Microsoft C options _______________________________________________________ 175# 176# /O2 maximize speed 177# /Ob<n> inline expansion 178# /Og enable global optimizations 179# /Oi enable intrinsic functions 180# /Ot favor code speed 181# /Oy enable frame pointer omission 182# /G5 Pentium optimization 183# /G6 Pentium II/III optimization 184# /GA optimize for Windows Application 185# /GF enable read-only string pooling 186# /Gf enable string spooling 187# /Gs disable stack checking calls 188# /Gy separate functions for linker 189# /QIfdiv generate code for Pentium FDIV fix 190# /QI0f generate code for Pentium 0x0f erratum fix 191# 192# remarks: 193# - aliasing options seem to break code 194# - try to get the Intel compiler demonstration code! 195# ICL produces faster code. 196 197# debugging options 198# CC_OPTS = /nologo /Zi /Ge /GZ 199# LN_OPTS = /nologo /debug:full /debugtype:cv /fixed:no 200 201# profiling options 202# CC_OPTS = /nologo /Zi /O2b2gity /G6As /DNDEBUG 203# LN_OPTS = /nologo /debug:full /debugtype:cv /fixed:no /profile 204 205# release options 206! IF "$(MSVCVER)" == "Win64" 207CC_OPTS = /nologo /DWin64 /O2b2ity /GAy /Gs1024 /Zp8 /GL /GS- /Zi 208! ELSEIF "$(MSVCVER)" == "8.0" 209CC_OPTS = /nologo /O2 /Wp64 /Oi /GL /arch:SSE /fp:precise 210! ELSEif "$(CPU)"=="P6" 211CC_OPTS = /nologo /O2 /Ob2 /GAy /Gs1024 /Zp8 /Zi 212!else 213CC_OPTS = /nologo /O2 /Ob2 /GAy /Gs1024 /QIfdiv /QI0f /YX 214! ENDIF 215 216! IF "$(MSVCVER)" == "6.0" 217! IF "$(CPU)" == "P1" 218CC_OPTS = $(CC_OPTS) /G5 219! ELSE 220CC_OPTS = $(CC_OPTS) /G6 221! ENDIF 222! ENDIF 223 224! IF "$(WARN)" == "OFF" 225CC_OPTS = $(CC_OPTS) /w 226! ELSE 227CC_OPTS = $(CC_OPTS) /W$(WARN) 228! ENDIF 229 230! IF "$(PREC)" == "SINGLE" 231CC_OPTS = $(CC_OPTS) /DFLOAT8=float /DREAL_IS_FLOAT=1 232! ENDIF 233 234# temporary remove NDEBUG, see configure.in 235#CC_OPTS = $(CC_OPTS) /DNDEBUG /MT 236CC_OPTS = $(CC_OPTS) /MT 237 238LN_OPTS = /nologo /pdb:none 239LN_DLL = /nologo /DLL 240 241CC_OUT = /Fo 242LN_OUT = /OUT: 243 244CC = cl 245LN = link 246 247#_______________________________________________________ Microsoft C options __ 248 249 250! ELSE 251 252#__ Borland BCC options _______________________________________________________ 253# 254# first draft, DLL not working, generates very slow code! 255BCCINST = C:/Borland/BCC55 256 257CC_OPTS = -pc -q -ff -fp -jb -j1 -tWC -tWM -O2 -OS -I$(BCCINST)/include -DNDEBUG -DWIN32 258# dll >> -tWD 259LN_OPTS = -lGn -lGi -lap -lx -L$(BCCINST)/lib 260# dll >> -Tpd 261! IF "$(CPU)" == "P1" 262CC_OPTS = $(CC_OPTS) -5 263! ELSE 264CC_OPTS = $(CC_OPTS) -6 265! ENDIF 266 267! IF "$(WARN)" == "OFF" 268CC_OPTS = $(CC_OPTS) -w- 269! ELSE 270CC_OPTS = $(CC_OPTS) 271! ENDIF 272 273LN_DLL = 274#$(CCINST)/lib/cw32R.lib 275LN_OUT = -e 276CC_OUT = -o 277 278CC = bcc32 279LN = bcc32 280 281OFF = obj 282 283! ENDIF 284#_______________________________________________________ Borland BCC options __ 285 286 287! ELSE 288 289#__ Intel 4.5 options _________________________________________________________ 290# 291# /YX enable automatic precompiled header file creation/usage 292# /Ox maximum optimization same as /O2 without /Gfy 293# /O2 same as /Gfsy /Ob1gyti 294# /Gd 1) make cdecl the default calling convention 295# /G5 2) optimized for Pentium 296# /G6 3) optimized for Pentium II/III 297# /GA assume single threaded 298# /Gs[n] disable stack checks for functions with <n bytes of locals 299# /GF read-only string pooling optimization 300# /Gy separate functions for the linker 301# /Qunroll unroll loops with default heuristic 302# /QIfist enable fast float to int conversion 303# /QIfdiv enable patch for Pentium with FDIV erratum 304# /QI0f enable patch for Pentium with 0f erratum 305# /Qip 2) enable single-file IP optimizations (within files) 306# /Qipo enable multi-file IP optimizations (between files) 307# /Qipo_wp 4) enable entire program multi-file IP optimizations 308# /QaxiMK automatic use of specialized code for PII/III, MMX, SIMD 309# 310# remarks: 311# 1) slows speed down, not using 312# 2) faster compared to 3) or 4) on Pentium MMX at 200 MHz 313 314! IF "$(CPU)" == "P1" 315CC_OPTS = /G5 /QaxiMK /QIfdiv /QI0f 316! ELSE 317! IF "$(CPU)" == "P2" 318CC_OPTS = /G6 /Qxi /QaxMK 319! ELSE 320! IF "$(CPU)" == "P3" 321CC_OPTS = /G6 /QxiMK 322! ELSE 323CC_OPTS = /G6 /QaxiMK /QIfdiv /QI0f 324! ENDIF 325! ENDIF 326! ENDIF 327 328! IF "$(WARN)" == "OFF" 329CC_OPTS = $(CC_OPTS) /w 330! ELSE 331CC_OPTS = $(CC_OPTS) /W2 /Wport 332! ENDIF 333 334! IF "$(PREC)" == "SINGLE" 335CC_OPTS = $(CC_OPTS) /DFLOAT8=float /DREAL_IS_FLOAT=1 336! ENDIF 337 338CC_OPTS = /nologo /DNDEBUG /YX /GA /Ox /Ob2 \ 339 /Qunroll /Qsox- /Qip $(CC_OPTS) 340 341 342LN_OPTS = $(CC_OPTS) 343LN_DLL = /LD 344LN_OUT = /Fe 345CC_OUT = /Fo 346 347CC = icl 348LN = icl 349#_________________________________________________________ Intel 4.5 options __ 350 351! ENDIF 352 353 354 355#__ LIBSNDFILE ________________________________________________________________ 356# 357# uncomment the following if you want LibSndfile for input 358# It's always a good idea to compile it in! 359# 360! IF "$(SNDFILE)" == "YES" 361SNDFILE_OPTS = /DLIBSNDFILE 362LIBSNDFILE = $(SNDFILE_DIR)libsndfile.lib 363! ENDIF 364#________________________________________________________________ LIBSNDFILE __ 365 366 367 368#-- MISC -- 369CPP_OPTS = /DHAVE_CONFIG_H -I. 370 371 372 373#__ FRAME ANALYZER SUPPORT ____________________________________________________ 374# 375# Assuming you have "glib-dev" and "gtk+-dev" installed and the system 376# DLLs "glib-1.3.dll", "gdk-1.3.dll" and "gtk-1.3.dll" copied into the 377# "Win\System" folder 378# 379# To compile in the frame analyzer support, you need the above mentioned 380# libraries. You can pass the appropriate path to them in GTK_DIRS. 381# 382! IF "$(GTK)" == "YES" 383! IF "$(GTK_DIRS)" == "" 384GTK_DIRS = ../3rdparty 385! ENDIF 386GTK_OPTS = -I$(GTK_DIRS)/glib \ 387 -I$(GTK_DIRS)/gtk+ \ 388 -I$(GTK_DIRS)/gtk+/gtk \ 389 -I$(GTK_DIRS)/gtk+/gdk 390GTK_LIBS = $(GTK_DIRS)/gtk+/gtk/gtk-1.3.lib \ 391 $(GTK_DIRS)/gtk+/gdk/gdk-1.3.lib \ 392 $(GTK_DIRS)/glib/glib-1.3.lib 393 394PGM = $(T_MP3X) $(PGM) 395! ELSE 396! IF "$(GTK)" == "" 397! MESSAGE Pass GTK=YES to build the frame analyzer. (requires installed GTK) 398! ENDIF 399! ENDIF 400#____________________________________________________ FRAME ANALYZER SUPPORT __ 401 402 403 404#__ HIP DECODING ______________________________________________________________ 405# 406# uncomment the following if you want decoding support 407# It's always a good idea to compile it in! 408# 409CPP_OPTS = $(CPP_OPTS) /DHAVE_MPGLIB 410#___________________________________________________________ HIP DECODING _____ 411 412 413 414#__ Takehiro's IEEE hack ______________________________________________________ 415# 416# uncomment the following to enable Takehiro's IEEE hack 417# You'll want it on a x86 machine with i387 FPU 418# 419CPP_OPTS = $(CPP_OPTS) /DTAKEHIRO_IEEE754_HACK 420#______________________________________________________ Takehiro's IEEE hack __ 421 422 423 424#__ Robert's alternate code ___________________________________________________ 425! IF "$(CFG)" == "RH" 426! IF "$(MSVCVER)" == "8.0" 427LIB_OPTS = $(LIB_OPTS) /LTCG 428LN_OPTS = $(LN_OPTS) /LTCG 429! ENDIF 430! ENDIF 431#___________________________________________________ Robert's alternate code __ 432 433 434 435CC_SWITCHES = $(CC_OPTS) $(SNDFILE_OPTS) \ 436 $(GTK_OPTS) /DBS_FORMAT=BINARY 437 438LN_SWITCHES = $(LN_OPTS) 439 440lame_sources = \ 441 frontend/lame_main.c 442 443mpx_sources = \ 444 frontend/gpkplotting.c \ 445 frontend/gtkanal.c \ 446 frontend/mp3x.c 447 448mp3rtp_sources = \ 449 frontend/rtp.c \ 450 frontend/mp3rtp.c 451 452dll_sources = \ 453 dll/BladeMP3EncDll.c 454 455common_sources = \ 456 frontend/main.c \ 457 frontend/get_audio.c \ 458 frontend/parse.c \ 459 frontend/timestatus.c \ 460 frontend/lametime.c \ 461 frontend/console.c \ 462 frontend/brhist.c 463 464lamelib_sources = \ 465 libmp3lame/bitstream.c \ 466 libmp3lame/encoder.c \ 467 libmp3lame/fft.c \ 468 libmp3lame/gain_analysis.c \ 469 libmp3lame/id3tag.c \ 470 libmp3lame/lame.c \ 471 libmp3lame/newmdct.c \ 472 libmp3lame/psymodel.c \ 473 libmp3lame/quantize.c \ 474 libmp3lame/quantize_pvt.c \ 475 libmp3lame/vector/xmm_quantize_sub.c \ 476 libmp3lame/set_get.c \ 477 libmp3lame/vbrquantize.c \ 478 libmp3lame/reservoir.c \ 479 libmp3lame/tables.c \ 480 libmp3lame/takehiro.c \ 481 libmp3lame/util.c \ 482 libmp3lame/mpglib_interface.c \ 483 libmp3lame/VbrTag.c \ 484 libmp3lame/presets.c \ 485 libmp3lame/version.c 486 487mpglib_sources = \ 488 mpglib/common.c \ 489 mpglib/dct64_i386.c \ 490 mpglib/decode_i386.c \ 491 mpglib/layer1.c \ 492 mpglib/layer2.c \ 493 mpglib/layer3.c \ 494 mpglib/tabinit.c \ 495 mpglib/interface.c 496 497 498!IF "$(MSVCVER)" == "Win64" 499ADDL_OBJ = bufferoverflowU.lib 500!ENDIF 501 502LIB_OBJ = $(lamelib_sources:.c=.obj) 503HIP_OBJ = $(mpglib_sources:.c=.obj) 504CMMN_OBJ = $(common_sources:.c=.obj) 505LAME_OBJ = $(lame_sources:.c=.obj) 506MPX_OBJ = $(mpx_sources:.c=.obj) 507MPRTP_OBJ = $(mp3rtp_sources:.c=.obj) 508DLL_OBJ = $(dll_sources:.c=.obj) 509 510.c.obj: 511 @$(CC) $(CPP_OPTS) $(CC_SWITCHES) -Iinclude -Ilibmp3lame -Impglib \ 512 $(CC_OUT)$@ -c $< 513 514 515#__ MASM ______________________________________________________________________ 516# 517# MASM: Microsoft Assembler 518# 519! IF "$(ASM)" == "ML64" 520# 521.SUFFIXES : .nas 522.nas.obj: 523 @echo $< 524 @ml64 -Ilibmp3lame\i386 -Sf -DWIN32 -DWIN64 $< -Fo$@ 525 526CC_SWITCHES = $(CC_SWITCHES) -DHAVE_NASM 527ASM_OBJ = $(ASM_OBJ) \ 528 libmp3lame\i386\cpu_feat.obj \ 529 libmp3lame\i386\fft3dn.obj \ 530 libmp3lame\i386\fftsse.obj 531 532# not yet coded 533#CC_SWITCHES = $(CC_SWITCHES) -DUSE_FFTFPU 534#ASM_OBJ = $(ASM_OBJ) libmp3lame\i386\fftfpu.obj 535#______________________________________________________________________ MASM __ 536 537 538#__ NASM ______________________________________________________________________ 539# 540# NASM: Netwide Assembler 541# 542! ELSEIF "$(ASM)" == "YES" 543# 544.SUFFIXES : .nas 545.nas.obj: 546 @echo $< 547 @nasmw -f $(OFF) -i libmp3lame/i386/ -DWIN32 $< -o $@ 548 549CC_SWITCHES = $(CC_SWITCHES) /DHAVE_NASM 550ASM_OBJ = $(ASM_OBJ) \ 551 libmp3lame\i386\cpu_feat.obj \ 552 libmp3lame\i386\fft3dn.obj \ 553 libmp3lame\i386\fftsse.obj 554 555# not yet coded 556#CC_SWITCHES = $(CC_SWITCHES) /DUSE_FFTFPU 557#ASM_OBJ = $(ASM_OBJ) libmp3lame/i386/fftfpu.obj 558#______________________________________________________________________ NASM __ 559 560! ELSE 561! MESSAGE Pass ASM=YES to build the assembler optimizations 562! ENDIF 563 564 565#__ MMX _______________________________________________________________________ 566# 567# you need NASM but *not necessarily* a processor with MMX 568# The above CPU feature detection code allows to run the same 569# binary on a CPU without MMX too! 570# 571! IF "$(ASM)" == "YES" 572! IF "$(MMX)" == "YES" 573CC_SWITCHES = $(CC_SWITCHES) /DMMX_choose_table 574ASM_OBJ = $(ASM_OBJ) libmp3lame/i386/choose_table.obj 575! ENDIF 576! ENDIF 577#_______________________________________________________________________ MMX __ 578 579! MESSAGE 580 581no_target_specified : $(PGM) 582 @echo. 583 @echo --=* $(PGM) uptodate *=-- 584 @echo. 585 586target_directory : 587 @if not exist $(TARGET_DIR) mkdir $(TARGET_DIR) 588 589common: $(CMMN_OBJ) 590 @echo. 591 @echo --- COMMON FRONTEND STUFF UPTODATE --- 592 @echo. 593 594libA: $(LIB_OBJ) 595 @echo. 596 @echo --- LAME MP3 ENCODING LIBRARY UPTODATE --- 597 @echo. 598 599libB: $(HIP_OBJ) 600 @echo. 601 @echo --- HIP DECODING LIBRARY UPTODATE --- 602 @echo. 603 604lib: $(ASM_OBJ) libA libB 605 606lame.res: ./libmp3lame/lame.rc 607 @rc.exe /d "NDEBUG" /d "_APP=lame.exe" /l 0x409 /fo"./frontend/lame.res" "./libmp3lame/lame.rc" 608 609mp3rtp.res: ./libmp3lame/lame.rc 610 @rc.exe /d "NDEBUG" /d "_APP=mp3rtp.exe" /l 0x409 /fo"./frontend/mp3rtp.res" "./libmp3lame/lame.rc" 611 612mp3x.res: ./libmp3lame/lame.rc 613 @rc.exe /d "NDEBUG" /d "_APP=mp3x.exe" /l 0x409 /fo"./frontend/mp3x.res" "./libmp3lame/lame.rc" 614 615lame_enc.res: ./libmp3lame/lame.rc 616 @rc.exe /d "NDEBUG" /d "_DLL=lame_enc.dll" /l 0x409 /fo"./frontend/lame_enc.res" "./libmp3lame/lame.rc" 617 618$(T_LAME) : target_directory config.h $(T_LIB_STATIC) common $(LAME_OBJ) lame.res 619 @$(LN) $(LN_OUT)$(TARGET_DIR)$@ $(LN_SWITCHES) $(LIBSNDFILE) \ 620 $(TARGET_DIR)$(T_LIB_STATIC) $(CMMN_OBJ) $(LAME_OBJ) $(ADDL_OBJ) \ 621 ./frontend/lame.res 622 @echo. 623 @echo --=* $(TARGET_DIR)$@ ready *=-- 624 @echo. 625 626$(T_MP3X) : target_directory config.h lib common $(MPX_OBJ) mp3x.res 627 @$(LN) $(LN_OUT)$(TARGET_DIR)$@ $(LN_SWITCHES) $(GTK_LIBS) $(LIBSNDFILE) \ 628 $(TARGET_DIR)$(T_LIB_STATIC) $(CMMN_OBJ) $(MPX_OBJ) $(ADDL_OBJ) \ 629 ./frontend/mp3x.res 630 @echo. 631 @echo --=* $(TARGET_DIR)$@ ready *=-- 632 @echo. 633 634$(T_MP3RTP) : target_directory config.h lib common $(MPRTP_OBJ) mp3rtp.res 635 @$(LN) $(LN_OUT)$(TARGET_DIR)$@ $(LN_SWITCHES) $(LIBSNDFILE) \ 636 $(TARGET_DIR)$(T_LIB_STATIC) $(CMMN_OBJ) $(MPRTP_OBJ) $(ADDL_OBJ) \ 637 ./frontend/mp3rtp.res wsock32.lib 638 @echo. 639 @echo --=* $(TARGET_DIR)$@ ready *=-- 640 @echo. 641 642$(T_LEGACY_DLL) : target_directory config.h $(DLL_OBJ) lame_enc.res 643 @$(LN) $(LN_OUT)$(TARGET_DIR)$@ $(LN_SWITCHES) \ 644 $(TARGET_DIR)$(T_LIB_STATIC) $(LN_DLL) \ 645 $(DLL_OBJ) $(ADDL_OBJ) ./frontend/lame_enc.res user32.lib 646 @echo. 647 @echo --=* $(TARGET_DIR)$@ ready *=-- 648 @echo. 649 650$(T_DLL) : target_directory config.h $(T_LIB_STATIC) 651 @$(LN) $(LN_DLL) $(MACHINE) \ 652 /DEF:"include\lame.def" \ 653 $(ADDL_OBJ) \ 654 $(LN_OUT)"$(TARGET_DIR)$@" \ 655 $(TARGET_DIR)$(T_LIB_STATIC) libmp3lame\version.obj 656 @echo. 657 @echo --=* $(TARGET_DIR)$@ ready *=-- 658 @echo. 659 660$(T_LIB_STATIC) : target_directory lib 661 @lib $(LIB_OPTS) \ 662 /OUT:"$(TARGET_DIR)$@" \ 663 $(ASM_OBJ) $(LIB_OBJ) $(HIP_OBJ) 664 @echo. 665 @echo --=* $(TARGET_DIR)$@ ready *=-- 666 @echo. 667 668config.h : configMS.h 669 @-copy configMS.h config.h 670 671clean: 672 @-del $(TARGET_DIR)$(T_LAME) 673 @-del $(TARGET_DIR)$(T_MP3X) 674 @-del $(TARGET_DIR)$(T_MP3RTP) 675 @-del $(TARGET_DIR)$(T_DLL) 676 @-del $(TARGET_DIR)$(T_LIB_STATIC) 677 @-del $(TARGET_DIR)$(T_LIB_DYNAMIC) 678 @-del $(TARGET_DIR)$(T_LEGACY_DLL) 679 @-del lame.pdb 680 @-del icl.pch 681 @-del $(TARGET_DIR)lame_enc.* 682 @-del frontend\*.obj 683 @-del dll\*.obj 684 @-del mpglib\*.obj 685 @-del libmp3lame\*.obj 686 @-del libmp3lame\i386\*.obj 687 @-del libmp3lame\vector\*.obj 688 @-del libmp3lame\*.res 689 @-del frontend\*.res 690 691 692rebuild: clean all 693 694 695lame : $(T_LAME) 696lame_enc: $(T_LEGACY_DLL) 697dll : $(T_DLL) $(T_LEGACY_DLL) 698mp3x : $(T_MP3X) 699mp3rtp : $(T_MP3RTP) 700 701 702all : $(PGM) mp3rtp dll lame_enc 703 @echo. 704 @echo --=* all uptodate *=-- 705 @echo. 706