diff options
author | Michele Calgaro <[email protected]> | 2020-09-11 14:38:47 +0900 |
---|---|---|
committer | Michele Calgaro <[email protected]> | 2020-09-11 14:38:47 +0900 |
commit | 884c8093d63402a1ad0b502244b791e3c6782be3 (patch) | |
tree | a600d4ab0d431a2bdfe4c15b70df43c14fbd8dd0 /debian/mp4v2/mp4v2-2.0.0~dfsg0/doc/BuildRepository.txt | |
parent | 14e1aa2006796f147f3f4811fb908a6b01e79253 (diff) | |
download | extra-dependencies-884c8093d63402a1ad0b502244b791e3c6782be3.tar.gz extra-dependencies-884c8093d63402a1ad0b502244b791e3c6782be3.zip |
Added debian extra dependency packages.
Signed-off-by: Michele Calgaro <[email protected]>
Diffstat (limited to 'debian/mp4v2/mp4v2-2.0.0~dfsg0/doc/BuildRepository.txt')
-rw-r--r-- | debian/mp4v2/mp4v2-2.0.0~dfsg0/doc/BuildRepository.txt | 720 |
1 files changed, 720 insertions, 0 deletions
diff --git a/debian/mp4v2/mp4v2-2.0.0~dfsg0/doc/BuildRepository.txt b/debian/mp4v2/mp4v2-2.0.0~dfsg0/doc/BuildRepository.txt new file mode 100644 index 00000000..aab40aa8 --- /dev/null +++ b/debian/mp4v2/mp4v2-2.0.0~dfsg0/doc/BuildRepository.txt @@ -0,0 +1,720 @@ +MP4v2 2.0.0 Building the Repository +*********************************** + +Table of Contents +***************** + +1 Overview +2 Introduction +3 Quickstart +4 Build Process + 4.1 Checkout Sources + 4.2 Boostrap (Autotools) + 4.3 Configure + 4.4 Build + 4.5 Install + 4.6 Create Distribution + 4.7 Build Documentation + 4.8 Post Site and API Documentation to project website. +5 Platform Notes + 5.1 Mac OS X + 5.1.1 Default Binaries + 5.1.2 Release Binaries + 5.1.3 Developer Binaries + 5.1.4 Universal Binaries - all architectures + 5.1.5 Universal Binaries - selected architectures + 5.2 Linux + 5.2.1 Default Binaries + 5.2.2 Release Binaries + 5.2.3 Developer Binaries + 5.2.4 Bi-arch compilation + 5.3 FreeBSD + 5.3.1 Default Binaries + 5.3.2 Release Binaries + 5.3.3 Developer Binaries + 5.3.4 Bi-arch compilation + 5.4 Solaris + 5.4.1 Default Binaries + 5.4.2 Release Binaries + 5.4.3 Developer Binaries + 5.4.4 Bi-arch compilation + 5.5 Cygwin + 5.5.1 Default Binaries + 5.5.2 Release Binaries + 5.5.3 Developer Binaries + 5.6 Windows + + +1 Overview +********** + +The documented and supported method to build MP4v2 uses the GNU build +system (also known as the Autotools). You must first obtain the sources +by either downloading and extracting the source-distribution bundle or +working directly MP4v2's Subversion repository. We have build documents +for both methods, but unless you are a member of the MP4v2 project, you +are strongly encouraged to use the source-distribution method. + +On other supported platforms which lack Autotools we provide an +alternative method for building the software. Please see the +appropriate platform section. + +2 Introduction +************** + +This document describes the recommended process to build MP4v2 from the +repository. This process is a superset of the process to build from a +source-distribution bundle. If you are interested in building from a +source-distribution bundle then this document is not for you. + +3 Quickstart +************ + +This chapter is for the impatient or those just looking for a quick +summary of all the commands used in a typical build. You may skip this +summary and jump to *note Build Process::. + + svn checkout https://mp4v2.googlecode.com/svn/releases/2.0.0 mp4v2 + cd mp4v2 + autoreconf -fiv + rm -fr build/ + mkdir build/ + cd build/ + ../configure + make + make install + make install-man + make dist + +4 Build Process +*************** + +4.1 Checkout Sources +==================== + +Checkout sources from the project's Subversion repository. + +Sources are checked out from either the trunk, release or a branch. +This document was generated from one of those, and for example +purposes, we will use exactly the same URL which used to create the +distribution which contains this document. + +If you are a project member, then you may add the appropriate +login/password information as needed. + + svn checkout https://mp4v2.googlecode.com/svn/releases/2.0.0 mp4v2 + cd mp4v2 + +It is recommended to use Subversion 1.5.0 or higher. Lower versions +might work. + +4.2 Boostrap (Autotools) +======================== + +The following command causes forces Autotools to regenerate all files +and install helper scripts needed at configure-time and to regenerate +all files. + + autoreconf -fiv + +If you are a project member and preparing for a release, it is +important to note that the versions of Autotools available in your path +will directly effect files added to the bundle. At the time of writing, +the following versions of Autotools are recommended; in some cases a +minimum is hard-coded and warnings will be issued if in violation: + + * GNU autoconf 2.61 or higher (lower versions might work) + + * GNU automake 1.10 or higher (lower versions might work) + + * GNU libtool 1.5.26 or higher (lower versions might work) + +4.3 Configure +============= + +The following command configures the project for a build. It is highly +recommended that you invoke configure from an empty directory. + + rm -fr build/ + mkdir build/ + cd build/ + ../configure + +Please see `INSTALL' for details on configure usage, and standard +options. Additionally, the following custom options have been added to +`configure': + +`--disable-debug' + Do not generate debug information. Do not direct compiler to + generate debugging information. By default the compiler will + generate debug information if the platform supports it. + +`--disable-optimize' + Do not optimize. Do not direct compiler to optimize code. By + default compiler optimization is enabled if the platform supports + it. + +`--disable-fvisibility' + Do not set default ELF symbol visibility. By default configure + attempts to detect if the compiler supports this feature. However + on some platforms detecting incompatibilty of this feature might + not be accurate in which case this option should be given. + +`--disable-gch' + By default certain platforms are marked to use GCC precompiled + headers. Generally this greatly decrease build times but may + require more diligence for iterative development; that is to say + dependencies may not properly be tracked and more frequent `make + clean' may be required when headers are changed. Use this option + to disable GCC precompiled headers. + +`--disable-largefile' + On some 32-bit platforms or configurations it might be desirable + to build without largefile (LFS) support. By default configure + attempts to detect formal LFS support and enables it if found. + +`--disable-util' + Do not build/install utilities. This is convenience option for + users who desire to skip building the utilities (eg. command-line + executables) which are enabled by default. + +`--enable-bi=ARCH' + On bi-arch capable platforms it is possible to generate 32 or 64 + bit code. This is supported by adding arguments `-m32' or `-m64', + respectively, when compiling or linking. Use this option to + override the platform-specific default. + +`--enable-ub[=ARCHS]' + On OSX systems it is possible to generate universal binaries. This + is supported by adding one or more argument patterns `-arch ARCH' + when compiling or linking. Use this option to either target an + architecture different from the platform default, or to produce + universal binaries. + +`--enable-dependency-tracking' + Enable automatic dependency tracking for include-files. By default + this feature is disabled. + + +4.4 Build +========= + +The following command will build MP4v2. + + make + +On some platforms `make' refers to a BSD-flavor of make which is not +compatible with this project. Check if `gmake' is installed, and if it +is, substitute `gmake' wherever you may see `make' in this document. +Otherwise you will need to install GNU make package version 3.81 or +higher. Lower versions might work. + +4.5 Install +=========== + +The following command will install MP4v2. + + make install + make install-man + +4.6 Create Distribution +======================= + +The following command will create a MP4v2 source distribution. It is +during this step that shipped documentation is generated. + + make dist + +This step in the build process introduces additional requirements to +the host system. While most of the following utilities are generally +available, `help2man' is used to generate man-pages; however if this +command is not available the man-pages will be empty. This is +acceptable for non-release builds but for full quality builds this +command is required. + + * GNU help2man 1.36 or higher (lower versions should work) + + * GNU tar 1.15.1 or higher (lower versions should work) + + * GNU gzip 1.3.10 or higher (lower versions should work) + + * bzip2 1.0.4 or higher (lower versions should work) + + * Info-ZIP zip 2.32 or higher (lower versions should work) + +4.7 Build Documentation +======================= + +This step in the build process introduces some significant requirements +to the host system: + + * GNU texinfo 4.8 or higher (lower versions should work) + + * Doxygen 1.5.7 or higher (lower versions should work) + +Documentation that is shipped with source-distribution is generated as +part of the *note Build Process:: step. This section documents builds +all of the supported methods to build documentation. There are three +kinds of documentation in this project; man-pages, articles and API. +Documentation must be build from the repository. + +Man-pages are automatically generated for command-line utilities by +using `html2man' which invokes standard options `--help' and +`--version' and gleans the information, generating a man-page in nroff +script. Note that the utilities will first be built as they are +depdendencies of man-page generation. + +Artcles are usually hand-written and authored in Texinfo format which +permits macro-expansions, simple formatting and conversion to several +popular formats using the GNU `makeinfo'. A Texinfo manual +(http://www.gnu.org/software/texinfo) is available. + +API is documented inline to C and C++ source files, usually headers +using Doxygen comment-formatting. Doxygen is then used to post-process +these files and generate documentation in various formats. A Doxygen +manual is available at it's main site (http://www.doxygen.org) . + +The project's goal is to document as thoroughly as possible the public +API in MP4v2. Since we never have enough time to document everything, +we try to set some priorities in this regard. Generally the public API +is the highest priority to document. Next most important is probably +underlying utility code which is shared by many developers; for example +libplatform. + +If you need examples of how to document C-compatible source see +`include/mp4v2/mp4v2.h' and for C++-only source see +`libplatform/io/File.h' . + +The following table describes the various make targets available for +building docs. Note you must first have completed the *note Configure:: +step. + +`make man' + Generate man-pages for command-line utilities. + +`make html' + Generate articles in HTML format from `texi' files. + +`make txt' + Generate articles in plaintext format from `texi' files. + +`make wiki' + Generate articles in Google Code Wiki format from `texi' files. + +`make xml' + Generate articles in (Texinfo) XML format from `texi' files. + +`make api' + Generate API in HTML format from header files. + +`make articles' + Convenience; the equivalent of `make html txt wiki xml' . + +`make doc' + Convenience; the equivalent of `make man articles api' . + + +And finally all of the document targets have a corresponding clean +target which cleans up generated files. Simply prefix as follows: + + make manclean + make htmlclean + make txtclean + make wikiclean + make xmlclean + make apiclean + make articlesclean + make docclean + +4.8 Post Site and API Documentation to project website. +======================================================= + +This step is for project maintainers and can be used to update Site and +API documentation. The following components are updated: + + * Featured Wiki article: BuildRepository + + * Featured Wiki article: BuildSource + + * MP4v2 (trunk) docs (includes Release Notes and other articles, and + API docs). + +This procedure may only be run from a *nix platform and has only been +tested on Mac OS X. + +`make google.clean' + Clean any local working copy of google changeset. + +`make google.post' + Generate required docs, sparse-checkout google tree, remove files + which are no longer generated, add new files which are generated, + and update existing files. + +`svn ci -m "-refreshed GoogleCode site+api docs." google/.' + Check-in changes. This might take several minutes, especially if + your upstream bandwidth is limited. + + +5 Platform Notes +**************** + +MP4v2 builds on many unix-style platforms, also commonly referred to as +posix-style systems. Building on Mac OS X, Linux, FreeBSD, Solaris, +Cygwin, Windows are known to work. + +Similar platforms should also work. Please see the following platform +specific notes for instructions on commonly used options for various +platforms. + +5.1 Mac OS X +============ + +Building on Mac OS X is well supported as it is used by maintainers of +this project. The following are the recommended specifications for this +platform; but is not necessarily the only configuration that is +possible: + + * Mac Intel hardware + + * Mac OS X 10.5.7 + + * Xcode-3.1.2 + + * gcc 4.0.1 (Apple Inc. build 5493) + + * gcc 4.2.1 (Apple Inc. build 5570) + + Note: It is recommended to use the platform distribution's bundled + compiler for maximum C++ compatibility. If you build with a custom + compiler it will likely introduce non-standard runtime + requirements for your users. There are of course many valid + reasons to build with unbundled compilers, but be aware that is + generally unsupported and left as an exercise to the reader. + +5.1.1 Default Binaries +---------------------- + +The preferred method to produce default binaries is to run configure +without any options which will compile with debug+optimize and produce +static+shared libraries and dynamic executables. + + ../configure + +5.1.2 Release Binaries +---------------------- + +The preferred method to produce binaries suitable for releases, (ie. +which does not contain debug information) is to pass the following to +configure: + + ../configure --disable-debug + +5.1.3 Developer Binaries +------------------------ + +The preferred method to produce binaries suitable for development is to +pass the following to configure. Default Binaries will work, however +for the best debugging experience we recommend no optimize and no +static libraries. + + ../configure --disable-optimize --disable-static + +5.1.4 Universal Binaries - all architectures +-------------------------------------------- + +The preferred method to produce universal binaries for all supported +architectures is to pass the following option to configure. As of this +writing, architectures { i386, x86_64, ppc, ppc64 } are built. + + ../configure --enable-ub + +5.1.5 Universal Binaries - selected architectures +------------------------------------------------- + +The preferred method to produce universal binaries for selected +architectures is to specify a comma-delimited list specifying the +desired architecture identifiers. Passing the following option will +produce universal binaries for architectures { i386, x86_64 }. + + ../configure --enable-ub=i386,x86_64 + +5.2 Linux +========= + +Building on Linux is well supported as it is used by maintainers of +this project. The following are the recommended specifications for this +platform; but is not necessarily the only configuration that is +possible: + + * Intel 32-bit or 64-bit hardware + + * Fedora 10, gcc 4.3.2 + + * gcc 3.4.0 or higher is reported to work + + Note: It is recommended to use the platform distribution's bundled + compiler for maximum C++ compatibility. If you build with a custom + compiler it will likely introduce non-standard runtime + requirements for your users. There are of course many valid + reasons to build with unbundled compilers, but be aware that is + generally unsupported and left as an exercise to the reader. + +5.2.1 Default Binaries +---------------------- + +The preferred method to produce default binaries is to run configure +without any options which will compile with debug+optimize and produce +static+shared libraries and dynamic executables. + + ../configure + +5.2.2 Release Binaries +---------------------- + +The preferred method to produce binaries suitable for releases, (ie. +which does not contain debug information) is to pass the following to +configure: + + ../configure --disable-debug + +5.2.3 Developer Binaries +------------------------ + +The preferred method to produce binaries suitable for development is to +pass the following to configure. Default Binaries will work, however +for the best debugging experience we recommend no optimize and no +static libraries. + + ../configure --disable-optimize --disable-static + +5.2.4 Bi-arch compilation +------------------------- + +The preferred method to produce a bi-arch binary is to specify the +target (eg. 32-bit) with the following option to configure. This +example will produce a 32-bit binary if compiling on a platform which +defaults to producing 64-bit binaries. The inverse is also possible. + + ../configure --enable-bi=32 + + Warning: Currently bi-arch cross-compilation is not supported due + to a bug with libtool which fails miserably during linking. + +5.3 FreeBSD +=========== + +Building on FreeBSD is supported. The following are the recommended +specifications for this platform; but is not necessarily the only +configuration that is possible: + + * Intel 32-bit or 64-bit hardware + + * FreeBSD 7.0 Release, gcc 4.2.1 + + * gcc 3.4.0 or higher is reported to work + + Note: It is recommended to use the platform distribution's bundled + compiler for maximum C++ compatibility. If you build with a custom + compiler it will likely introduce non-standard runtime + requirements for your users. There are of course many valid + reasons to build with unbundled compilers, but be aware that is + generally unsupported and left as an exercise to the reader. + +5.3.1 Default Binaries +---------------------- + +The preferred method to produce default binaries is to run configure +without any options which will compile with debug+optimize and produce +static+shared libraries and dynamic executables. + + ../configure + +5.3.2 Release Binaries +---------------------- + +The preferred method to produce binaries suitable for releases, (ie. +which does not contain debug information) is to pass the following to +configure: + + ../configure --disable-debug + +5.3.3 Developer Binaries +------------------------ + +The preferred method to produce binaries suitable for development is to +pass the following to configure. Default Binaries will work, however +for the best debugging experience we recommend no optimize and no +static libraries. + + ../configure --disable-optimize --disable-static + +5.3.4 Bi-arch compilation +------------------------- + +The preferred method to produce a bi-arch binary is to specify the +target (eg. 32-bit) with the following option to configure. This +example will produce a 32-bit binary if compiling on a platform which +defaults to producing 64-bit binaries. The inverse is also possible. + + ../configure --enable-bi=32 + + Warning: Currently bi-arch cross-compilation is not supported due + to a bug with libtool which fails miserably during linking. + +5.4 Solaris +=========== + +Building on Solaris is supported. The following are the recommended +specifications for this platform; but is not necessarily the only +configuration that is possible: + + * Intel 32-bit or 64-bit hardware + + * Solaris 10u6, gcc 3.4.3 + + * gcc 3.4.0 or higher is reported to work + + Note: It is recommended to use the platform distribution's bundled + compiler for maximum C++ compatibility. If you build with a custom + compiler it will likely introduce non-standard runtime + requirements for your users. There are of course many valid + reasons to build with unbundled compilers, but be aware that is + generally unsupported and left as an exercise to the reader. + + Note: Solaris does not (yet) really bundle a compiler. The + recommendation is to use the companion-disk compiler for maximum + C++ runtime compatibility. It is usually found in `/usr/sfw/bin'. + +5.4.1 Default Binaries +---------------------- + +The preferred method to produce default binaries is to run configure +without any options which will compile with debug+optimize and produce +static+shared libraries and dynamic executables. + + ../configure + +5.4.2 Release Binaries +---------------------- + +The preferred method to produce binaries suitable for releases, (ie. +which does not contain debug information) is to pass the following to +configure: + + ../configure --disable-debug + +5.4.3 Developer Binaries +------------------------ + +The preferred method to produce binaries suitable for development is to +pass the following to configure. Default Binaries will work, however +for the best debugging experience we recommend no optimize and no +static libraries. + + ../configure --disable-optimize --disable-static + +5.4.4 Bi-arch compilation +------------------------- + +The preferred method to produce a bi-arch binary is to specify the +target (eg. 32-bit) with the following option to configure. This +example will produce a 32-bit binary if compiling on a platform which +defaults to producing 64-bit binaries. The inverse is also possible. + + ../configure --enable-bi=32 + + Warning: Currently bi-arch cross-compilation is not supported due + to a bug with libtool which fails miserably during linking. + +5.5 Cygwin +========== + +Building on Cygwin is supported. The following are the recommended +specifications for this platform; but is not necessarily the only +configuration that is possible: + + * Intel 32-bit or 64-bit hardware + + * Cygwin, gcc 4.3.2 + + * gcc 3.4.0 or higher is reported to work + + Note: As of this writing, Cygwin has available to it several + versions of gcc; only one of which may be found and used in the + path as `gcc' and `g++'. Configure will thus find what is probably + the older more stable version of gcc in a typical Cygwin + environment. If you desire to build with the newer gcc, it is + found in the path as `gcc-4' and `g++-4' respectively and you must + indicate to configure the desired versions. Defining the following + variables beforing running configure should do the trick: + + setenv CC gcc-4 + setenv CXX gcc-4 + ../configure + +5.5.1 Default Binaries +---------------------- + +The preferred method to produce default binaries is to run configure +without any options which will compile with debug+optimize and produce +static+shared libraries and dynamic executables. + + ../configure + +5.5.2 Release Binaries +---------------------- + +The preferred method to produce binaries suitable for releases, (ie. +which does not contain debug information) is to pass the following to +configure: + + ../configure --disable-debug + +5.5.3 Developer Binaries +------------------------ + +The preferred method to produce binaries suitable for development is to +pass the following to configure. Default Binaries will work, however +for the best debugging experience we recommend no optimize and no +static libraries. + + ../configure --disable-optimize --disable-static + +5.6 Windows +=========== + +Native builds on Windows is supported via Microsoft's Visual Studio +package. Both the commercial version and free version (express) are +known to work. The following are the recommended specifications for +this platform; but is not necessarily the only configuration that is +possible: + + * Intel 32-bit or 64-bit hardware + + * Windows 2000 or higher, Visual Studio 9.0 (aka. Visual Studio 2008) + + * Visual Studio 9.0 Express is reported to work + +Only 32-bit binaries are targeted, and win32-API is set to Windows 2000 +or higher. Older versions of Windows, or win32-API are not supported. + +MP4v2 has directory `vstudio9.0/' which contains the necessary +solution+project files to produce a basic build of libmp4v2's DLL and +several command-line executables. Enabling things such as debugging, +optimization, etc, are all left as an exercise to the user. + + Warning: Project meta-data is stored in header `project.h'. A + proper source distribution is built using autotools and generates + `TOP/include/mp4v2/project.h' correctly, which is then bundled + with our source distribution. This is adequate for building on the + Windows platform. + + However, if you are building from the repository, be warned that + there is no method to automatically generate `project.h' on + Windows. Instead, we periodically checkin a copy of this file + (generated using autotools) as + `vstudio9.0/include/mp4v2/project.h' which may from time to time + get out of date. If it is significantly out of date, you should + find the latest source distribution and copy the `project.h' from + there. + |