summaryrefslogtreecommitdiffstats
path: root/src/Makefile.housekeeping
Commit message (Collapse)AuthorAgeFilesLines
...
* [build] Add -fno-dwarf2-cfi-asm to CFLAGS if supported by the gcc in useMichael Brown2009-05-271-0/+10
| | | | | | | | | | | | | | | gcc 4.4 defaults to using .cfi assembler directives for debugging information, which causes unneeded .eh_frame sections to be generated. These sections are already stripped out by our linker script, so don't affect the final build, but do distort the output of "size" when run on individual .o files; the .eh_frame size is included within the size reported for .text. This makes it difficult to accurately judge the effects of source code changes upon object code size. Fix by adding -fno-dwarf2-cfi-asm to CFLAGS if we detect that this option is supported by the gcc that we are compiling with. Tested-by: Daniel Verkamp <daniel@drv.nu>
* [legal] Add licence.pl and %.licence make targetMichael Brown2009-05-181-1/+19
| | | | | | | | | | | | | It is now possible to run e.g. make bin/rtl8139.dsk.licence in order to see a licensing assessment for any given gPXE build. The assessment will either produce a single overall licence for the build (based on combining all the licences used within the source files for that build), or will exit with an error stating why a licence assessment is not possible (for example, if there are files involved that do not yet contain an explicit FILE_LICENCE() declaration).
* [build] Automatically sort the list of constituent object sizesMichael Brown2009-04-181-1/+2
|
* [build] Provide mechanism for listing constituent object sizesMichael Brown2009-04-181-0/+2
| | | | | | | | | | You can now type e.g. make bin/rtl8139.rom.sizes in order to see the (uncompressed) sizes of all of the object files linked in to bin/rtl8139.rom. This should make it easier to identify relevant code bloat.
* [build] Kill off the multiple-object-per-source-file mechanismMichael Brown2009-04-171-17/+1Star
| | | | | Now that there are no remaining multiple-object source files, kill off the mechanism in order to simplify the Makefile.
* [build] Provide mechanism for listing per-target source filesMichael Brown2009-04-171-0/+28
| | | | | | | | | | | | | | | | | | | | You can now type e.g. make bin/rtl8139.rom.deps to see a list of the source files included in the build of bin/rtl8139.rom. This is intended to assist with copyright vetting. Other new debugging targets include make bin/rtl8139.rom.objs to see a list of object files linked in to bin/rtl8139.rom, and make bin/rtl8139.rom.nodeps to see a list of the source files that are *not* required for the build of bin/rtl8139.rom.
* [build] Pad .rom, .dsk, and .hd images to 512-byte boundariesMichael Brown2009-04-161-0/+1
| | | | | | | | QEMU will silently round down a disk or ROM image file to the nearest 512 bytes. Fix by always padding .rom, .dsk and .hd images to the nearest 512-byte boundary. Originally-fixed-by: Stefan Hajnoczi <stefanha@gmail.com>
* [build] Don't assume the existence of "seq"Michael Brown2009-03-311-1/+9
| | | | | | | | The "seq" command is GNU-specific; a BSD userland will not have it. Use POSIX-conforming "awk" instead. Reported-by: Joshua Oreman <oremanj@rwcr.net> Suggested-by: Stefan Hajnoczi <stefanha@gmail.com>
* [efi] Allow building with non-system libbfdMichael Brown2009-03-311-4/+6
| | | | | | | On Mac OS X, it is necessary to build binutils manually; the system does not provide bfd.h or the libbfd or libiberty libraries. Originally-fixed-by: Joshua Oreman <oremanj@rwcr.net>
* [build] Add --divide to ASFLAGS if supported by the assemblerMichael Brown2009-03-311-0/+8
| | | | | | | | | Some builds of the GNU assembler will treat a '/' character as a comment delimiter. Adding "--divide" will cause it to be treated as a division operator, as we expect. The "--divide" option is not available in all gas versions, so apply it only conditionally. Suggested-by: Joshua Oreman <oremanj@rwcr.net>
* [build] Avoid always rebuilding bin/embedded.oMichael Brown2009-03-271-2/+2
| | | | | | | | | | | bin/embedded.o has a build dependency on bin/.embedded.list, which gets generated automatically by the Makefile. However, if the EMBEDDED_IMAGE list is empty, bin/.embedded.list will never be created, and so bin/embedded.o will be rebuilt every time due to a missing dependency. Fix by forcing bin/.embedded.list to be created even if the list is empty.
* [build] Enable building with the Intel C compiler (icc)Michael Brown2009-03-261-8/+76
|
* [image] Allow for zero embedded imagesMichael Brown2009-02-241-4/+0Star
| | | | | | | | | | | | | | | | | | Having a default script containing #!gpxe autoboot can cause problems when entering commands to load and start a kernel manually; the default script image will still be present when the kernel is started and so will be treated as an initrd. It is possible to work around this by typing "imgfree" before any other commands, but this is counter-intuitive. Fix by allowing the embedded image list to be empty (in which case we just call autoboot()), and making this the default. Reported by alkisg@gmail.com.
* [build] Allow NO_WERROR=1 to inhibit --fatal-warnings as well as -WerrorMichael Brown2009-02-161-1/+1
|
* [image] Allow multiple embedded imagesMichael Brown2009-02-161-9/+33
| | | | | | | | | | This patch extends the embedded image feature to allow multiple embedded images instead of just one. gPXE now always boots the first embedded image on startup instead of doing the hardcoded DHCP boot (aka autoboot). Based heavily upon a patch by Stefan Hajnoczi <stefanha@gmail.com>.
* [build] Treat warnings as errors in assembly filesMichael Brown2009-02-151-0/+1
| | | | | Add --fatal-warnings to ASFLAGS; this is the equivalent of -Werror in CFLAGS (which we have used since July 2007).
* [efi] Add efirom utility and .efirom image formatMichael Brown2009-01-081-2/+9
|
* [efi] Use elf2efi utility in place of efilinkMichael Brown2009-01-071-4/+9
| | | | | | | | | | | elf2efi converts a suitable ELF executable (containing relocation information, and with appropriate virtual addresses) into an EFI executable. It is less tightly coupled with the gPXE build process and, in particular, does not require the use of a hand-crafted PE image header in efiprefix.S. elf2efi correctly handles .bss sections, which significantly reduces the size of the gPXE EFI executable.
* [build] Explicitly link efilink against -libertyMichael Brown2008-11-191-1/+1
| | | | | On some systems, libbfd is supplied only as a static library; linking will fail unless -liberty is also specified.
* [build] Fix building on FreeBSDMichael Brown2008-10-171-0/+8
| | | | | | | FreeBSD requires the object format to be specified as elf_i386_fbsd, rather than elf_i386. Based on a patch from Eygene Ryabinkin <rea-fbsd@codelabs.ru>
* [efi] Add EFI image format and basic runtime environmentMichael Brown2008-10-131-0/+9
| | | | | | | | | We have EFI APIs for CPU I/O, PCI I/O, timers, console I/O, user access and user memory allocation. EFI executables are created using the vanilla GNU toolchain, with the EXE header handcrafted in assembly and relocations generated by a custom efilink utility.
* [makefile] Add -Wformat-nonliteral as an extra warning categoryMichael Brown2008-10-101-1/+1
| | | | | | | | | | | -Wformat-nonliteral is not enabled by -Wall and needs to be explicitly specified. Modified the few files that use nonliteral format strings to work with this new setting in place. Inspired by a patch from Carl Karsten <carl@personnelware.com> and an identical patch from Rorschach <r0rschach@lavabit.com>.
* [makefile] Inhibit warnings if AUTO_DEPS or MEDIA_DEPS are empty listsMichael Brown2008-10-101-0/+4
|
* [makefile] Add missing dependency on arch/$(ARCH)/Makefile to MAKEDEPSMichael Brown2008-10-101-0/+1
|
* [makefile] Split config.h out into config/*.h and kill off mkconfig.plMichael Brown2008-10-081-8/+0Star
|
* [makefile] Add support for multiple build platformsMichael Brown2008-10-081-103/+310
| | | | | | | | | | | | | | | | | | | | | | Allow for the build CPU architecture and platform to be specified as part of the make command goals. For example: make bin/rtl8139.rom # Standard i386 PC-BIOS build make bin-efi/rtl8139.efi # i386 EFI build The generic syntax is "bin[-[arch-]platform]", with the default architecture being "i386" (regardless of the host architecture) and the default platform being "pcbios". Non-path targets such as "srcs" can be specified using e.g. make bin-efi srcs Note that this changeset is merely Makefile restructuring to allow the build architecture and platform to be determined by the make command goals, and to export these to compiled code via the ARCH and PLATFORM defines. It doesn't actually introduce any new build platforms.
* [makefile] Fix -fno-stack-protector test on older versions of gccMichael Brown2008-10-011-1/+2
| | | | | | | | | Some older versions of gcc don't complain about unknown compiler flags unless you ask them to actually compile; asking them to merely preprocess won't trigger the error. Fix the -fno-stack-protector test by making it attempt to compile an empty file, rather than preprocess an empty file.
* [release] Update version to 0.9.5+ post releaseMarty Connor2008-10-011-1/+1
|
* [release] Update version to 0.9.5 for releasev0.9.5Marty Connor2008-10-011-2/+2
|
* [makefile] Avoid using ?=H. Peter Anvin2008-09-301-4/+4
| | | | | | | | ?= in a Makefile means that that variable can be overridden by the environment. This is confusing to users, especially with a generic name like "ARCH". Signed-off-by: H. Peter Anvin <hpa@zytor.com>
* [release] Update version post release to 0.9.4+Marty Connor2008-09-261-1/+1
|
* [release] Update version information for 0.9.4 releasev0.9.4Marty Connor2008-09-261-2/+2
|
* [makefile] Suppress "No such file or directory" warnings at start of buildMichael Brown2008-07-241-2/+2
| | | | | | | | Use "-include" rather than "include" for the generated Makefile fragments, in order to suppress the long list of warnings that otherwise appears at the start of a clean build. Contributed by Edward Waugh <ewaugh@netxen.com>
* [Config] remove src/ConfigH. Peter Anvin2008-06-301-1/+1
| | | | | | | Remove src/Config as it has no more users, and conflicts with src/config on case-deficient filesystems. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
* [Makefile] Add "+" to end of version string for git-generated imagesMarty Connor2008-06-061-1/+1
| | | | This "+" should be removed when a tarball release is done.
* [Makefile] Use .PRECIOUS instead of .SECONDARY for bin/%.tmp targetsMichael Brown2008-06-061-1/+1
| | | | | | | | | | | | | | | Revert "Use .SECONDARY instead of .PRECIOUS for bin/%.tmp targets." This reverts commit de29e5a39c5ae0ca91b61eaa139a277943dfc7fc. .SECONDARY doesn't seem to work properly with the target patterns of implicit rules. In particular, a "make clean ; make bin/rtl8139.dsk" will correctly leave the bin/rtl8139.dsk.tmp file present when .PRECIOUS is used, but not when .SECONDARY is used. This is slightly irritating since we don't want the "do-not-delete-if-interrupted" semantics of .PRECIOUS, but it seems to be the best compromise.
* [util] config-local.h to avoid accidental commitsStefan Hajnoczi2008-06-051-2/+2
| | | | | | | | | | | | | | | | | | | | During development it is often handy to change the config.h options from their defaults, for example to enable debugging features. To prevent accidental commits of debugging config.h changes, mdc suggested having a config-local.h that is excluded from source control. This file acts as a temporary config.h and can override any of the defaults. This commit is an attempt to implement the config-local.h feature. The config.h file now has the following as its last line: /* @TRYSOURCE config-local.h */ The @TRYSOURCE directive causes config-local.h to be included at that point in the file. If config-local.h does not exist, no error will be printed and parsing will continue as normal. Therefore, mkconfig.pl is "trying" to "source" config-local.h.
* [Makefile] Quick hack: always define pci_{vendor,device}_idMichael Brown2008-04-231-2/+2
| | | | | | ROMs will refuse to build unless pci_vendor_id and pci_device_id are defined. We probably ought to fix up the Makefile (and the ROM prefix) so that they're required only for PCI ROMs, but this will do for now.
* [Makefile] Use -MM instead of -M in dependency generationMichael Brown2008-03-241-1/+1
| | | | | | Using -MM strips out any system header files from the dependency list, which means that we could safely use an external stdarg.h if we wanted to.
* Make tarball generation quieterv0.9.3Marty Connor2008-02-141-1/+1
| | | | | Deleting bin/deps after "make veryclean" keeps deps from being regenerated in the tarball.
* Updated $(VERSION) for release. Change tarball generation.Marty Connor2008-02-141-14/+19
| | | | | Added 'install' and 'configure' targets for those who are used to other build setups.
* Added the embedded pxelinux payload patch from hpa.Michael Brown2008-01-081-0/+8
|
* Use .SECONDARY instead of .PRECIOUS for bin/%.tmp targets.Michael Brown2008-01-071-1/+1
|
* Retain some intermediate object files, suggested by Geert Stappers and ↵Marty Connor2007-12-281-0/+3
| | | | | | Alexey Zaytsev. src/bin/%.tmp files can be useful for debugging, so let's keep them.
* Autodetect whether or not we need to be using -fno-stack-protector.Michael Brown2007-12-151-0/+8
|
* Yet another attempt to autodetect an appropriate "echo -e".Michael Brown2007-12-071-11/+31
|
* Another (hopefully more robust) attempt to find a usable substituteMichael Brown2007-12-081-7/+28
| | | | for "echo -e" on the host system.
* Try to fix echo-detection to work on all systems that provide anyMichael Brown2007-12-071-0/+5
| | | | suitable "echo -e" substitute.
* Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxeMichael Brown2007-09-091-73/+65Star
|\
| * Use "/bin/echo -e" instead of shell builtin echo; some shells don'tMichael Brown2007-09-091-73/+65Star
| | | | | | | | | | | | implement the -e option. (Thanks to Jim McQuillan for this suggestion.)