diff options
author | Anastasia Klimchuk <aklm@chromium.org> | 2023-05-10 18:20:58 +1000 |
---|---|---|
committer | Anastasia Klimchuk <aklm@chromium.org> | 2023-05-23 09:33:08 +0000 |
commit | 4fbb152402810c3ed07438de13dfc01efbb4d7d4 (patch) | |
tree | 81d250014db8faf47ff50a0765458b809e258009 /README.rst | |
parent | 5c8469953b7551470a7664b3a083fe248a91457f (diff) | |
download | flashrom-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.rst | 190 |
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 ------- |