summaryrefslogtreecommitdiffstats
path: root/README.rst
diff options
context:
space:
mode:
authorAnastasia Klimchuk <aklm@chromium.org>2023-05-10 18:20:58 +1000
committerAnastasia Klimchuk <aklm@chromium.org>2023-05-23 09:33:08 +0000
commit4fbb152402810c3ed07438de13dfc01efbb4d7d4 (patch)
tree81d250014db8faf47ff50a0765458b809e258009 /README.rst
parent5c8469953b7551470a7664b3a083fe248a91457f (diff)
downloadflashrom-4fbb152402810c3ed07438de13dfc01efbb4d7d4.tar.gz
flashrom-4fbb152402810c3ed07438de13dfc01efbb4d7d4.tar.bz2
flashrom-4fbb152402810c3ed07438de13dfc01efbb4d7d4.zip
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>
Diffstat (limited to 'README.rst')
-rw-r--r--README.rst190
1 files changed, 15 insertions, 175 deletions
diff --git a/README.rst b/README.rst
index ff7334167..428ae57e4 100644
--- a/README.rst
+++ b/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`.
-Build Instructions
-------------------
+Building / installing / packaging
+---------------------------------
flashrom supports building with **make** and **meson**.
-Meson build system supports almost all the environments, although not exactly
-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
-:doc:`dev_guide/building_from_source`
-
-If you are unsure which build system to use, and/or don't know what's the
-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)
+TLDR, building with meson
+"""""""""""""""""""""""""
-**On FreeBSD, you need the following ports:**
+::
- * devel/gmake
- * devel/libpci
+ meson setup builddir
+ meson compile -C builddir
+ meson install -C builddir
-**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**::
+For full detailed instructions, follow the information in
+:doc:`dev_guide/building_from_source`
- gmake
+TLDR, building with make
+""""""""""""""""""""""""
-**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.
-
+For full detailed instructions, follow the information in
+:doc:`dev_guide/building_with_make`
Contact
-------