User Tools

Site Tools


build:compiling_avidemux

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
build:compiling_avidemux [2010/04/14 04:01]
j.m
build:compiling_avidemux [2010/04/17 09:00]
j.m
Line 63: Line 63:
   - <​code>​cmake .</​code>​ (the dot is required)   - <​code>​cmake .</​code>​ (the dot is required)
   - <​code>​make</​code>​   - <​code>​make</​code>​
- 
-For more information,​ see the [[http://​www.avidemux.org/​admForum/​viewtopic.php?​id=3281|Switch to CMAKE in progress]] thread in the Avidemux forum. 
  
 === Old method (Avidemux 2.3 and older) === === Old method (Avidemux 2.3 and older) ===
Line 273: Line 271:
 == MinGW == == MinGW ==
  
-  - Extract the contents of each MinGW tarball (binutils, gcc-core, gcc-g++, mingw-runtime,​ mingw-utils,​ w32api) to a folder on your hard-drive, e.g. C:DevMinGW.+  - Extract the contents of each MinGW tarball (binutils, gcc-core, gcc-g++, mingw-runtime,​ mingw-utils,​ w32api) to a folder on your hard-drive, e.g. <​nowiki>​C:\Dev\MinGW</​nowiki>​.
  
 == MSYS == == MSYS ==
  
-  - Run the MSYS installer (e.g. MSYS-1.0.11-2004.04.30-1.exe) and follow the install wizard. ​ Choose an appropriate destination folder, e.g. C:Devmsys.+  - Run the MSYS installer (e.g. MSYS-1.0.11-2004.04.30-1.exe) and follow the install wizard. ​ Choose an appropriate destination folder, e.g. <​nowiki>​C:\Dev\msys</​nowiki>​.
   - Agree to the post install process.   - Agree to the post install process.
   - State that MinGW is installed.   - State that MinGW is installed.
Line 299: Line 297:
 == Netwide Assembler == == Netwide Assembler ==
  
-  - Extract the contents of the NASM zip file to an appropriate folder, e.g. C:​Program ​FilesNasm.+  - Extract the contents of the NASM zip file to an appropriate folder, e.g. <​nowiki>​C:\Program ​Files\Nasm</​nowiki>​.
   - Make a copy of **nasmw.exe** and rename it to **nasm.exe** in the Nasm folder. ​ (The optional components expect the filename to be nasm.exe but the Win32 version of NASM has a filename of nasmw.exe)   - Make a copy of **nasmw.exe** and rename it to **nasm.exe** in the Nasm folder. ​ (The optional components expect the filename to be nasm.exe but the Win32 version of NASM has a filename of nasmw.exe)
   - Copy **nasm.exe** to the MinGW **bin** folder.   - Copy **nasm.exe** to the MinGW **bin** folder.
Line 316: Line 314:
   - Choose the **Directories** tab.   - Choose the **Directories** tab.
   - Select **Executable Files** from the **Show Directories For** dropdown box.   - Select **Executable Files** from the **Show Directories For** dropdown box.
-  - Add the path for NASM, e.g. C:​Program ​FilesNasm.+  - Add the path for NASM, e.g. <​nowiki>​C:\Program ​Files\Nasm</​nowiki>​.
  
 === Downloading source code from SVN === === Downloading source code from SVN ===
Line 328: Line 326:
   - Click **OK** to download the source code.   - Click **OK** to download the source code.
  
-==== Avidemux ​Dependencies ​====+==== Avidemux ​dependencies ​====
  
 === Download Dependencies === === Download Dependencies ===
Line 374: Line 372:
 |:::                       ​|libsdl-dev ​               |SDL-devel-1.2.11-VC6.zip ​ |:::                                                            | |:::                       ​|libsdl-dev ​               |SDL-devel-1.2.11-VC6.zip ​ |:::                                                            |
 |Xvid                      |xvid                      |xvidcore-1.1.2.tar.gz ​    ​|[[http://​www.xvid.org/​|Xvid website]] ​                         | |Xvid                      |xvid                      |xvidcore-1.1.2.tar.gz ​    ​|[[http://​www.xvid.org/​|Xvid website]] ​                         |
 +
 +=== Install Dependencies ===
 +
 +== Expat ==
 +
 +  - Extract the files **xmlparse.dll** and **xmltok.dll** from the expat zip file to the MinGW **bin** folder.
 +  - Copy **xmlparse.dll** as **libexpat.dll**.
 +
 +== GTK+ ==
 +
 +  - Extract the contents of each zip file (atk, atk-dev, cairo, cairo-dev, fontconfig, fontconfig-dev,​ freetype, freetype-lib,​ gettext, gettext-dev,​ glib, glib-dev, gtk+, gtk+-dev, libiconv, libpng, libpng-lib, pango, pango-dev) to the MinGW folder.
 +
 +== Libxml2 ==
 +
 +  - Extract the contents of the libxml2 zip file to a temporary folder.
 +  - Move the libxml2 **bin**, **include** and **lib** folders to the corresponding MinGW folders.
 +
 +== Netscape Portable Runtime ==
 +
 +  - Extract the contents of the nspr zip file to a folder, e.g. <​nowiki>​C:​\Dev</​nowiki>​.
 +  - Copy **libnspr4.dll** from the NSPR **lib** folder to the MinGW **bin** folder.
 +
 +== Pthreads-w32 v1 ==
 +
 +  - Run the Pthreads-w32 exe to extract required files to a temporary folder.
 +  - Copy the contents of the **Pre-built.1include** folder to the MinGW **include** folder.
 +  - Copy all **a** and **lib** files from the **Pre-built.1lib** folder to the MinGW **lib** folder.
 +  - Copy all **dll** files from the **Pre-built.1lib** folder to the MinGW **bin** folder.
 +
 +== Zlib ==
 +
 +  - Extract the contents of the zlib zip file to the MinGW folder.
 +  - Copy **zdll.lib** in the MinGW **lib** folder as **z.lib**.
 +  - Move **zlib1.dll** from the MinGW folder to the MinGW **bin** folder.
 +
 +== SpiderMonkey ==
 +
 +  - Extract the contents of the tarball to a folder, e.g. <​nowiki>​C:​\Dev</​nowiki>​.
 +  - Build Spidermonkey using Microsoft Visual C++ or MinGW:
 +
 +//Using Microsoft Visual C++ 6.0://
 +    * a. Open the **js.mak** file in the Spridermonkey **src** folder with a text editor.
 +    * b. Update the compiler options to refer to the Netscape Portable Runtime by replacing all occurrences of: <​code>​CPP_PROJ=</​code>​ with (includes a trailing space): <​code>​CPP_PROJ=/​I c:​\devnspr-4.4.1\include /D "​JS_THREADSAFE" ​ </​code>​
 +    * c. Update the linker options to refer to the Netscape Portable Runtime by replacing all occurrences of: <​code>​LINK32_FLAGS=</​code>​ with (includes a trailing space): <​code>​LINK32_FLAGS=/​libpath:​c:​devnspr-4.4.1lib libnspr4.lib  </​code>​
 +    * d. Save the file and close the editor.
 +    * e. Start a command prompt and run **VCVARS32.BAT** from the Visual C++ **bin** folder. <​code>"​C:​\Program Files\Microsoft Visual StudioVC98\Bin\VCVARS32.BAT"</​code>​
 +    * f. Change directory to the Spidermonkey **src** folder. <​code>​cdDevjssrc</​code>​
 +    * g. Run **NMAKE** on **js.mak** using the **jsshell – Win32 Release** configuration. <​code>​nmake /f js.mak CFG="​jsshell - Win32 Release"</​code>​
 +    * h. Close the command prompt.
 +    * i. Start MSYS.
 +    * j. Change directory to the Spidermonkey **srcRelease** folder. <​code>​cd /​c/​Dev/​js/​src/​Release</​code>​
 +    * k. Using **pexports**,​ create a module-definition file for the newly created **js32.dll**:​ <​code>​pexports js32.dll > js32.def</​code>​
 +    * l. Use **dlltool** to produce a **libjs** import library. <​code>​dlltool -d js32.def -l /​mingw/​lib/​libjs.a</​code>​
 +    * m. Move **js32.dll** to the MinGW **bin** folder. <​code>​mv js32.dll /​mingw/​bin</​code>​
 +    * n. Close MSYS.
 +
 +//Using MinGW://
 +
 +    * a. Create a text file named **makefile** in the Spidermonkey **src/​fdlibm** folder.
 +    * b. Paste the following script into **makefile**:​ <code make># Project: fdlibm
 +CC = gcc.exe
 +SRCDIR = /​c/​dev/​js/​src/​fdlibm
 +
 +OBJECTS= \
 +$(SRCDIR)/​w_sqrt.o \
 +$(SRCDIR)/​e_pow.o \
 +$(SRCDIR)/​e_sqrt.o \
 +$(SRCDIR)/​k_standard.o \
 +$(SRCDIR)/​s_atan.o \
 +$(SRCDIR)/​s_finite.o \
 +$(SRCDIR)/​s_isnan.o \
 +$(SRCDIR)/​s_matherr.o \
 +$(SRCDIR)/​s_rint.o \
 +$(SRCDIR)/​s_scalbn.o \
 +$(SRCDIR)/​w_atan2.o \
 +$(SRCDIR)/​e_atan2.o \
 +$(SRCDIR)/​s_fabs.o \
 +$(SRCDIR)/​s_copysign.o \
 +$(SRCDIR)/​w_pow.o \
 +$(SRCDIR)/​s_lib_version.o
 +
 +LIBS = -llibm
 +BIN  = fdlibm.lib
 +CFLAGS = -DJS_THREADSAFE -D_IEEE_LIBM -DWIN32 -D_WINDOWS -s
 +.c.o: $(CC) -c $(CFLAGS) -o $@ $*.c
 +
 +$(BIN): $(OBJECTS)
 + ar r $(BIN) $(OBJECTS)
 + ranlib $(BIN)</​code>​
 +    * c. Make sure all indentations in the script are tabbed and not spaced. ​ Also ensure **SRCDIR** is correctly set to the Spridermonkey **srcfdlibm** folder.
 +    * d. Create a text file named **makefile** in the Spidermonkey **src** folder.
 +    * e. Paste the following script into **makefile**:<​code make># Project: js32
 +
 +CC   = gcc.exe
 +WINDRES = windres.exe
 +RES  = js.res
 +SRCDIR = /​c/​dev/​js/​src
 +OBJECTS = \
 +    $(SRCDIR)/​jsapi.o \
 +    $(SRCDIR)/​jsarena.o \
 +    $(SRCDIR)/​jsarray.o \
 +    $(SRCDIR)/​jsatom.o \
 +    $(SRCDIR)/​jsbool.o \
 +    $(SRCDIR)/​jscntxt.o \
 +    $(SRCDIR)/​jsdate.o \
 +    $(SRCDIR)/​jsdbgapi.o \
 +    $(SRCDIR)/​jsdhash.o \
 +    $(SRCDIR)/​jsdtoa.o \
 +    $(SRCDIR)/​jsemit.o \
 +    $(SRCDIR)/​jsexn.o \
 +    $(SRCDIR)/​jsfun.o \
 +    $(SRCDIR)/​jsgc.o \
 +    $(SRCDIR)/​jshash.o \
 +    $(SRCDIR)/​jsinterp.o \
 +    $(SRCDIR)/​jslock.o \
 +    $(SRCDIR)/​jslog2.o \
 +    $(SRCDIR)/​jslong.o \
 +    $(SRCDIR)/​jsmath.o \
 +    $(SRCDIR)/​jsnum.o \
 +    $(SRCDIR)/​jsobj.o \
 +    $(SRCDIR)/​jsopcode.o \
 +    $(SRCDIR)/​jsparse.o \
 +    $(SRCDIR)/​jsprf.o \
 +    $(SRCDIR)/​jsregexp.o \
 +    $(SRCDIR)/​jsscan.o \
 +    $(SRCDIR)/​jsscope.o \
 +    $(SRCDIR)/​jsscript.o \
 +    $(SRCDIR)/​jsstr.o \
 +    $(SRCDIR)/​jsutil.o \
 +    $(SRCDIR)/​jsxdrapi.o \
 +    $(SRCDIR)/​prmjtime.o \
 +    $(RES)
 +
 +LIBS =  --add-stdcall-alias -lfdlibm -lnspr4 -L./fdlibm -L/​c/​dev/​nspr-4.4.1/​lib
 +BIN  = js.dll
 +CFLAGS = -I/​dev/​nspr-4.4.1/​include -DJS_THREADSAFE -DXP_WIN \
 +-DEXPORT_JS_API -D_WINDOWS -DWIN32 -D_MINGW -s
 +
 +DLLWRAP=dllwrap.exe
 +DEFFILE=libjs.def
 +STATICLIB=libjs.a
 +.c.o: $(CC) -c $(CFLAGS) -o $@ $*.c
 +
 +$(BIN): $(OBJECTS)
 + $(CC) -shared -o $@ \
 + -Wl,​--output-def,​$(DEFFILE) \
 + -Wl,​--out-implib,​$(STATICLIB) \
 + $(OBJECTS) \
 + $(LIBS)
 +
 +$(RES): ​
 + $(WINDRES) -i $(SRCDIR)/​js3240.rc -I rc -o $(RES) -O coff</​code>​
 +
 +    * f. Make sure all indentations in the script are tabbed and not spaced. ​ Also ensure **LIBS** and **CFLAGS** are correctly set to the appropriate Netscape Portable Runtime subdirectories and **SRCDIR** is correctly set to the Spridermonkey **src** folder.
 +    * g. Start MSYS.
 +    * Make the fdlibm library. <​code>​cd /​c/​Dev/​js/​src/​fdlibm
 +make</​code>​
 +    * i. Make the SpiderMonkey library. <​code>​cd /​c/​Dev/​js/​src
 +make
 +strip –-strip-all js.dll</​code>​
 +    * j. Move **js.dll** to the MinGW **bin** folder and **libjs.a** to the MinGW **lib** folder. <​code>​mv /​c/​Dev/​js/​src/​js.dll /mingw/bin
 +mv /​c/​Dev/​js/​src/​libjs.a /​mingw/​lib</​code>​
 +    * k. Close MSYS.
 +    *
 +
 +===Install optional libraries===
 +
 +== Aften ==
 +
 +  - Extract the contents of the Aften zip file to a temporary folder, e.g. <​nowiki>​C:​\Dev</​nowiki>​.
 +  - Move the Aften **bin**, **include** and **lib** subdirectories to the corresponding MinGW folders.
 +  - Open the file **aften.h** in the MinGW **include** folder with a text editor.
 +  - Fix the incorrect usage of a reserved word by replacing: <code cpp>void *private;</​code>​ with: <code cpp>void *_private;</​code>​
 +  - 5. Save the file and close the editor.
 +
 +If you prefer to use a DLL rather than linking to a static library, also follow these steps:
 +
 +  - Start MSYS.
 +  - Change directory to the MinGW **lib** folder. <​code>​cd /​mingw/​lib</​code>​
 +  - Create **aften.dll** from the **libaften.a** static library. <​code>​a2dll libaften.a -o aften.dll</​code>​
 +  - Remove all unnecessary symbols from aften.dll. <​code>​strip --strip-all aften.dll</​code>​
 +  - Using **pexports**,​ create a module-definition file for the Aften runtime: <​code>​pexports aften.dll > aften.def</​code>​
 +  - Use **dlltool** to produce a Aften import library. <​code>​dlltool -d aften.def -l libaften.a</​code>​
 +  - Move **aften.dll** to the MinGW **bin** folder. <​code>​mv aften.dll /​mingw/​bin</​code>​
 +  - 8. Close MSYS.
 +
 +== FAAC ==
 +
 +  - Extract the contents of the faac zip file to a temporary folder, e.g. <​nowiki>​C:​\Dev</​nowiki>​.
 +  - Open the header files **libfaac\frame.h** and **include\faac.h** with a text editor.
 +  - Replace the following line in both files: <code cpp>#​define FAACAPI __stdcall</​code>​ with: <code cpp>#​define FAACAPI __cdecl</​code>​
 +  - Save both files and close the editor.
 +  - Copy ***.h** in the FAAC **include** folder to the MinGW **include** folder.
 +  - Build FAAC using Microsoft Visual C++ or MinGW:
 +
 +//Using Microsoft Visual C++ 6.0://
 +
 +    * a. Open the file **libfaac_dll.dsw** in the FAAC **libfaac** folder using Microsoft Visual C++ 6.0.
 +    * b. Add Source Files that are missing from the project and remove Source File that no longer exist (add kiss_fft\ kiss_fft.c, kiss_fft\ kiss_fftr.c).
 +    * c. Choose **Set Active Configuration** from the **Build** menu.
 +    * d. Choose the **libfaac_dll – Win32 Release** project configuration.
 +    * e. Choose **Settings** from the **Project** menu.
 +    * f. Choose the **C/C++** tab.
 +    * g. Select **Preprocessor** from the **Category** dropdown box.
 +    * h. Add **..\include** to the **Additional include directories**.
 +    * i. Click the **OK** button.
 +    * j. Choose **Build libfaac.dll** from the **Build** menu.
 +    * k. Close Microsoft Visual C++.
 +    * l. Copy **libfaac.dll** in the FAAC **libfaac\ReleaseDLL** folder to the MinGW **bin** folder.
 +    * m. Start MSYS.
 +    * n. Using **pexports**,​ create a module-definition file for the FAAC runtime: <​code>​pexports /​mingw/​bin/​libfaac.dll > libfaac.def</​code>​
 +    * o. Use dlltool to produce a FAAC import library. <​code>​dlltool -d libfaac.def -l /​mingw/​lib/​libfaac.a</​code>​
 +    * p. Close MSYS.
 +
 +//Using MinGW://
 +
 +    * a. Start MSYS.
 +    * b. Change directory to the FAAC **libfaac** folder. <​code>​cd /​c/​Dev/​faac/​libfaac</​code>​
 +    * c. Compile source code and link **libfaac.dll**. <​code>​gcc –s –O3 –shared -I../​include *.c -o /​mingw/​bin/​libfaac.dll -Wl,​--out-implib,/​mingw/​lib/​libfaac.a –Wl,​--add-stdcall-alias</​code>​
 +    * d. Close MSYS.
 +
 +== FAAD ==
 +
 +  - Extract the contents of the FAAD zip file to a temporary folder, e.g. <​nowiki>​C:​\Dev</​nowiki>​.
 +  - Copy ***.h** in the FAAD **include** folder to the MinGW **include** folder.
 +  - Build FAAD using Microsoft Visual C++ or MinGW:
 +
 +//Using Microsoft Visual C++ 6.0://
 +
 +    * a. Open the file **libfaad2_dll.dsw** in the FAAD **libfaad** folder using Microsoft Visual C++ 6.0.
 +    * b. Remove **dither.c** from the project as it no longer exists.
 +    * c. Update **libfaad2.def** to the following:<​code>​LIBRARY ​ libfaad2.dll
 +EXPORTS
 +;
 +; libfaad exports
 +;
 +NeAACDecOpen ​                     @1
 +NeAACDecGetCurrentConfiguration ​  @2
 +NeAACDecSetConfiguration ​         @3
 +NeAACDecInit ​                     @4
 +NeAACDecInit2 ​                    @5
 +NeAACDecDecode ​                   @6
 +NeAACDecClose ​                    @7
 +NeAACDecGetErrorMessage ​          @8
 +NeAACDecAudioSpecificConfig ​      @9
 +NeAACDecPostSeekReset ​            ​@10</​code>​
 +    * d. Choose **Set Active Configuration** from the **Build** menu.
 +    * e. Choose the **libfaad_dll – Win32 Release** project configuration.
 +    * f. Choose **Build libfaad2.dll** from the **Build** menu.
 +    * g. Close Microsoft Visual C++.
 +    * h. Copy **libfaad2.dll** in the FAAD **libfaad\ReleaseDLL** folder to the MinGW **bin** folder.
 +    * i. Start MSYS.
 +    * j. Using **pexports**,​ create a module-definition file for the FAAD runtime: <​code>​pexports /​mingw/​bin/​libfaad2.dll > libfaad.def</​code>​
 +    * k. Use **dlltool** to produce a FAAD import library. <​code>​dlltool -d libfaad.def -l /​mingw/​lib/​libfaad.a</​code>​
 +    * l. Close MSYS.
 +
 +//Using MinGW://
 +
 +    * a. Start MSYS.
 +    * b. Change directory to the FAAD **libfaad** folder. <​code>​cd /​c/​Dev/​faad2/​libfaad</​code>​
 +    * c. Compile source code and link **libfaad2.dll**. <​code>​gcc –s –O3 -DHAVE_MEMCPY=1 -DHAVE_STRING_H=1 –DHAVE_STDINT_H=1 -I"​."​ *.c -shared -o /​mingw/​bin/​libfaad2.dll -Wl,​--out-implib,/​mingw/​lib/​libfaad.a</​code>​
 +    * d. Close MSYS.
 +
 +== LAME ==
 +
 +  - Extract the contents of the lame tarball to a temporary folder, e.g. <​nowiki>​C:​\Dev</​nowiki>​.
 +  - Start MSYS.
 +  - Change directory to the lame folder. <​code>​cd /​c/​dev/​lame-3.97</​code>​
 +  - Execute the following commands: <​code>​./​configure --prefix=/​mingw
 +make
 +make install</​code>​
 +  - Remove all unnecessary symbols from libmp3lame-0.dll. <​code>​strip --strip-all /​mingw/​bin/​libmp3lame-0.dll</​code>​
 +  - Close MSYS.
 +
 +== Libdca ==
 +
 +  - Extract the contents of the libdca tarball to a temporary folder, e.g. <​nowiki>​C:​\Dev</​nowiki>​.
 +  - Start MSYS.
 +  - Change directory to the libdca folder. <​code>​cd /​c/​dev/​libdts-0.0.2</​code>​
 +  - Execute the following commands: <​code>​./​configure --prefix=/​mingw
 +make
 +make install</​code>​
 +  - Close MSYS.
 +  - Copy **dts_internal.h** in the **libdts** folder to the MinGW **include** folder.
 +
 +If you prefer to use a DLL rather than linking to a static library, also follow these steps:
 +
 +  - Start MSYS.
 +  - Change directory to the MinGW **lib** folder. <​code>​cd /​mingw/​lib</​code>​
 +  - Create **dts.dll** from the **libdts.a** static library. <​code>​a2dll libdts.a -o dts.dll</​code>​
 +  - Remove all unnecessary symbols from dts.dll. <​code>​strip --strip-all dts.dll</​code>​
 +  - Using **pexports**,​ create a module-definition file for the dts runtime: <​code>​pexports dts.dll > dts.def</​code>​
 +  - Use **dlltool** to produce a dts import library. <​code>​dlltool -d dts.def -l libdts.a</​code>​
 +  - Move **dts.dll** to the MinGW **bin** folder. <​code>​mv dts.dll /​mingw/​bin</​code>​
 +  - 8. Close MSYS.
 +
 +== Ogg Vorbis ==
 +
 +  - Extract the contents of the Ogg and Vorbis zip files to the same temporary folder, e.g. <​nowiki>​C:​\Dev</​nowiki>​.
 +  - Build Ogg Vorbis using Microsoft Visual C++ or MinGW:
 +
 +//Using Microsoft Visual C++ 6.0://
 +
 +    * a. Rename the Ogg folder to **ogg**.
 +    * b. Open the file **ogg.dsw** in the Ogg **win32** folder using Microsoft Visual C++ 6.0.
 +    * c. Choose **Set Active Configuration** from the **Build** menu.
 +    * d. Choose the **ogg_dynamic – Win32 Release** project configuration.
 +    * e. Choose **Build ogg.dll** from the **Build** menu.
 +    * f. Close Microsoft Visual C++.
 +    * g. Copy **ogg.dll** in the Ogg **win32\Dynamic_Release** folder to the MinGW **bin** folder.
 +    * h. Copy the Ogg **include\ogg** folder to the MinGW **include** folder.
 +    * i. Open the file **vorbis.dsw** in the Vorbis **win32** folder using Microsoft Visual C++ 6.0.
 +    * j. Choose **Set Active Configuration** from the **Build** menu.
 +    * k. Choose the **vorbis_dynamic – Win32 Release** project configuration.
 +    * l. Choose **Build vorbis.dll** from the **Build** menu.
 +    * m. Repeat steps j – l to build **vorbisenc.dll** and **vorbisfile.dll** using the **vorbisenc_dynamic – Win32 Release** and **vorbisfile_dynamic – Win32 Release** project configurations.
 +    * n. Close Microsoft Visual C++.
 +    * o. Copy **vorbis.dll** in the Vorbis **win32\Vorbis_Dynamic_Release** folder to the MinGW **bin** folder.
 +    * p. Copy **vorbisenc.dll** in the Vorbis **win32\VorbisEnc_Dynamic_Release** folder to the MinGW **bin** folder.
 +    * q. Copy **vorbisfile.dll** in the Vorbis **win32\VorbisFile_Dynamic_Release** folder to the MinGW **bin** folder.
 +    * Copy the Vorbis **include\vorbis** folder to the MinGW **include** folder. ​
 +    * s. Start MSYS.
 +    * t. Using **pexports**,​ create a module-definition file for the Ogg Vorbis runtimes: <​code>​pexports /​mingw/​bin/​vorbis.dll > vorbis.def
 +pexports /​mingw/​bin/​vorbisenc.dll > vorbisenc.def</​code>​
 +    * u. Use **dlltool** to produce Ogg Vorbis import libraries. <​code>​dlltool -d vorbis.def -l /​mingw/​lib/​libvorbis.a
 +dlltool -d vorbisenc.def -l /​mingw/​lib/​libvorbisenc.a</​code>​
 +    * v. Close MSYS.
 +
 +//Using MinGW://
 +
 +    * a. Start MSYS.
 +    * b. Change directory to the Ogg folder. <​code>​cd /​c/​dev/​libogg-1.1.3</​code>​
 +    * c. Execute the following commands: <​code>​./​configure --prefix=/​mingw
 +make
 +make install</​code>​
 +    * d. Change directory to the Vorbis folder. <​code>​cd /​c/​dev/​libvorbis-1.1.2</​code>​
 +    * e. Execute the following commands: <​code>​./​configure --prefix=/​mingw LIBS="​-L/​mingw/​lib –logg"​
 +make
 +make install</​code>​
 +    * f. Close MSYS.
 +
 +== Simple DirectMedia Layer ==
 +
 +  - Extract the contents of the SDL zip file to a temporary folder, e.g. <​nowiki>​C:​\Dev</​nowiki>​.
 +  - Start MSYS.
 +  - Change directory to the SDL folder. <​code>​cd /​c/​dev/​sdl-1.2.11</​code>​
 +  - Execute the following commands: <​code>​./​configure --prefix=/​mingw
 +make
 +make install</​code>​
 +  - 5. Close MSYS.
 +  6. If you prefer a Microsoft Visual C++ compiled runtime, extract **SDL.dll** in the SDL-dev zip file to the MinGW **bin** folder. Alternatively,​ compile the supplied **SDL.dsw** using Microsoft Visual C++ 6.0.
 +
 +== x264 ==
 +
 +  - Using Tortoise SVN, download the latest x264 source code from: <​code>​svn://​svn.videolan.org/​x264/​trunk</​code>​
 +  - Open the file **configure** in the x264 folder with a text editor.
 +  - Update the following lines: <​code>​if cc_check pthread.h -lpthread "​pthread_create(0,​0,​0,​0);"​ ; then
 +      pthread="​yes"​
 +      libpthread="​-lpthread"</​code>​ to: <​code>​if cc_check pthread.h –lpthread**GC1** "​pthread_create(0,​0,​0,​0);"​ ; then
 +      pthread="​yes"​
 +      libpthread="​-lpthread**GC1**"</​code>​
 +  - Save the file and close the editor.
 +  - Open the file **Makefile** in the x264 folder with a text editor.
 +  - Replace the following lines: <code make>​libx264.a:​ .depend $(OBJS) $(OBJASM)
 +  ar rc libx264.a $(OBJS) $(OBJASM)
 + ​ ranlib libx264.a
 + 
 +$(SONAME): .depend $(OBJS) $(OBJASM)
 + $(CC) -shared -o $@ $(OBJS) $(OBJASM) -Wl,​-soname,​$(SONAME) $(LDFLAGS)</​code>​ with: <code make>​ifeq ($(SYS),​MINGW)
 + $(CC) -shared -Wl,​--out-implib,​libx264.a -o libx264.dll $(OBJS) $(OBJASM) $(LDFLAGS)
 +else
 + libx264.a: .depend $(OBJS) $(OBJASM)
 + ar rc libx264.a $(OBJS) $(OBJASM)
 + ranlib libx264.a
 +
 + $(SONAME): .depend $(OBJS) $(OBJASM)
 + $(CC) -shared -o $@ $(OBJS) $(OBJASM) -Wl,​-soname,​$(SONAME) $(LDFLAGS)
 +endif</​code>​
 +  - Save the file and close the editor.
 +  - Start MSYS.
 +  - Change directory to the x264 folder. <​code>​cd /​c/​dev/​x264</​code>​
 +  - Execute the following commands: <​code>​./​configure --prefix=/​mingw --enable-pthread –-enable-avis-input --enable-shared
 +make
 +make install</​code>​
 +  - Copy **libx264.dll** to the MinGW **bin** folder. <​code>​cp libx264.dll /​mingw/​bin</​code>​
 +  - Close MSYS.
 +
 +== Xvid ==
 +
 +  - Extract the contents of the Xvid tarball to a temporary folder, e.g. <​nowiki>​C:​\Dev</​nowiki>​.
 +  - Build Xvid using Microsoft Visual C++ or MinGW:
 +
 +// Using Microsoft Visual C++ 6.0://
 +
 +    * a. Open the file **xvidcore.dsw** in the Xvid **build\Win32** folder using Microsoft Visual C++ 6.0.
 +    * b. Choose **Set Active Configuration** from the **Build** menu.
 +    * c. Choose the **libxvidcore – Win32 Release** project configuration.
 +    * d. Choose **Build xvidcore.dll** from the **Build** menu.
 +    * e. Close Microsoft Visual C++.
 +    * f. Copy the **xvidcore.dll** file from the Xvid **build\Win32\bin** folder to the MinGW **bin** folder.
 +    * g. Copy the **xvidcore.dll.a** file from the Xvid **build\Win32\bin** folder to the MinGW **lib** folder.
 +    * h. Copy the **xvid.h** file from the Xvid **src** folder to the MinGW **include** folder.
 +
 +//Using MinGW://
 +
 +    * a. Start MSYS.
 +    * b. Change directory to the Xvid **build\generic** folder. <​code>​cd /​c/​dev/​xvid-1.1.2/​build/​generic</​code>​
 +    * c. Execute the following commands: <​code>​./​configure --prefix=/​mingw
 +make
 +make install</​code>​
 +    * d. Close MSYS.
 +
 +==== Build Avidemux ====
 +
 +  - Using Tortoise SVN, download the latest Avidemux source code. Alternatively,​ download and extract the latest Avidemux source code tarball.
 +  - Start MSYS.
 +  - Change directory to the Avidemux source code folder. <​code>​cd /​c/​dev/​avidemux</​code>​
 +  - Execute the following command: <​code>​make –f makefile.dist</​code>​ If make fails with an **AM_GNU_GETTEXT** error, execute the following commands: <​code>​cp ./m4/*.m4 /​mingw/​share/​aclocal
 +make –f makefile.dist</​code>​
 +  - Run **configure** referencing the Spidermonkey **src** folder and then perform a **make**: <​code>​./​configure –-with-jsapi-include=/​c/​dev/​js/​src
 +make</​code>​
 +  - The make will fail.  Run the make again but capture the output to a text file. <​code>​ ./​avidemux/​dolink</​code>​
 +  - Open the **dolink** file in the Avidemux **avidemux** folder with a text editor.
 +  - Remove all lines from the file apart from the one starting with: <​code>/​bin/​sh ../​libtool</​code>​
 +  - Include **.\xpm\adm.o** in the list of library object files. This will add the avidemux icon to the resulting executable.
 +  - Move all **–l** parameters to the end of the line.
 +  - Add the following parameters to the end of the line: <​code>​-llibxml2 -lwinmm -lwsock32</​code>​
 +  - The final result should look something like this:<​code>/​bin/​sh ../libtool --silent --mode=link g++ -g -I.. -I../​ADM_lavutil -IADM_library -I../​ADM_library ​ \
 +-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -mno-cygwin -mms-bitfields -O2 -falign-loops=16 ​ \
 +-o avidemux2.exe ​  \
 +-L/​mingw/​lib \
 +\
 +guiplay.o gui_savenew.o gui_navigate.o gtk_gui.o callbacks.o \
 +avilist.o main.o prefs.o ADM_guiBitrate.o ADM_pp.o ADM_memsupport.o \
 +gui_autodrive.o GUI_jobs.o ADM_dialog/​DIA_quota.o \
 +ADM_lavcodec/​libavcodec.a ADM_lavcodec/​libpostproc/​libpostproc.a \
 +./​ADM_script/​libADM_script.a ./​ADM_editor/​libADM_editor.a \
 +./​ADM_library/​libADM_library.a ./​ADM_openDML/​libADM_openDML.a \
 +./​oplug_ogm/​liboplug_ogm.a ./​ADM_audiocodec/​libADM_audiocodec.a \
 +./​ADM_audio/​libADM_audio.a ./​oplug_avi/​liboplug_avi.a \
 +./​oplug_mp4/​liboplug_mp4.a ./​oplug_mpeg/​liboplug_mpeg.a \
 +./​oplug_mpegFF/​liboplug_mpegFF.a ./​ADM_mplex/​libADM_mplex.a \
 +./​ADM_lavformat/​libADM_lavformat.a ./​ADM_lavutil/​libADM_lavutil.a \
 +./​ADM_lvemux/​libADM_lvemux.a ./​ADM_filter/​libADM_filter.a \
 +./​ADM_video/​libADM_video.a ​  ​./​ADM_encoder/​libADM_encoder.a \
 +./​ADM_codecs/​libADM_codecs.a ./​ADM_vp32/​libADM_vp32.a \
 +./​ADM_audiofilter/​libADM_audiofilter.a ./​libtoolame/​liblibtoolame.a \
 +./​ADM_gui2/​libADM_gui2.a ./​ADM_libswscale/​libswscale.a \
 +./​mpeg2enc/​libmpeg2enc.a ./​ADM_liba52/​libADM_liba52.a \
 +./​ADM_libMad/​libADM_mad.a ./​ADM_inpics/​libADM_inpics.a ​ \
 +./​ADM_3gp/​libADM_3gp.a ./​ADM_avsproxy/​libADM_avsproxy.a \
 +./​ADM_matroska/​libADM_matroska.a ./​ADM_asf/​libADM_asf.a \
 +./​ADM_h263/​libADM_h263.a ./​ADM_nuv/​libADM_nuv.a \
 +./​ADM_ogm/​libADM_ogm.a ./​ADM_audiodevice/​libADM_audiodevice.a \
 +./​ADM_xvidratectl/​libADM_xvidratectl.a ./​ADM_requant/​libADM_requant.a \
 +./​ADM_ocr/​libADM_ocr.a ./​ADM_mpegdemuxer/​libADM_mpegdemuxer.a \
 +./​ADM_audio/​libADM_audio.a ./​ADM_toolkit/​libADM_toolkit.a \
 +./​ADM_dialog/​libADM_dialog.a ./​libMpeg2Dec/​liblibMpeg2Dec.a \
 +./​ADM_tray/​libADM_tray.a ./​ADM_colorspace/​libADM_colorspace.a \
 +ADM_lavcodec/​libavcodec.a ./​ADM_lavutil/​libADM_lavutil.a \
 +./​ADM_lavcodec/​libpostproc/​libpostproc.a ./​ADM_library/​libADM_library.a \
 +./​ADM_toolkit/​libADM_toolkit.a ./​libass/​libass.a ​  \
 +./xpm/adm.o \
 +\
 +-luuid -ljs -lfontconfig -lmp3lame -lvorbis -lvorbisenc -lfaac -lfaad \
 +-ldts -lxvidcore -lpng -lx264 -laften -lmingw32 -lSDLmain -lSDL \
 +-mwindows -user32 -lpthreadGC1 -lgtk-win32-2.0 -lgdk-win32-2.0 -limm32 \
 +-lshell32 -lole32 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 \
 +-lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 \
 +-lglib-2.0 -lintl -liconv -lgthread-2.0 -lfreetype -lz -llibxml2 \
 +-lwinmm -lwsock32</​code>​
 +  - Link Avidemux2.exe and strip all unnecessary symbols. <​code>​cd avidemux
 +dolink
 +strip –-strip-all avidemux2.exe</​code>​
 +  - Run avidemux2.exe <​code>​avidemux2</​code>​
 +
build/compiling_avidemux.txt · Last modified: 2012/11/11 08:51 (external edit)