mirror of
https://github.com/cookiengineer/audacity
synced 2026-01-11 07:05:47 +01:00
Locate and position the current Audacity source code, and clear a variety of old junk out of the way into junk-branches
This commit is contained in:
654
win/compile.txt
Normal file
654
win/compile.txt
Normal file
@@ -0,0 +1,654 @@
|
||||
Compiling Audacity(R) for Microsoft Windows(TM)
|
||||
copyright (c) 1999-2009 Audacity Team
|
||||
|
||||
Authors:
|
||||
Asger Ottar Alstrup
|
||||
Vince Busam
|
||||
Dave Fancella
|
||||
Vaughan Johnson
|
||||
Steve Jolly
|
||||
Leland Lucius
|
||||
Markus Meyer
|
||||
Shane Mueller
|
||||
Lynn Allan
|
||||
Martyn Shaw
|
||||
|
||||
========================================================================
|
||||
This version is currently accurate for Audacity version 1.3.8.
|
||||
If the advice here is inaccurate or incomplete, please
|
||||
email audacity-devel@lists.sourceforge.net.
|
||||
See also
|
||||
"http://audacityteam.org/wiki/index.php?title=Developing_On_Windows".
|
||||
========================================================================
|
||||
|
||||
Audacity releases are now built with Microsoft Visual C++ 9
|
||||
(a.k.a Visual C++ 2008) generically known as "VC9".
|
||||
|
||||
For instructions on compiling Audacity under the Cygwin
|
||||
UNIX Emulation Layer, see the "Compiling Audacity under
|
||||
Cygwin" section below. This is not maintained.
|
||||
|
||||
Note that Audacity uses VC++'s multithreaded DLL runtime libraries.
|
||||
If you have MSVC installed, these are in your PATH, but users to
|
||||
whom you distribute your builds may not have them, so you may have
|
||||
to distribute them, as described for the wxWidgets DLLs, below.
|
||||
|
||||
|
||||
---------------------------
|
||||
MSVC++ STEP 1: Download wxWidgets
|
||||
---------------------------
|
||||
|
||||
To simplify the implementation of a near-identical user
|
||||
interface across platforms, Audacity uses classes and
|
||||
resources from wxWidgets, a portable GUI framework for C++
|
||||
(and Python). You must download and build wxWidgets before
|
||||
attempting to compile Audacity, or nothing will work!
|
||||
|
||||
wxWidgets is available at "http://www.wxwidgets.org/".
|
||||
|
||||
Audacity 1.3.8 requires wxWidgets 2.8.10.
|
||||
|
||||
To build on Windows only, download the wxMSW package
|
||||
(installer or zip).
|
||||
|
||||
------------------------
|
||||
MSVC++ STEP 2: Build wxWidgets
|
||||
------------------------
|
||||
|
||||
When you have downloaded and installed wxWidgets, you must
|
||||
build it.
|
||||
|
||||
For wxWidgets' instructions on compilation
|
||||
(and details about static versus dll linkage), see
|
||||
"C:\wxWidgets-2.8.10\docs\msw\install.txt".
|
||||
Note therein that wx_dll.dsw adds the dependencies to
|
||||
force the correct build order for DLLs, which wx.dsw
|
||||
does not. Because of this, wx_dll.dsw doesn't work for
|
||||
static libraries.
|
||||
|
||||
|
||||
1. Open "C:\wxWidgets-2.8.10\build\msw\wx_dll.dsw" with
|
||||
Visual Studio 2008 (for VC9).
|
||||
Make sure to use wx_dll.dsw, not wx.dsw, because wx.dsw
|
||||
does not have the correct dependencies for the DLL builds.
|
||||
When you open wx_dll.dsw, Visual Studio will prompt whether
|
||||
to convert. Click "Yes To All". Next time you open a Visual
|
||||
Studio session, you can avoid this prompt by opening
|
||||
"C\wxWidgets-2.8.10\build\msw\wx_dll.sln" instead of wx_dll.dsw.
|
||||
|
||||
|
||||
2. If you want to use the accessibility features, we have modified a
|
||||
couple of the wxWidgets files. Rather than provide a patch, we
|
||||
store the modified files in CVS, and you can replace the
|
||||
corresponding wxWidgets files.
|
||||
In "audacity\win\wxWidgets_additions" are one .cpp and one .h file.
|
||||
You may want to make backups of the wxWidgets originals of these,
|
||||
in case you also build without these accessibility features.
|
||||
|
||||
* Copy access.cpp to "C:\wxWidgets-2.8.10\src\msw\ole\".
|
||||
|
||||
* Copy setup.h to "C:\wxWidgets-2.8.10\include\wx\msw\".
|
||||
|
||||
Audacity releases are built with these accessibility features.
|
||||
|
||||
|
||||
3. Build wxWidgets for all configurations of Audacity that you want.
|
||||
* Build "DLL Release" to use in a "Release" version of Audacity.
|
||||
* Build "DLL Unicode Release" to use in a "Unicode Release"
|
||||
version of Audacity.
|
||||
* Build "DLL Debug" to use in a "Debug" version of Audacity.
|
||||
* Build "DLL Unicode Debug" to use in a "Unicode Debug"
|
||||
version of Audacity.
|
||||
|
||||
See "MSVC++ STEP 5: Build Audacity" for the differences
|
||||
between these versions of Audacity.
|
||||
|
||||
If you use "Batch Build" under the "Build" menu, you need select
|
||||
only the following five projects to build (not the whole solution)
|
||||
for each configuration:
|
||||
* adv
|
||||
* base
|
||||
* core
|
||||
* html
|
||||
* net
|
||||
|
||||
Because of dependencies, this should also build these projects:
|
||||
* wxexpat
|
||||
* wxjpeg
|
||||
* wxpng
|
||||
* wxregex
|
||||
* wxtiff
|
||||
* wxzlib
|
||||
|
||||
If you build the whole solution, ignore the linker errors for
|
||||
wxbase28*_odbc*.* dbgrid.
|
||||
|
||||
|
||||
4. Note the directory "C\wxWidgets-2.8.10\lib\vc_dll". For each
|
||||
build of WxWidgets you made, you will need from here five DLLs
|
||||
appropriate to that build to go in the corresponding Audacity
|
||||
build directory. The DLLs required are noted at "Provide access
|
||||
to the wxWidgets DLLs" at "MSVC++ STEP 5: Build Audacity" below.
|
||||
|
||||
|
||||
--------------------------
|
||||
MSVC++ STEP 3: Download Audacity
|
||||
--------------------------
|
||||
|
||||
Now you can compile Audacity. To check out the latest
|
||||
source code from CVS, see the instructions at
|
||||
"http://audacity.sourceforge.net/community/developers".
|
||||
|
||||
|
||||
--------------------------------------------
|
||||
MSVC++ STEP 4: Set wxWidgets location for Audacity
|
||||
--------------------------------------------
|
||||
|
||||
Before you can start the build process, you must update the
|
||||
project settings to tell Visual C++ where to find wxWidgets.
|
||||
There are three settings that need changing:
|
||||
1. Include Directory (e.g., "C:\wxWidgets-2.8.10\include")
|
||||
2. Resource Directory (e.g., "C:\wxWidgets-2.8.10\include")
|
||||
3. Library Directory (e.g., "C:\wxWidgets-2.8.10\lib")
|
||||
|
||||
Fortunately, this is parameterized, using a Windows system
|
||||
environment variable. There are various ways to set these, so
|
||||
look in the Windows help system. You want to create an
|
||||
environment variable WXWIN, set to the top-level directory
|
||||
where you installed wxWidgets. For example,
|
||||
in your "autoexec.bat" file, you might have a line:
|
||||
|
||||
set WXWIN=C:\wxWidgets-2.8.10
|
||||
|
||||
Note that you don't want a trailing backslash on that.
|
||||
|
||||
On newer version of Windows, the settings for environment
|
||||
variables can be found in the system control panel. Click
|
||||
the "System" option, then the "Extended" or "Advanced" tab,
|
||||
then "Environment variables".
|
||||
|
||||
In the Audacity project file, there are declarations like
|
||||
|
||||
$(WXWIN)\include
|
||||
|
||||
that get interpreted as, e.g., "C:\wxWidgets-2.8.10\include".
|
||||
|
||||
Once you have set the WXWIN environment variable correctly,
|
||||
the Audacity project file's declarations will do the rest.
|
||||
|
||||
Note that you have to restart the IDE so it picks up changes
|
||||
in the environment variables.
|
||||
|
||||
|
||||
-----------------------
|
||||
MSVC++ STEP 5: Build Audacity
|
||||
-----------------------
|
||||
|
||||
Run Visual C++ and load the Audacity solution,
|
||||
"audacity\win\audacity.sln".
|
||||
|
||||
|
||||
Optional Features
|
||||
|
||||
Local help (optional, but required for a full 'release ready' version).
|
||||
Build the 'help' project. This will download a copy of the manual wiki
|
||||
onto your machine and copy it to the correct place for the build that
|
||||
you are doing. If the local copy needs updating at any time, run
|
||||
audacity\scripts\mw2html_audacity\wiki2htm.bat and re-run the 'help' project.
|
||||
|
||||
Some functionality in Audacity is currently turned on its default
|
||||
configuration, but requires that extra libraries be downloaded
|
||||
separately to use it.
|
||||
|
||||
* To allow export of MP3 files, download LAME:
|
||||
http://audacity.sourceforge.net/help/faq?s=install&i=lame-mp3
|
||||
|
||||
* To allow import and export of a much wider range of audio formats
|
||||
(including WMA, M4A and AC3), and to import audio from video files,
|
||||
download FFmpeg:
|
||||
http://www.audacityteam.org/manual/index.php?title=FAQ:Installation_and_Plug-Ins#installffmpeg
|
||||
|
||||
To change the libraries that are enabled in Audacity, open the file
|
||||
"win\configwin.h" and comment or uncomment the libraries as required.
|
||||
|
||||
DirectSound (Microsoft) and ASIO (Steinberg) are sound card interface
|
||||
protocols that are more efficient than the standard WMME. Unlike WMME,
|
||||
not all sound card drivers support them.
|
||||
|
||||
TO ADD SUPPORT FOR DIRECTSOUND:
|
||||
Install the DirectX SDK from Microsoft (http://msdn.microsoft.com/directx).
|
||||
The installation will automatically define the DXSDK_DIR
|
||||
environment variable and its presense will cause DirectSound
|
||||
support to be automatically included when Audacity is built.
|
||||
|
||||
|
||||
TO ADD SUPPORT FOR ASIO:
|
||||
Because ASIO is a PROPRIETARY, closed standard,
|
||||
we (or any third party) cannot distribute its SDK.
|
||||
That means we cannot distribute builds of Audacity that support
|
||||
ASIO, because Audacity is licensed under the
|
||||
GPL (http://audacity.sourceforge.net/about/license), which requires
|
||||
we distribute all source code.
|
||||
|
||||
So, although you can build your own copies of Audacity with
|
||||
ASIO support, for personal use, you cannot distribute them without
|
||||
violating the Audacity license and the ASIO license.
|
||||
If you build ASIO support into Audacity, do not distribute that build.
|
||||
|
||||
If you wish ASIO support, install the ASIO SDK from Steinberg
|
||||
(http://www.steinberg.net ... select Company, then 3rd Party
|
||||
Developers), then define an environment variable called
|
||||
ASIOSDK_DIR, as you did for WXWIN, above. The value should be
|
||||
the full path to the base directory of the ASIO SDK, e.g.,
|
||||
|
||||
set ASIOSDK_DIR=C:\ASIOSDK2
|
||||
|
||||
Build Audacity
|
||||
|
||||
Select the configuration that you wish to build:
|
||||
* "Release" for general use
|
||||
* "Unicode Release" for Unicode-based, general use
|
||||
* "Debug" for a slower but debuggable executable
|
||||
* "Unicode Debug" for a Unicode-based, slower, debuggable
|
||||
executable
|
||||
|
||||
You can select the configuration from the Solution
|
||||
Configurations pull-down menu, or select it from the "Build"
|
||||
menu > "Configuration Manager..." dialog box.
|
||||
|
||||
Build Audacity by giving the "Build" menu > "Rebuild Solution"
|
||||
command.
|
||||
|
||||
|
||||
Provide access to the wxWidgets DLLs
|
||||
|
||||
Each Audacity executable needs access to five specific wxWidgets
|
||||
DLLs from those you built in "MSVC++ STEP 2: Build wxWidgets"
|
||||
above. You can copy them to your Windows PATH, or more simply,
|
||||
to the same directory as the executable. If you are building
|
||||
Audacity for public release using the *.iss installer script,
|
||||
you must copy them to the executable directory. The DLLs required
|
||||
are at "C:\wxWidgets-2.8.10\lib\vc_dll":
|
||||
|
||||
wxbase28*_net_vc_custom.dll
|
||||
wxbase28*_vc_custom.dll
|
||||
wxmsw28*_adv_vc_custom.dll
|
||||
wxmsw28*_core_vc_custom.dll
|
||||
wxmsw28*_html_vc_custom.dll
|
||||
|
||||
The "*" in the file names above is replaced in the actual files by
|
||||
a suffix specific to its Widgets configuration. You can identify the
|
||||
DLLs needed for each Audacity version as follows:
|
||||
|
||||
"" (no suffix) for "Release" versions
|
||||
"u" for "Unicode Release" versions
|
||||
"d" for "Debug" versions
|
||||
"ud" for "Unicode Debug" versions
|
||||
|
||||
So for instance, a Unicode Debug version of Audacity should have:
|
||||
|
||||
wxbase28ud_net_vc_custom.dll
|
||||
wxbase28ud_vc_custom.dll
|
||||
wxmsw28ud_adv_vc_custom.dll
|
||||
wxmsw28ud_core_vc_custom.dll
|
||||
wxmsw28ud_html_vc_custom.dll
|
||||
|
||||
in the "audacity\win\unicode debug" directory.
|
||||
|
||||
|
||||
That's all - if this procedure doesn't work, you can ask for
|
||||
help on the Audacity development mailing list:
|
||||
audacity-devel@lists.sourceforge.net. However, the first
|
||||
suggestion is likely to be "try it again with a clean installation
|
||||
of the wxWidgets source and the latest Audacity source from CVS",
|
||||
so if that's not what you just attempted, you might want to try
|
||||
that first...
|
||||
|
||||
|
||||
---------------------------
|
||||
HELP! I get linker errors!
|
||||
---------------------------
|
||||
|
||||
In some cases, Audacity does compile, but during the linking
|
||||
process you get a bunch of error messages like this:
|
||||
|
||||
LIBCMTD.lib(LIBCMTD.dll) : error LNK2005: _free
|
||||
already defined in MSVCRTD.lib(dbgheap.obj)
|
||||
|
||||
This is usually caused by conflicting runtime library settings.
|
||||
Audacity is now linked with DLL linkage.
|
||||
In VC9, select the Audacity project. Then
|
||||
Project > Properties > C/C++ > Code Generation > Runtime Library
|
||||
should be
|
||||
"Multi-threaded Debug DLL (/MDd)" for Debug or Unicode Debug builds,
|
||||
or
|
||||
"Multi-threaded DLL (/MD)" for Release or Unicode Release builds.
|
||||
Make sure you set the correct library type for all corresponding build
|
||||
configurations.
|
||||
Also make sure you check all other libraries, like the Ogg Vorbis
|
||||
libraries, if you have them installed.
|
||||
|
||||
You may want to use the /VERBOSE:LIB linker parameter to
|
||||
get information about which library is causing the conflict.
|
||||
|
||||
If all else fails, use the following procedure to force
|
||||
Audacity to link to the correct library:
|
||||
|
||||
Select the Audacity project in Solution Explorer.
|
||||
Then choose Project > Properties.
|
||||
|
||||
Select the desired configuration (e.g., "Debug" or "Release").
|
||||
Select the "Linker" folder in the tree on the left, and the
|
||||
"Input" item. In the "Ignore Specific Library" field, enter
|
||||
"msvcrt.lib" if you were attempting to perform a
|
||||
Release build, or "msvcrtd.lib" for a Debug build.
|
||||
|
||||
On some systems, you will need to ignore "libcmt.lib"
|
||||
or "libcmtd.lib" instead of "msvcrt.lib" or "msvcrtd.lib",
|
||||
depending on the library which actually causes the conflict.
|
||||
|
||||
Note that if you have configured all libraries correctly,
|
||||
none of the above should actually be necessary.
|
||||
|
||||
|
||||
========================================================================
|
||||
|
||||
-------------------------------
|
||||
Compiling Audacity under Cygwin
|
||||
-------------------------------
|
||||
|
||||
Compiling Audacity under Cygwin is considered "experimental"
|
||||
at this time, and you may notice a few problems when you do so.
|
||||
Please be patient, and make sure to submit bug reports to the
|
||||
development team. If you follow these instructions closely, you
|
||||
*should* be able to build Audacity.
|
||||
|
||||
These instructions will attempt to help you to compile using
|
||||
the experimental additions that appeared sometime around the 1.2
|
||||
release. They will also attempt to help you to compile Audacity
|
||||
yourself without the aforementioned support. Make sure to read
|
||||
the instructions in their entirety before beginning, because no
|
||||
matter which source tree you wind up using, all of these
|
||||
instructions are likely to assist you.
|
||||
|
||||
If you have problems building, make sure you've read all of
|
||||
these instructions. At the bottom there is a list of known
|
||||
bugs. If the problem you encounter is on this list, then there
|
||||
is also a workaround. Just remember to be patient, and that I
|
||||
(Dave Fancella) have successfully built Audacity on 3 different
|
||||
Windows installations with 2 different versions of Windows (XP
|
||||
and 2000 Pro). Knowing that it can be done is most of the battle.
|
||||
|
||||
|
||||
---------------------------------
|
||||
Cygwin STEP 1: Installing Cygwin
|
||||
---------------------------------
|
||||
|
||||
1. Install Cygwin (from "http://www.cygwin.com"). If you have
|
||||
plenty of bandwidth available, you should use the net
|
||||
installer. Otherwise, you might be better off ordering a CD.
|
||||
|
||||
2. If you already have Cygwin installed, you should fire up
|
||||
the installer again and compare your installed packages to
|
||||
the list of packages needed.
|
||||
|
||||
3. Install the following packages:
|
||||
(This is probably not a complete list. If you find that
|
||||
you have to install more than this, make sure to let us know
|
||||
which ones, so they can be added to this list)
|
||||
Autoconf
|
||||
Autoconf-devel (Autoconf 2.53 is required if you need to rebuild 'configure')
|
||||
gettext-devel (for building the translation files. If you don't want to build these,
|
||||
you don't need this package)
|
||||
Automake
|
||||
Automake-devel
|
||||
binutils
|
||||
gcc (only tested version is 3.3.1)
|
||||
gcc-mingw
|
||||
make
|
||||
mingw-runtime
|
||||
zip (required by configure, although gzip is actually used)
|
||||
w32api
|
||||
|
||||
|
||||
---------------------------------------
|
||||
Cygwin STEP 2: Download and install wxWidgets
|
||||
---------------------------------------
|
||||
|
||||
1. Go to http://www.wxwidgets.org/ and download wxWidgets v2.8.10 or greater. Make
|
||||
sure you download the "wxAll" package that contains source code for all ports. The
|
||||
Win32 port will not work for compiling audacity, since it was compiled and installed
|
||||
to work with MS Visual C++.
|
||||
|
||||
2. Untar the archive from the Cygwin command line, using a command like:
|
||||
tar -xzvf (wxwindows).
|
||||
|
||||
3. From the top-level of the wxWidgets source tree, type './configure'.
|
||||
** For some reason, I haven't been able to get Audacity to link to wxWidgets statically
|
||||
under Cygwin. Since there are bigger fish to fry right now, I haven't dealt with it. I
|
||||
would appreciate if someone gets it to work if you let me know what you did. To try this,
|
||||
use './configure --disable-shared' for wxWidgets configuration.
|
||||
|
||||
When complete, type "make". When that's complete, "make install". If all goes well,
|
||||
you will have wxWidgets installed in your Cygwin installation!
|
||||
|
||||
|
||||
---------------------------------
|
||||
Cygwin STEP 3: Download Audacity
|
||||
---------------------------------
|
||||
|
||||
1. Go to http://audacity.sourceforge.net/ and download the Audacity source distribution.
|
||||
Cygwin is currently experimental in the 1.2 branch and cvs head, but you must have at least
|
||||
Audacity v1.2.0 sources.
|
||||
|
||||
2. From a cygwin prompt, go to the tarball that you downloaded and use a command like
|
||||
'tar -xzvf (audacity tarball)' to open it.
|
||||
|
||||
|
||||
-----------------------------------------
|
||||
Cygwin STEP 4: Enable Ogg Vorbis Support
|
||||
-----------------------------------------
|
||||
|
||||
Under Cygwin, Audacity does not compile out-of-the-box with Ogg Vorbis support. You have
|
||||
a couple of hoops to jump through if you want this. Note, if you don't do this, you will
|
||||
not have any audio codec available to Audacity! Lame is untested at this time and is
|
||||
assumed not to work. If you try it with Lame, tell us!
|
||||
|
||||
By default, libogg and libvorbis configure with /usr/local as the prefix. For some
|
||||
weird and inexplicable reason (i.e. I haven't figured it out yet) this doesn't work!
|
||||
GCC will not find the libogg headers when you go to compile libvorbis if you install it
|
||||
in the default location. On that token, GCC will not find libvorbis headers either, so
|
||||
make sure you follow these instructions explicitly.
|
||||
|
||||
1. First you have to compile libogg. From the audacity source tree root, type
|
||||
'cd lib-src/libogg'.
|
||||
|
||||
2. ./configure --prefix=/usr
|
||||
|
||||
3. make
|
||||
|
||||
4. make install
|
||||
|
||||
5. cd ../libvorbis # yep, now we have to compile vorbis
|
||||
|
||||
6. ./configure --prefix=/usr
|
||||
|
||||
7. make
|
||||
|
||||
8. make install
|
||||
|
||||
If all goes well, you will have Ogg Vorbis support in your Audacity executable.
|
||||
|
||||
|
||||
------------------------------
|
||||
Cygwin STEP 5: Build Audacity
|
||||
------------------------------
|
||||
|
||||
This is the tricky part. :)
|
||||
|
||||
Audacity comes bundled with a number of libraries that it depends on. Usually you will
|
||||
compile with those rather than any system installed libraries. If you would prefer to use
|
||||
a system installed library, you'll have to pass --with-library=/path/to/library to configure.
|
||||
There are two libraries that currently do not compile in cygwin. Those are Nyquist and
|
||||
libid3tag. If you manage to build them, please send a patch (or instructions on how you
|
||||
did it)!
|
||||
|
||||
If you didn't enable Ogg Vorbis support as described in the previous step, you will have to
|
||||
pass --without-vorbis to configure, as shown.
|
||||
|
||||
1. ./configure --without-nyquist --without-id3tag [--without-vorbis]
|
||||
2. make
|
||||
3. ./audacity
|
||||
4. If you have any problems or errors, read the next section.
|
||||
|
||||
|
||||
--------------------------------------
|
||||
Notes on building Audacity with Cygwin
|
||||
--------------------------------------
|
||||
|
||||
These notes are provided because Cygwin support is experimental, and if you run into problems,
|
||||
it might help to know what was needed to make it work on my computer.
|
||||
|
||||
The problems that appear when compiling Audacity under Cygwin are pretty consistent in how
|
||||
they appear. The win32 port is written under the assumption that MSVC++ will be the
|
||||
compiler used, and is the current standard and supported method of building Audacity.
|
||||
Therefore, the problems that appear are mostly related to various symbols defined to make
|
||||
Audacity compile out of the box on MSVC++. Other problems that surface will likely
|
||||
be based on the fact that Cygwin passes itself to configure as a UNIX variant, and there
|
||||
are various other symbols defined for UNIX variants. GNU/Linux is the standard UNIX variant
|
||||
supported by Audacity, so you will have problems similar to what someone using OpenBSD might
|
||||
encounter. The exception is Mac OS X, which is well-supported already.
|
||||
|
||||
Audacity uses a series of libraries that are either required or optional, and can be set
|
||||
at compile time. The ones that are optional have --without switches for configure, the others
|
||||
do not. So if a bundled library doesn't compile, your best bet is to try disabling the library
|
||||
in your configure command line. If that doesn't work, you'll have to investigate the library
|
||||
to see why it's not compiling.
|
||||
|
||||
PortAudio is required, and a Makefile is provided with Audacity to build it. PortMixer is not
|
||||
required, but is recommended. This Makefile is also provided with Audacity. Note: to my
|
||||
knowledge, the Makefile for PortAudio provided with Audacity is not present in the PortAudio
|
||||
distribution. The one used with Audacity compiles PortAudio as a static library, and the
|
||||
current Cygwin Makefile in the PortAudio distribution compiles as a dynamic library. Audacity
|
||||
will compile with either one, but if you use the one provided with PortAudio you will have to
|
||||
make sure the PortAudio dll is in Audacity's path. Of course, you shouldn't have any problems,
|
||||
so this is probably more information than you need. :)
|
||||
|
||||
Libsamplerate is not supported at all with Cygwin, and it is doubtful that it will ever be
|
||||
supported. If make tries to build it, --disable it. Use Libresample instead.
|
||||
|
||||
Libresample may require tweaking some #define statements in a fashion that is noted below.
|
||||
|
||||
Expat should compile out of the box. If not, you might be better off trying to install the version
|
||||
of expat that ships with Cygwin. If configure fails to detect a system installed expat, this
|
||||
is probably a bug and should be submitted to the Audacity developers. You can use the system-installed
|
||||
expat by passing --with-expat=system to ./configure.
|
||||
|
||||
Any other libraries are probably not required, and if they fail to compile you should be able
|
||||
to --disable them with configure.
|
||||
|
||||
|
||||
-----------
|
||||
Configwin.h
|
||||
-----------
|
||||
|
||||
Configwin.h is a file that exists in the win directory from the root of Audacity's source tree.
|
||||
You have three options for getting gcc to find this file. You can modify Audacity's Makefile to
|
||||
include -I../win (or whatever a good path is that will point at the directory). You can copy
|
||||
or move the configwin.h file to Audacity's source directory. Preferably, you will modify
|
||||
configure.in to generate configwin.h in exactly the same fashion and location that it already
|
||||
generates configunix.h.
|
||||
|
||||
A fourth option is to not use Configwin.h at all, but to modify the appropriate header files to
|
||||
use configunix.h. Since this might be similar to opening a can of worms, I don't recommend this
|
||||
approach.
|
||||
|
||||
|
||||
---------------------
|
||||
Dealing with #defines
|
||||
---------------------
|
||||
|
||||
While working with this build system, there were a few files that failed to compile. Whenever
|
||||
make bombs on a file, you need to carefully note the line it made the error on and open the
|
||||
source file in a good syntax highlighting editor, or you can use Wordpad, which is neither good
|
||||
nor syntax highlighting. Find the appropriate line on which the error occurred. Then scroll
|
||||
up. Chances are very good that the line that triggered the error is wrapped in a #ifndef,
|
||||
#if defined, or #ifdef block. The #define symbol is usually __WIN32__. You will be able to
|
||||
get it to compile by making the line read something like this:
|
||||
|
||||
#if defined(__WIN32__) && !defined(__CYGWIN__)
|
||||
|
||||
In order for that to work, you will need to make sure that configure sets the __CYGWIN__ symbol to
|
||||
be defined. You may be able to just add it to Audacity's Makefile, however. If you chose to use
|
||||
the existing Configwin.h file and not have it generated by configure, then you should be able
|
||||
to add a #define in it that defines __CYGWIN__.
|
||||
|
||||
Ultimately, if you find any of these options too difficult or time-consuming, you might consider
|
||||
just deleting the entire block of code that is afflicted. Since that route will likely wind up
|
||||
making the job hundreds of times more difficult than it actually is, it is not recommended.
|
||||
|
||||
|
||||
-----------------
|
||||
Linking Audacity
|
||||
-----------------
|
||||
|
||||
The normal Unix flags for linking will not work with Audacity. Well, they will but they won't
|
||||
include everything that needs to be linked. Before discussing what actually needs to be linked,
|
||||
it would be beneficial to discuss the win32api and Cygwin. This discussion is surrounded on top
|
||||
and bottom by **********'s, so if you already know this information you can easily skip it.
|
||||
|
||||
************************************************************
|
||||
|
||||
Cygwin is capable of compiling Windows programs that do not depend on the Cygwin runtime. It
|
||||
does this by using the Mingw libraries and header files, which are available under the GPL.
|
||||
However, in order to make these libraries available to GCC, which operates thinking that it's
|
||||
running on a Unix system, the libraries must be stored and named in a location that GCC (or more
|
||||
specifically, LD, the linker) will understand.
|
||||
|
||||
On GNU systems, and likely on proprietary Unix systems as well (although I don't know this as a
|
||||
fact), a library that is to be linked dynamically will have the extension .so. A library that is
|
||||
to be linked statically has the extension .a. Furthermore, in either case the text "lib" is
|
||||
prepended to the library. When you pass a -l switch to GCC, GCC transparently passes this switch
|
||||
to ld, the linker. The text associated with -l will name the library. For example: If you pass
|
||||
-lfoobar, ld will receive it. In order to actually find the library, ld must prepend "lib" and
|
||||
append ".a", and then search in its known library locations. So it will search for a file called
|
||||
"libfoobar.a" in its known library locations.
|
||||
|
||||
The known library locations vary from system to system. On some GNU/Linux systems, the known
|
||||
library locations are stored in a special file called "ldconfig". Cygwin does not, however. It
|
||||
appears to know by magic where the libraries are stored. You will find them in /usr/lib,
|
||||
/usr/local/lib, /usr/share/lib, and ~/.lib. If you look around your Cygwin installation, you'll
|
||||
find a directory /usr/lib/w32api. In this directory is stored all of the Mingw libraries that
|
||||
allow you to link to the win32api. If you've ever worked with MSVC++, you'll probably recognize
|
||||
the names of these libraries. There's kernel32, odbc32, winmm, and the rest. But they're named
|
||||
with ld's peculiar naming convention, libkernel32.a, libodbc32.a, and libwinmm.a respectively in
|
||||
this example.
|
||||
|
||||
*************************************************************
|
||||
|
||||
From the MSVC++ project file, here are the libraries that need to be linked statically for
|
||||
Audacity to successfully build.
|
||||
|
||||
kernel32.lib user32.lib gdi32.lib winspool.lib
|
||||
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
|
||||
odbc32.lib odbccp32.lib wsock32.lib winmm.lib
|
||||
|
||||
You can also obtain this list by modifying the Audacity Makefile to use
|
||||
`wx-config --static --libs` instead of `wx-config --libs` which it already uses. Currently,
|
||||
Audacity will not build with `wx-config --static --libs`. If you get it to work, let us know!
|
||||
|
||||
----------
|
||||
Known Bugs
|
||||
----------
|
||||
|
||||
First of all, expect your resulting build to work differently in little ways than a build made with
|
||||
MSVC++.
|
||||
|
||||
Here is a list of currently known bugs in Audacity's build and the resulting executable. Any help
|
||||
fixing these bugs would be greatly appreciated.
|
||||
|
||||
* Zoom does not center around cursor
|
||||
* Audacity does not associate itself with filetypes (It's #if !defined out, the code works in
|
||||
MSVC++)
|
||||
* libsndfile fails to configure on some systems. If this happens, the known workaround is to
|
||||
configure libsndfile manually and then configure audacity again.
|
||||
Reference in New Issue
Block a user