mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-27 15:12:36 +02:00
README: Extract instructions for meson and make into separate docs
This patch extracts building/installing/packaging documentation for meson and make into two separate doc files, and then links these files from README. Re-structure README so that it gives only a brief overview of build instructions and links to full instructions for meson and make. Ticket: https://ticket.coreboot.org/issues/489 Change-Id: I2d5900538d54c43efcc8c5b7010df5d867f3b190 Signed-off-by: Anastasia Klimchuk <aklm@chromium.org> Reviewed-on: https://review.coreboot.org/c/flashrom/+/75125 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Peter Marheine <pmarheine@chromium.org>
This commit is contained in:
parent
5c8469953b
commit
4fbb152402
194
README.rst
194
README.rst
@ -20,193 +20,33 @@ Please make a backup of your flash chip before writing to it.
|
|||||||
Please see the flashrom(8) manpage :doc:`classic_cli_manpage`.
|
Please see the flashrom(8) manpage :doc:`classic_cli_manpage`.
|
||||||
|
|
||||||
|
|
||||||
Build Instructions
|
Building / installing / packaging
|
||||||
------------------
|
---------------------------------
|
||||||
|
|
||||||
flashrom supports building with **make** and **meson**.
|
flashrom supports building with **make** and **meson**.
|
||||||
|
|
||||||
Meson build system supports almost all the environments, although not exactly
|
TLDR, building with meson
|
||||||
all of them. Full meson support is on the roadmap in the nearest future.
|
"""""""""""""""""""""""""
|
||||||
To build flashrom with meson, follow the instruction and information in
|
|
||||||
|
::
|
||||||
|
|
||||||
|
meson setup builddir
|
||||||
|
meson compile -C builddir
|
||||||
|
meson install -C builddir
|
||||||
|
|
||||||
|
For full detailed instructions, follow the information in
|
||||||
:doc:`dev_guide/building_from_source`
|
:doc:`dev_guide/building_from_source`
|
||||||
|
|
||||||
If you are unsure which build system to use, and/or don't know what's the
|
TLDR, building with make
|
||||||
difference, use make for now.
|
""""""""""""""""""""""""
|
||||||
|
|
||||||
The rest of Build Instructions below refers to building flashrom with make.
|
::
|
||||||
|
|
||||||
**To build flashrom you need to install the following software:**
|
|
||||||
|
|
||||||
* C compiler (GCC / clang)
|
|
||||||
* pkg-config
|
|
||||||
|
|
||||||
* pciutils+libpci (if you want support for mainboard or PCI device flashing)
|
|
||||||
* libusb (if you want FT2232, Dediprog or USB-Blaster support)
|
|
||||||
* libftdi (if you want FT2232 or USB-Blaster support)
|
|
||||||
* libjaylink (if you want support for SEGGER J-Link and compatible devices)
|
|
||||||
|
|
||||||
**Linux et al:**
|
|
||||||
|
|
||||||
* pciutils / libpci
|
|
||||||
* pciutils-devel / pciutils-dev / libpci-dev
|
|
||||||
* zlib-devel / zlib1g-dev (needed if libpci was compiled with libz support)
|
|
||||||
|
|
||||||
**On FreeBSD, you need the following ports:**
|
|
||||||
|
|
||||||
* devel/gmake
|
|
||||||
* devel/libpci
|
|
||||||
|
|
||||||
**On OpenBSD, you need the following ports:**
|
|
||||||
|
|
||||||
* devel/gmake
|
|
||||||
* sysutils/pciutils
|
|
||||||
|
|
||||||
**To compile on Linux, use**::
|
|
||||||
|
|
||||||
make
|
make
|
||||||
|
|
||||||
**To compile on FreeBSD, OpenBSD or DragonFly BSD, use**::
|
|
||||||
|
|
||||||
gmake
|
|
||||||
|
|
||||||
**To compile on Nexenta, use**::
|
|
||||||
|
|
||||||
make
|
|
||||||
|
|
||||||
**To compile on Solaris, use**::
|
|
||||||
|
|
||||||
gmake LDFLAGS="-L$pathtolibpci" CC="gcc -I$pathtopciheaders" CFLAGS=-O2
|
|
||||||
|
|
||||||
**To compile on NetBSD (with pciutils, libftdi, libusb installed in /usr/pkg/), use**::
|
|
||||||
|
|
||||||
gmake
|
|
||||||
|
|
||||||
**To compile and run on Darwin/Mac OS X:**
|
|
||||||
|
|
||||||
Install DirectHW from coresystems GmbH.
|
|
||||||
DirectHW is available at https://www.coreboot.org/DirectHW .
|
|
||||||
|
|
||||||
**To cross-compile on Linux for DOS:**
|
|
||||||
|
|
||||||
Get packages of the DJGPP cross compiler and install them:
|
|
||||||
|
|
||||||
* djgpp-filesystem djgpp-gcc djgpp-cpp djgpp-runtime djgpp-binutils
|
|
||||||
|
|
||||||
As an alternative, the DJGPP web site offers packages for download as well:
|
|
||||||
|
|
||||||
* djcross-binutils-2.29.1-1ap.x86_64.rpm
|
|
||||||
* djcross-gcc-7.2.0-1ap.x86_64.rpm
|
|
||||||
* djcrx-2.05-5.x86_64.rpm
|
|
||||||
|
|
||||||
The cross toolchain packages for your distribution may have slightly different
|
|
||||||
names (look for packages named *djgpp*).
|
|
||||||
|
|
||||||
Alternatively, you could use a script to build it from scratch:
|
|
||||||
https://github.com/andrewwutw/build-djgpp
|
|
||||||
|
|
||||||
You will need the libpci and libgetopt library source trees and
|
|
||||||
their compiled static libraries and header files installed in some
|
|
||||||
directory say libpci-libgetopt/, which will be later specified with
|
|
||||||
LIBS_BASE parameter during flashrom compilation. Easiest way to
|
|
||||||
handle it is to put pciutils, libgetopt and flashrom directories
|
|
||||||
in one subdirectory. There will be an extra subdirectory libpci-libgetopt
|
|
||||||
created, which will contain compiled libpci and libgetopt.
|
|
||||||
|
|
||||||
Download pciutils 3.5.6 and apply https://flashrom.org/File:Pciutils-3.5.6.patch.gz
|
|
||||||
Compile pciutils, using following command line::
|
|
||||||
|
|
||||||
make ZLIB=no DNS=no HOST=i386-djgpp-djgpp CROSS_COMPILE=i586-pc-msdosdjgpp- \
|
|
||||||
PREFIX=/ DESTDIR=$PWD/../libpci-libgetopt \
|
|
||||||
STRIP="--strip-program=i586-pc-msdosdjgpp-strip -s" install install-lib
|
|
||||||
|
|
||||||
Download and compile with 'make' https://flashrom.org/File:Libgetopt.tar.gz
|
|
||||||
|
|
||||||
Copy the libgetopt.a to ../libpci-libgetopt/lib and
|
|
||||||
getopt.h to ../libpci-libgetopt/include
|
|
||||||
|
|
||||||
Enter the flashrom directory::
|
|
||||||
|
|
||||||
make CC=i586-pc-msdosdjgpp-gcc STRIP=i586-pc-msdosdjgpp-strip LIBS_BASE=../libpci-libgetopt/ strip
|
|
||||||
|
|
||||||
If you like, you can compress the resulting executable with UPX::
|
|
||||||
|
|
||||||
upx -9 flashrom.exe
|
|
||||||
|
|
||||||
To run flashrom.exe, download https://flashrom.org/File:Csdpmi7b.zip and
|
|
||||||
unpack CWSDPMI.EXE into the current directory or one in PATH.
|
|
||||||
|
|
||||||
**To cross-compile on Linux for Windows:**
|
|
||||||
|
|
||||||
Get packages of the MinGW cross compiler and install them::
|
|
||||||
|
|
||||||
mingw32-filesystem mingw32-cross-cpp mingw32-cross-binutils mingw32-cross-gcc
|
|
||||||
mingw32-runtime mingw32-headers
|
|
||||||
|
|
||||||
The cross toolchain packages for your distribution may have slightly different
|
|
||||||
names (look for packages named *mingw*).
|
|
||||||
PCI-based programmers (internal etc.) are not supported on Windows.
|
|
||||||
Run (change CC= and STRIP= settings where appropriate)::
|
|
||||||
|
|
||||||
make CC=i686-w64-mingw32-gcc STRIP=i686-w64-mingw32-strip
|
|
||||||
|
|
||||||
**Processor architecture dependent features:**
|
|
||||||
|
|
||||||
On non-x86 architectures a few programmers don't work (yet) because they
|
|
||||||
use port-based I/O which is not directly available on non-x86. Those
|
|
||||||
programmers will be disabled automatically if you run "make".
|
|
||||||
|
|
||||||
**Compiler quirks:**
|
|
||||||
|
|
||||||
If you are using clang and if you want to enable only one driver, you may hit an
|
|
||||||
overzealous compiler warning from clang. Compile with "make WARNERROR=no" to
|
|
||||||
force it to continue and enjoy.
|
|
||||||
|
|
||||||
**Bindings:**
|
|
||||||
|
|
||||||
Foreign function interface bindings for the rust language are included in the
|
|
||||||
bindings folder. These are not compiled as part of the normal build process.
|
|
||||||
See the readme under bindings/rust for more information.
|
|
||||||
|
|
||||||
|
|
||||||
Installation
|
|
||||||
------------
|
|
||||||
|
|
||||||
In order to install flashrom and the manpage into /usr/local, type::
|
|
||||||
|
|
||||||
make install
|
make install
|
||||||
|
|
||||||
For installation in a different directory use DESTDIR, e.g. like this::
|
For full detailed instructions, follow the information in
|
||||||
|
:doc:`dev_guide/building_with_make`
|
||||||
make DESTDIR=/usr install
|
|
||||||
|
|
||||||
If you have insufficient permissions for the destination directory, use sudo
|
|
||||||
by adding sudo in front of the commands above.
|
|
||||||
|
|
||||||
|
|
||||||
Packaging
|
|
||||||
---------
|
|
||||||
|
|
||||||
To package flashrom and remove dependencies on Git, either use::
|
|
||||||
|
|
||||||
make export
|
|
||||||
|
|
||||||
or::
|
|
||||||
|
|
||||||
make tarball
|
|
||||||
|
|
||||||
``make export`` will export all flashrom files from the Git repository at
|
|
||||||
revision HEAD into a directory named ``$EXPORTDIR/flashrom-$RELEASENAME``
|
|
||||||
and will additionally add a ``versioninfo.inc`` file in that directory to
|
|
||||||
contain the Git revision of the exported tree and a date for the manual
|
|
||||||
page.
|
|
||||||
|
|
||||||
``make tarball`` will simply tar up the result of make export and compress
|
|
||||||
it with bzip2.
|
|
||||||
|
|
||||||
The snapshot tarballs are the result of ``make tarball`` and require no
|
|
||||||
further processing. Some git files (for example the rust bindings) are omitted
|
|
||||||
from the tarball, as controlled by the .gitattributes files.
|
|
||||||
|
|
||||||
|
|
||||||
Contact
|
Contact
|
||||||
-------
|
-------
|
||||||
|
@ -240,15 +240,27 @@ For additional information see `the meson documentation <https://mesonbuild.com/
|
|||||||
|
|
||||||
Installing
|
Installing
|
||||||
----------
|
----------
|
||||||
Run::
|
To install flashrom and documentation, run::
|
||||||
|
|
||||||
meson install -C <builddir>
|
meson install -C <builddir>
|
||||||
|
|
||||||
This will install flashrom under the PREFIX selected in the configuration phase. Default is ``/usr/local``.
|
This will install flashrom under the PREFIX selected in the configuration phase. Default is ``/usr/local``.
|
||||||
|
|
||||||
|
To install into a different directory use DESTDIR, like this::
|
||||||
|
|
||||||
|
DESTDIR=/your/destination/directory meson install -C <your_build_dir>
|
||||||
|
|
||||||
|
You can also set the prefix during configuration with::
|
||||||
|
|
||||||
|
meson setup --prefix <DESTDIR> <your_build_dir>
|
||||||
|
|
||||||
Create distribution package
|
Create distribution package
|
||||||
---------------------------
|
---------------------------
|
||||||
To create a distribution tarball from your <builddir>, run::
|
To create a distribution tarball from your ``builddir``, run::
|
||||||
|
|
||||||
meson dist -C <builddir>
|
meson dist -C <builddir>
|
||||||
|
|
||||||
|
This will collect all git tracked files and pack them into an archive.
|
||||||
|
|
||||||
|
Current flashrom version is in the VERSION file. To release a new flashrom
|
||||||
|
version you need to change VERSION file and tag the changing commit.
|
||||||
|
185
doc/dev_guide/building_with_make.rst
Normal file
185
doc/dev_guide/building_with_make.rst
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
Building with make
|
||||||
|
==================
|
||||||
|
|
||||||
|
TLDR
|
||||||
|
----
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
|
||||||
|
Build instructions
|
||||||
|
------------------
|
||||||
|
|
||||||
|
**To build flashrom you need to install the following software:**
|
||||||
|
|
||||||
|
* C compiler (GCC / clang)
|
||||||
|
* pkg-config
|
||||||
|
|
||||||
|
* pciutils+libpci (if you want support for mainboard or PCI device flashing)
|
||||||
|
* libusb (if you want FT2232, Dediprog or USB-Blaster support)
|
||||||
|
* libftdi (if you want FT2232 or USB-Blaster support)
|
||||||
|
* libjaylink (if you want support for SEGGER J-Link and compatible devices)
|
||||||
|
|
||||||
|
**Linux et al:**
|
||||||
|
|
||||||
|
* pciutils / libpci
|
||||||
|
* pciutils-devel / pciutils-dev / libpci-dev
|
||||||
|
* zlib-devel / zlib1g-dev (needed if libpci was compiled with libz support)
|
||||||
|
|
||||||
|
**On FreeBSD, you need the following ports:**
|
||||||
|
|
||||||
|
* devel/gmake
|
||||||
|
* devel/libpci
|
||||||
|
|
||||||
|
**On OpenBSD, you need the following ports:**
|
||||||
|
|
||||||
|
* devel/gmake
|
||||||
|
* sysutils/pciutils
|
||||||
|
|
||||||
|
**To compile on Linux, use**::
|
||||||
|
|
||||||
|
make
|
||||||
|
|
||||||
|
**To compile on FreeBSD, OpenBSD or DragonFly BSD, use**::
|
||||||
|
|
||||||
|
gmake
|
||||||
|
|
||||||
|
**To compile on Nexenta, use**::
|
||||||
|
|
||||||
|
make
|
||||||
|
|
||||||
|
**To compile on Solaris, use**::
|
||||||
|
|
||||||
|
gmake LDFLAGS="-L$pathtolibpci" CC="gcc -I$pathtopciheaders" CFLAGS=-O2
|
||||||
|
|
||||||
|
**To compile on NetBSD (with pciutils, libftdi, libusb installed in /usr/pkg/), use**::
|
||||||
|
|
||||||
|
gmake
|
||||||
|
|
||||||
|
**To compile and run on Darwin/Mac OS X:**
|
||||||
|
|
||||||
|
Install DirectHW from coresystems GmbH.
|
||||||
|
DirectHW is available at https://www.coreboot.org/DirectHW .
|
||||||
|
|
||||||
|
**To cross-compile on Linux for DOS:**
|
||||||
|
|
||||||
|
Get packages of the DJGPP cross compiler and install them:
|
||||||
|
|
||||||
|
* djgpp-filesystem djgpp-gcc djgpp-cpp djgpp-runtime djgpp-binutils
|
||||||
|
|
||||||
|
As an alternative, the DJGPP web site offers packages for download as well:
|
||||||
|
|
||||||
|
* djcross-binutils-2.29.1-1ap.x86_64.rpm
|
||||||
|
* djcross-gcc-7.2.0-1ap.x86_64.rpm
|
||||||
|
* djcrx-2.05-5.x86_64.rpm
|
||||||
|
|
||||||
|
The cross toolchain packages for your distribution may have slightly different
|
||||||
|
names (look for packages named *djgpp*).
|
||||||
|
|
||||||
|
Alternatively, you could use a script to build it from scratch:
|
||||||
|
https://github.com/andrewwutw/build-djgpp
|
||||||
|
|
||||||
|
You will need the libpci and libgetopt library source trees and
|
||||||
|
their compiled static libraries and header files installed in some
|
||||||
|
directory say libpci-libgetopt/, which will be later specified with
|
||||||
|
LIBS_BASE parameter during flashrom compilation. Easiest way to
|
||||||
|
handle it is to put pciutils, libgetopt and flashrom directories
|
||||||
|
in one subdirectory. There will be an extra subdirectory libpci-libgetopt
|
||||||
|
created, which will contain compiled libpci and libgetopt.
|
||||||
|
|
||||||
|
Download pciutils 3.5.6 and apply https://flashrom.org/File:Pciutils-3.5.6.patch.gz
|
||||||
|
Compile pciutils, using following command line::
|
||||||
|
|
||||||
|
make ZLIB=no DNS=no HOST=i386-djgpp-djgpp CROSS_COMPILE=i586-pc-msdosdjgpp- \
|
||||||
|
PREFIX=/ DESTDIR=$PWD/../libpci-libgetopt \
|
||||||
|
STRIP="--strip-program=i586-pc-msdosdjgpp-strip -s" install install-lib
|
||||||
|
|
||||||
|
Download and compile with 'make' https://flashrom.org/File:Libgetopt.tar.gz
|
||||||
|
|
||||||
|
Copy the libgetopt.a to ../libpci-libgetopt/lib and
|
||||||
|
getopt.h to ../libpci-libgetopt/include
|
||||||
|
|
||||||
|
Enter the flashrom directory::
|
||||||
|
|
||||||
|
make CC=i586-pc-msdosdjgpp-gcc STRIP=i586-pc-msdosdjgpp-strip LIBS_BASE=../libpci-libgetopt/ strip
|
||||||
|
|
||||||
|
If you like, you can compress the resulting executable with UPX::
|
||||||
|
|
||||||
|
upx -9 flashrom.exe
|
||||||
|
|
||||||
|
To run flashrom.exe, download https://flashrom.org/File:Csdpmi7b.zip and
|
||||||
|
unpack CWSDPMI.EXE into the current directory or one in PATH.
|
||||||
|
|
||||||
|
**To cross-compile on Linux for Windows:**
|
||||||
|
|
||||||
|
Get packages of the MinGW cross compiler and install them::
|
||||||
|
|
||||||
|
mingw32-filesystem mingw32-cross-cpp mingw32-cross-binutils mingw32-cross-gcc
|
||||||
|
mingw32-runtime mingw32-headers
|
||||||
|
|
||||||
|
The cross toolchain packages for your distribution may have slightly different
|
||||||
|
names (look for packages named *mingw*).
|
||||||
|
PCI-based programmers (internal etc.) are not supported on Windows.
|
||||||
|
Run (change CC= and STRIP= settings where appropriate)::
|
||||||
|
|
||||||
|
make CC=i686-w64-mingw32-gcc STRIP=i686-w64-mingw32-strip
|
||||||
|
|
||||||
|
**Processor architecture dependent features:**
|
||||||
|
|
||||||
|
On non-x86 architectures a few programmers don't work (yet) because they
|
||||||
|
use port-based I/O which is not directly available on non-x86. Those
|
||||||
|
programmers will be disabled automatically if you run "make".
|
||||||
|
|
||||||
|
**Compiler quirks:**
|
||||||
|
|
||||||
|
If you are using clang and if you want to enable only one driver, you may hit an
|
||||||
|
overzealous compiler warning from clang. Compile with "make WARNERROR=no" to
|
||||||
|
force it to continue and enjoy.
|
||||||
|
|
||||||
|
**Bindings:**
|
||||||
|
|
||||||
|
Foreign function interface bindings for the rust language are included in the
|
||||||
|
bindings folder. These are not compiled as part of the normal build process.
|
||||||
|
See the readme under bindings/rust for more information.
|
||||||
|
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
|
In order to install flashrom and the manpage into /usr/local, type::
|
||||||
|
|
||||||
|
make install
|
||||||
|
|
||||||
|
For installation in a different directory use DESTDIR, e.g. like this::
|
||||||
|
|
||||||
|
make DESTDIR=/usr install
|
||||||
|
|
||||||
|
If you have insufficient permissions for the destination directory, use sudo
|
||||||
|
by adding sudo in front of the commands above.
|
||||||
|
|
||||||
|
|
||||||
|
Packaging
|
||||||
|
---------
|
||||||
|
|
||||||
|
To package flashrom and remove dependencies on Git, either use::
|
||||||
|
|
||||||
|
make export
|
||||||
|
|
||||||
|
or::
|
||||||
|
|
||||||
|
make tarball
|
||||||
|
|
||||||
|
``make export`` will export all flashrom files from the Git repository at
|
||||||
|
revision HEAD into a directory named ``$EXPORTDIR/flashrom-$RELEASENAME``
|
||||||
|
and will additionally add a ``versioninfo.inc`` file in that directory to
|
||||||
|
contain the Git revision of the exported tree and a date for the manual
|
||||||
|
page.
|
||||||
|
|
||||||
|
``make tarball`` will simply tar up the result of make export and compress
|
||||||
|
it with bzip2.
|
||||||
|
|
||||||
|
The snapshot tarballs are the result of ``make tarball`` and require no
|
||||||
|
further processing. Some git files (for example the rust bindings) are omitted
|
||||||
|
from the tarball, as controlled by the .gitattributes files.
|
@ -5,3 +5,4 @@ Developers documentation
|
|||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
building_from_source
|
building_from_source
|
||||||
|
building_with_make
|
||||||
|
Loading…
x
Reference in New Issue
Block a user