Makefile.MSVC 17 KB

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