mirror of
https://github.com/cookiengineer/audacity
synced 2025-05-01 08:09:41 +02:00
664 lines
27 KiB
Plaintext
664 lines
27 KiB
Plaintext
Compiling Audacity(R) for Microsoft Windows(TM)
|
|
copyright (c) 1999-2012 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 2.0.3.
|
|
If you find the advice here inaccurate or incomplete, please
|
|
e-mail feedback@audacityteam.org .
|
|
========================================================================
|
|
|
|
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 2.0.3 requires wxWidgets 2.8.12.
|
|
|
|
To build on Windows only, download the wxMSW package
|
|
(installer or zip).
|
|
|
|
|
|
------------------------
|
|
MSVC++ STEP 2: Build wxWidgets
|
|
------------------------
|
|
|
|
When you have downloaded and installed wxWidgets, the next step
|
|
is to build it.
|
|
|
|
|
|
1. Open "C:\wxWidgets-2.8.12\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.12\build\msw\wx_dll.sln" instead of wx_dll.dsw.
|
|
|
|
|
|
2. If you want to use the accessibility features, we have modified
|
|
one of the wxWidgets files. Rather than provide a patch, we
|
|
store any modified files in the Audacity code repository, and you
|
|
can replace the corresponding wxWidgets files.
|
|
|
|
In "audacity\win\wxWidgets_additions" is one .h file.
|
|
You may want to make backups of the wxWidgets original of it,
|
|
in case you also build without these accessibility features.
|
|
|
|
* Copy setup.h to "C:\wxWidgets-2.8.12\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 6: 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.
|
|
|
|
|
|
--------------------------
|
|
MSVC++ STEP 3: Download Audacity
|
|
--------------------------
|
|
|
|
Now you can compile Audacity. To check out the latest
|
|
source code from SVN, 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.12\include")
|
|
2. Resource Directory (e.g., "C:\wxWidgets-2.8.12\include")
|
|
3. Library Directory (e.g., "C:\wxWidgets-2.8.12\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.12
|
|
|
|
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.12\include".
|
|
|
|
Once you have set the WXWIN environment variable correctly,
|
|
the Audacity project file's declarations will do the rest.
|
|
|
|
Note that you have at least to restart the IDE so it picks up
|
|
changes in the environment variables. It is safer to reboot
|
|
the computer to ensure the variables are read correctly.
|
|
|
|
|
|
-----------------------
|
|
MSVC++ STEP 5: Consider and Configure Optional Features
|
|
-----------------------
|
|
|
|
1. Locally installed help is optional, but required for a full Release
|
|
build. (The "help" folder is included in the installer, but removed from
|
|
the zip distribution.) The Python library is required, obtainable from
|
|
http://www.python.org/download/ . Add the location of the top-level
|
|
directory where you installed Python to your Path environment
|
|
variable. For instructions on setting environment variables, see the
|
|
previous section, "MSVC++ STEP 4: Set wxWidgets location for Audacity".
|
|
|
|
Build the "help" project by enabling it in the MS Visual Studio
|
|
Configuration Manager (Build menu). This will download a copy of the
|
|
Manual wiki onto your machine and copy it to the correct place for
|
|
your build. If the local copy needs to be updated, run
|
|
audacity\scripts\mw2html_audacity\wiki2htm.bat
|
|
and re-build the "help" project.
|
|
|
|
|
|
2. To support languages other than English in your build of Audacity,
|
|
you must enable and build the optional "locale" project. This is
|
|
required for a full release. You will need to obtain msgfmt.exe from
|
|
http://audacity.sourceforge.net/files/msgfmt.zip. Add the location of
|
|
the directory containing msgfmt.exe to your Path environment variable.
|
|
Alternatively, put msgfmt.exe somewhere already in the Path,
|
|
e.g., C:\Windows.
|
|
|
|
|
|
3. 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://manual.audacityteam.org/index.php?title=FAQ:Installation_and_Plug-Ins#lame
|
|
|
|
* 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 desired.
|
|
|
|
|
|
4. 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 presence will cause DirectSound
|
|
support to be automatically included when Audacity is built.
|
|
|
|
Audacity releases from 1.3.7 onwards include DirectSound support.
|
|
|
|
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 would like ASIO support, install the ASIO SDK from Steinberg
|
|
(http://www.steinberg.net ... select Company, then Developer),
|
|
install at C:\ASIOSDK, then define an environment variable called
|
|
ASIOSDK_DIR, as 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
|
|
|
|
|
|
|
|
-----------------------
|
|
MSVC++ STEP 6: Build Audacity
|
|
-----------------------
|
|
|
|
Run Visual C++ and load the Audacity solution,
|
|
"audacity\win\audacity.sln".
|
|
|
|
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.
|
|
|
|
|
|
-----------------------
|
|
MSVC++ STEP 7: 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.12\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.
|
|
|
|
If this procedure doesn't work, check the "Common Compilation
|
|
Errors" section on
|
|
http://audacityteam.org/wiki/index.php?title=Developing_On_Windows .
|
|
|
|
If you still need help after that, please ask on the "Compiling
|
|
Audacity" board at http://forum.audacityteam.org/. However, the first
|
|
suggestion there is likely to be "try it again with a clean
|
|
installation of the wxWidgets source and the latest Audacity source
|
|
from SVN". So if that's not what you attempted, please 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.12 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 SVN 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.
|