aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
Commit message (Collapse)AuthorAgeFilesLines
* Makefile: make the handling of firmware selection a little sanerH. Peter Anvin2016-02-091-27/+28
| | | | | | Clean up the handling of firmware selection inside the Makefiles. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
* gpxe: delete long since obsolete snapshot of gPXEH. Peter Anvin2016-02-091-16/+5
| | | | | | | | | gPXE has been deprecated in favor of iPXE for many, many years now. It is much better than users get it directly from the iPXE project, since we should no longer need any special modifications for Syslinux use. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
* Makefile: Pass down the variable EFI_BUILDSylvain Gault2015-11-271-8/+9
| | | | | | | | This variable indicates whether or nor the files are compiled for EFI. The lack of it lead the Makefiles to forget to add some compilation options specific to EFI. Signed-off-by: Sylvain Gault <sylvain.gault@gmail.com>
* Add gpxe/ to clean-up targetsGene Cumm2015-09-271-1/+11
| | | | | | | | gpxe/ has a lot of binary blobs after a spotless. Start the cleanup measures. do-spotless-gpxe for bios target might be better in another spot. Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
* memdump: Remove old obsolete COM16 binaryH. Peter Anvin2014-06-101-3/+2
| | | | | | | | memdump was a com16 binary. If still useful, it should be replaced with a com32 library using libupload, but it has largely been replaced by sysdump anyway. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
* Makefiles: export the firmware type as a cpp variableH. Peter Anvin2014-02-271-0/+3
| | | | | | Export the firmware type as a cpp variable so we can #ifdef. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
* Makefile: make "make spotless" actually workH. Peter Anvin2014-02-211-11/+17
| | | | | | The other cleaning targets might still have issues... Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
* tests: unit tests for core/memMatt Fleming2013-07-241-0/+1
| | | | | | | | | | | | | | | | | | | We can exercise the memory subsystem through unit tests with a little bit of coaxing. We need to create a number of fake data objects in order to get it to build. This is less than ideal, but once we've got good test coverage and confidence in our tests we can begin refactoring. Had this unit test already been in place, commit 33c4ab1b ("mem: fix regression in recent memscan changes") would have never been required because buggy commit a1331f8d ("memscan: pass enum syslinux_memmap_types around") would have broke the unit test. Ordinarily, this unit test would have been part of the bugfix commit 33c4ab1b, but the bugfix needs to be backported to 5.xx on its own. test_mem_init_reserved() tests whether SMT_RESERVED regions are incorrectly added to the memory subsystems's freelist. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* tests: Syslinux unit testsMatt Fleming2013-07-231-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Improve our faith in the validity of the Syslinux code by writing unit tests where possible. These should be used in addition to the regression tests - unit tests are a means of doing very fine-grained testing of code, whereas the regression tests are end-to-end tests that exercise abstract functionality. Unit tests run on your development machine and above all else, their execution time should be kept to a minimum to encourage repeated runs of the unit testsuite. The Syslinux header hierarchy has been reconstructed under tests/unittest/include. This allows us to reuse header files where appropriate by simply creating a file with the same name and including the original, e.g. tests/unittest/include/com32.h: #include <../../../com32/include/com32.h> Places where we need to override definitions (so that the tests build in a dev environment) obviously won't include the original header file, but such scenarios should be kept to a minimum, since you're not really testing any Syslinux code that way. To execute the collection of unit tests type, make unittest Sample output might look like, Executing unit tests Running library unit tests... [+] zonelist passed [+] movebits passed [+] memscan passed Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* tests: Regression testsuiteMatt Fleming2013-07-231-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A number of Syslinux releases have contained regressions when compared with previous versions. Now that the size of the derivative grid has exploded (PXELINUX, SYSLINUX,.... bios, efi32, efi64) we need to have some means of ensuring we don't introduce regressions so easily. Start building a suite of regression tests. Regression tests should test end-to-end functionality, e.g. loading a Linux kernel. If a test fails, that failure represents a regression in some behaviour, e.g. Syslinux behaves differently than it previously did. The idea is that when bugs are reported in Syslinux, we can create new tests that reproduce the buggy behaviour. Once a fix has been committed the new test should pass. From that point forward, the test provides a means of ensuring we never reintroduce that bug. The collection of tests illustrates the agreed upon behaviour of Syslinux. To execute the regression testsuite type, make regression Sample output might look like, Executing regression tests for SYSLINUX Running Linux kernel regression tests... [+] empty passed [+] kernelhello passed Running COM32 module regression tests... [+] chaindisk passed Executing regression tests for PXELINUX Running Linux kernel regression tests... [!] empty failed [+] kernelhello passed [+] pxetest passed Qemu is used to execute the regression tests in a virtual environment. Because it takes time to load Qemu, we can forgive the regression testsuite for not executing instantaneously. However, developers should keep in mind the idea of "failing fast" in their regression tests to minimize execution time - that is, if a test is going to fail, make it fail as quickly as possible to reduce the testrun time. It's possible to have derivative-specific tests, where the test only runs for a specific Syslinux boot loader. For an example see pxetest in tests/linux/Makefile. Currently the regression testsuite requires root privileges to execute and makes several calls to sudo(8). In future it would be nice to get rid of this requirement. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* Makefile: add netinstall target for efiMatt Fleming2013-07-121-2/+10
| | | | Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* Makefile: explicitly reference ldlinux.*Matt Fleming2013-07-111-1/+1
| | | | | | | | Avoid warnings about not being able to find any *.c32 files in {efi32,efi64}/com32/elflink/ldlinux/ by explicitly referencing $(LDLINUX). Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* Makefile: make gpxe/ depend on core/Gene Cumm2013-06-271-0/+1
| | | | | | Paralleling sometimes fails depending on pxelinux.0 Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
* efi: there are no EFI installer componentsMatt Fleming2013-06-241-1/+1
| | | | | | | | | | | | | Users are reporting hitting the following error when typing 'make installer', make[3]: *** No rule to make target `efi32/core/codepage.o', needed by `syslinux.so'. Stop. But there's no actual need to build any installers for EFI (none exist), especially not since the stuff in utils/ is already built for BIOS and doesn't need building again. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* efi: install ldlinux.{e32,e64}Matt Fleming2013-06-111-4/+5
| | | | | | | We need to install the corresonding ldlinux.* file for each of the firmware. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* ldlinux: use platform filename extensionMatt Fleming2013-05-161-3/+5
| | | | | | | | | | | | | | | | | | | Users are starting to package all Syslinux versions on one boot medium and are running into problems because all versions of ldlinux have the same filename, ldlinux.c32. The version of ldlinux.c32 compiled for bios will not work with efi32 or efi64, and vice versa. What we need is a way for the Syslinux core to know exactly which filename to load. Use the following extensions for the corresponding platforms, .c32 - bios .e32 - efi32 .e64 - efi64 Now all ldlinux variants can be kept in the same directory without causing any conflicts. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* Merge tag 'syslinux-5.10-pre2' into for-hpa/elflink/firmwareMatt Fleming2013-03-221-3/+4
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | syslinux-5.10-pre2 Conflicts: NEWS com32/include/netinet/in.h com32/include/sys/cpu.h com32/lib/Makefile core/Makefile core/fs/diskio.c core/fs/pxe/pxe.h core/init.c core/mem/free.c core/mem/malloc.c mk/devel.mk version
| * net: Return of the legacy network stackMatt Fleming2013-03-061-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While it's nice having the shiny new lwIP stack, there is definitely merit in being able to choose between two different network stacks. We want to keep the legacy network stack around as it is known to handle funky BIOS implementations and provides a good reference point when bugs are suspected in the lwIP code. Users now have a choice of .0 files. pxelinux.0 uses the legacy network stack, while lpxelinux.0 uses lwIP. Note that not every protocol is converted to using this new API. The http, ftp and tcp code is still inherently tied to the netconn API, and is only available with lpxelinux.0 and the lwIP stack. It's unlikely that this code will ever be fixed up to work with the legacy network stack. Network stack operations are abstracted behind the net_core_* interface, and each network stack has private data fields contained within a struct net_private. Cc: H. Peter Anvin <hpa@zytor.com> Cc: Eric W. Biederman <ebiederm@xmission.com> Cc: Gene Cumm <gene.cumm@gmail.com> Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | Merge tag 'syslinux-5.01' into firmwaresyslinux-6.00-pre4Matt Fleming2013-01-291-3/+3
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: Makefile NEWS com32/cmenu/Makefile com32/elflink/ldlinux/Makefile com32/gfxboot/Makefile com32/gpllib/Makefile com32/include/sys/module.h com32/lib/Makefile com32/lib/sys/module/elf_module.c com32/menu/Makefile com32/rosh/Makefile com32/samples/Makefile core/init.c mk/elf.mk Signed-off-by: Matt Fleming <matt.fleming@intel.com>
| * Makefile: add txt/Gene Cumm2013-01-171-1/+1
| | | | | | | | Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
* | Merge tag 'syslinux-5.00' into firmwaresyslinux-6.00-pre3Matt Fleming2012-12-071-6/+6
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: Makefile com32/elflink/ldlinux/Makefile com32/lib/sys/module/elf_module.c core/cleanup.c core/comboot.inc core/conio.c core/fs/fs.c core/init.c core/mem/free.c core/mem/malloc.c core/timer.inc diag/geodsp/Makefile extlinux/main.c mk/embedded.mk modules/Makefile Signed-off-by: Matt Fleming <matt.fleming@intel.com>
| * Delete 16-bit COMBOOT supportsyslinux-5.00Matt Fleming2012-12-061-2/+2
| | | | | | | | | | | | | | | | | | | | | | 16-bit COMBOOT files are no longer supported by Syslinux in 5.00 so delete all references and change any 32-bit COMBOOT image references to mention ELF instead. Some of the COMBOOT stuff is still used internally so we can't nuke core/comboot.inc yet, but that will disappear in a future release. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
| * gpllib: Distribute libcom32gpl.c32 in releasesMatt Fleming2012-11-271-1/+1
| | | | | | | | | | | | | | | | | | | | This is a partial revert of commit b26d1c8642a8 ("Clean up $(GPLLIB) leak"). While we do need to use $(C_LIBS) and respect $(NOGPL), we should also be distributing libcom32gpl.c32. Now that we have ELF modules, such as hdt.c32, that need to have some of their symbols dynamically resolved at runtime we need to distribute libcom32gpl.c32. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
| * Makefile: Add libmenu.c32 to list of modulesMatt Fleming2012-11-271-1/+1
| | | | | | | | | | | | | | We need to install libmenu.c32 as it is required by modules like hdt.c32. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | Makefile: Move Makefile.private inclusion to change default targetMatt Fleming2012-11-141-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | If no make target is specified on the command line we'll try to build the first target we encounter in Makefile. Because we include Makefile.private before any targets that means we'll try to build isolinux.iso by default, which probably isn't what the user expected. Move Makefile.private *after* our first target in Makefile so that the user needs to explicitly build the targets in Makefile.private. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | Makefile: Add upload targets to $(private-targets)syslinux-6.00-pre1Matt Fleming2012-11-091-1/+2
| | | | | | | | | | | | | | | | So that the catch-all $(MAKECMDGOALS) rule isn't used when trying to upload a release, add 'preupload' and 'upload' to the list of make targets that are handled by other Makefiles. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | Makefile: Every invocation of make needs access to syslinux.mkMatt Fleming2012-11-091-0/+2
| | | | | | | | | | | | | | | | syslinux.mk provides variables like $(PERL) which are extremely useful in most Makefiles, so include it regardless of whether this is the first invocation of make or a sub-make. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | Makefile.private: Update for new per-firmware object directoriesMatt Fleming2012-11-091-3/+9
| | | | | | | | | | | | | | Update the exported variables when invoking make in the 'official' target. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | Makefile: Change default object directoryMatt Fleming2012-11-091-3/+2
| | | | | | | | | | | | | | | | Instead of building all objects in 'obj' if no O= argument is specified on the make command line, create all the firmware object directories in the top-level of the source repository. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | Makefile: Correct version.mk pathMatt Fleming2012-11-091-9/+12
| | | | | | | | | | | | | | | | | | Each firmware generates its own version.mk, but they're all exactly the same. Place a single version.mk in the top-level output directory (as specified with the O= command line argument) so that this can be included by Makefile.private. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | Makefile: Correct the location of Makefile.privateMatt Fleming2012-11-061-1/+1
| | | | | | | | | | | | | | Makefile.private lives in $(topdir) and if we're in $(OBJDIR) we need an absolute path so that it gets included. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | Merge tag 'syslinux-5.00-pre9' into for-hpa/elflink/firmwareMatt Fleming2012-11-051-4/+6
|\| | | | | | | | | | | | | | | | | | | | | This merge also includes the Syslinux-4.06 release. Conflicts: Makefile com32/hdt/Makefile com32/modules/Makefile com32/samples/hello.c mtools/Makefile
| * Clean up $(GPLLIB) leakMatt Fleming2012-10-191-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Modules were linking against com32/gpllib/libcom32gpl.c32 even when NOGPL was set, so remove it from various modules Makefiles and use $(C_LIBS) in mk/elf.mk which already has the conditional-magic for $(GPLLIB). Also, the object files in com32/gpllib/ are not distributed in the release tarballs, which means that if a user does a 'make netinstall' they hit the following install error, install: cannot stat `com32/gpllib/*.c32': No such file or directory Add a $(INSTALLABLE_MODULES) variable to separate the list of build and install modules. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | Makefile: Only provide one make rule for each directoryMatt Fleming2012-10-261-8/+1
| | | | | | | | | | | | | | | | | | Otherwise we end up with warnings like this, Makefile:258: warning: overriding recipe for target `efi' Makefile:253: warning: ignoring old recipe for target `efi' Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | Add per-firmware object directory supportMatt Fleming2012-10-161-38/+217
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that we have multiple firmware backends it no longer makes sense to write object files to the same directory as their source. A better solution is to write the object files to a per-firmware directory under a top-level object directory. The top-level object directory can be specified on the command-line with the O= variable, e.g. make O=/tmp/obj. If no top-level object directory is specified an 'obj' directory is created in the top-level of the Syslinux source repository. All the existing make targets continue to work as before, however now they apply to all firmware backends, e.g. 'make installer' will build the BIOS, 32-bit EFI and 64-bit EFI installers and place them under $(OBJ)/bios, $(OBJ)/efi32 and $(OBJ)/efi64 respectively. Note unlike every other bit of Syslinux, the gpxe objects are still kept in the src directory, e.g. gpxe/src, since gpxe is only required by the BIOS backend. It is possible to specify a make target for a specific firmware or list of firmware with the following syntax, make [firmware[,firmware]] [target[,target]] To clean the object directory for just the BIOS firmware type, 'make bios clean' To build both the 32-bit and 64-bit EFI installers type, 'make efi32 efi64 installer' Since the Syslinux make infrastructure is now more complex a new file doc/building.txt has been created to explain how to build Syslinux. The top-level Makefile now exports some make variables for use in module Makefiles, - topdir - the top-level source directory of the Syslinux repository, e.g. /usr/src/syslinux - objdir - the top-level object directory for the firmware backend currently being built, e.g. /obj/syslinux/bios - SRC - the source directory in the Syslinux repository for the module currently being built, e.g. /usr/src/syslinux/com32/libupload - OBJ - the object directory for the module currently being built, e.g. /obj/syslinux/bios/com32/libupload Since we're rewriting the Makefile infrastructure anyway it seemed like a good idea to add parallel support. By writing subdirectories as prequisites for make targets the objects in those subdirectories can be built in parallel. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | Merge remote-tracking branch 'mfleming/elflink' into for-hpa/elflink/firmwareMatt Fleming2012-07-301-2/+13
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: Makefile com32/elflink/ldlinux/adv.c com32/elflink/ldlinux/kernel.c com32/elflink/ldlinux/ldlinux.c com32/include/bitsize/stddef.h com32/include/bitsize/stdint.h com32/include/stdint.h com32/include/sys/module.h com32/include/sys/x86_64/bitops.h com32/include/syslinux/linux.h com32/lib/Makefile com32/lib/sys/ansicon_write.c com32/lib/sys/module/elfutils.h com32/lib/sys/vesa/efi/fill.h com32/lib/syslinux/load_linux.c com32/lib/syslinux/serial.c com32/lib/syslinux/shuffle.c core/conio.c core/elflink/config.c core/elflink/load_env32.c core/graphics.c core/include/graphics.h core/init.c core/pxelinux.asm mk/elf.mk mk/lib.mk
| * Fix Makefile install targetsMatt Fleming2012-07-041-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some Makefiles were still referring to libutil_com.a, even though we stopped producing that file with commit 74518b8b691c ("elflink: Make ELF the default object format"). Delete all references to avoid the following install error, install: cannot stat `libutil_com.a': No such file or directory Remove the install target from com32/elflink as we no longer build any of the test modules, and so don't need to install them. Also, we need to add ldlinux.c32 to the list of modules that *must* be installed for all targets, since it is required for Syslinux to function correctly. Reported-by: Dag Wieers <dag@wieers.com> Reported-by: Michael D. Setzer II <mikes@kuentos.guam.net> Signed-off-by: Matt Fleming <matt.fleming@intel.com>
| * Makefile: fix misplaced dotH. Peter Anvin2012-06-271-1/+1
| | | | | | | | Signed-off-by: H. Peter Anvin <hpa@zytor.com>
| * Merge remote-tracking branch 'zytor/master' into merge/elflink/masterMatt Fleming2012-05-311-1/+8
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A lot of development has gone on in the 'master' branch since the last time we merged; new features, bug fixes, etc, etc. Conflicts: Makefile com32/Makefile com32/lib/Makefile com32/lib/syslinux/load_linux.c com32/modules/Makefile com32/modules/chain.c core/bootsect.inc core/init.inc version
| | * Merge remote branch 'origin/master' into chaindevMichal Soltys2011-05-101-0/+7
| | |\
| | | * Add "make strip" targetH. Peter Anvin2011-05-091-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a "make strip" target, to make doing the official build easier. We want the official build to have stripped binaries for size reasons, so do it right and make it an actual build target. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
| | * | Merge branch 'master' into chaindevMichal Soltys2011-05-041-1/+2
| | |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: com32/Makefile com32/modules/chain.c Note: add ReactOS' stuff introduced in old chain.c Signed-off-by: Michal Soltys <soltys@ziu.info>
| | * | Merge branch 'master' into chaindevMichal Soltys2011-03-181-6/+8
| | |\ \ | | | | | | | | | | | | | | | | | | | | Conflicts: com32/modules/chain.c
| | * | | split chain into chain + iterator, expand iterators' codeMichal Soltys2010-08-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Patch: - splits chain into chain and iterator parts and moves them into their own com32/chain directory - extensively updates iterators' code - adjusts chain.c to use new iterators - fixes mbr/sect/hand/file allocation Signed-off-by: Michal Soltys <soltys@ziu.info>
| * | | | Makefile: install library modules, tooH. Peter Anvin2012-05-181-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We need the library modules to be added to MODULES. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
| * | | | elflink: Make sure to install ldlinux.c32 at install timeH. Peter Anvin2012-05-181-0/+1
| | |_|/ | |/| | | | | | | | | | | | | | | | | | We need to reach ldlinux.c32 during early boot... Signed-off-by: H. Peter Anvin <hpa@zytor.com>
* | | | The make files have undergone changes to support both i386 and x86_64 platforms.chandramouli narayanan2012-06-251-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Pertinent changes are sprinkled through *.mk and Makefile in the syslinux tree. Build architecture is specified at the command line via ARCH macro. This is to enable whether one is building for the native platform or cross-building for a different architecture. Currently, the only supported architectures via ARCH macro are i386 and x86_64. There are some modules (e.g. memdump) that don't build under the EFI environment. To go forward with efi boot support, a separate EFI_BUILD=1 macro has been added and is required to be specified while building. This is a temporary solution for the current build environment. example build: On a x86_64 platform, the following cross-builds syslinux for i386 To build for i386: make EFI_BUILD=1 ARCH=i386 On a x86_64 platform, the following builds syslinux for x86_64 To build natively: make EFI_BUILD=1 Changes specific to GCC and LD options: Architecture specific flags and include/search directories are set up for GCC and LD commands. Internally, GCC options such as stack-boundary, PIC and machine architecture are set up based on ARCH macro. While stack-boundary=2 is fine for i386, it does not work for x86_64 and so it is left to the default value. Using -fPIE with gcc does not work with ld on x86_64, but -fPIC works fine. Similarly, target and elf options are set up for linking as approrpriate for architecture. Assumption about gnu-efi install path: Since the EFI build supports both EFI32 and EFI64, the following assumptions are made with regard to the installed location of gnu-efi on the build platform. 1. gnu-efi-ia32: assumed installed in /usr/local [ EFI-32 include files in /usr/local/include/efi and gnu-efi library in /usr/local/lib/ ] 2. gnu-efi-x86_64: assumed installed in /usr [ EFI-64 include files in /usr/include/efi and gnu-efi library in /usr/lib64/ ] Remanants of the unused old i386-only files, if any, need to be pruned.
* | | | efi: Add UEFI firmware backendMatt Fleming2011-12-161-1/+1
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds 32-bit support for a Unified Extensible Firmware Interface backend. We use a wrapper program to create an EFI exe with only the minimum number of sections becaues the EFI loader doesn't like certain section sections, such as .gnu.hash, which we require for resolving symbols when ELF modules are loaded. We're currently including a lot more symbols than are necessary in efi/main.c so that the code compiles. Some of them are BIOS specific but I haven't got around to fixing up the core to not reference them directly yet. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | / Makefile: Move Makefile fragments into mk/Matt Fleming2011-04-071-1/+2
| |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move the MCONFIG files into a mk/ directory and give them more descriptive names. This is purely a cosmetic change to make the 'include' directives a bit more coherent by making it obvious exactly which MCONFIG file we're including. For example, in com32/lua/src/Makefile we exchange the line, include ../../MCONFIG for the much more comprehensible, include $(MAKEDIR)/com32.mk Signed-off-by: Matt Fleming <matt.fleming@linux.intel.com>
* | Merge remote-tracking branch 'genec/gpxelinux-kpxe-for-hpa'H. Peter Anvin2011-03-171-2/+2
|\ \