Commit Graph

16 Commits

Author SHA1 Message Date
Alexander von Gluck IV
1d08d3993e efi: Don't skip TargetBootLibgcc, we need it for 32-bit fp math
Change-Id: I23db3cbb57fea1f9346db9477f72bcc164794926
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2282
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2020-02-26 18:01:42 +00:00
Augustin Cavalier
cb101bdad6 BootRules: Fix BuildMBR under Clang.
We need to force -m32 here, and we also need to tell Clang that we
want to allow relocations in .text.

Clang builds now get to kernel entry, but the bootloader fails to
load the early-boot modules with strange remapping errors, and so
panics with "get boot partitions failed!"
2018-11-23 00:06:23 -05:00
Augustin Cavalier
df34a27137 build: Do not use regular TARGET_*FLAGS in kernel and bootloader.
The generic CCFLAGS are already appended to the HAIKU_KERNEL_*FLAGS
and HAIKU_BOOT_*FLAGS, so these were just duplicates. And now that
we strip certain flags out of the base ones, this was incorrect
(and causes Clang to error in some circumstances.)
2018-11-23 00:06:23 -05:00
Augustin Cavalier
8b4ab45439 BootRules: BuildMBR links as well as compiles, so pass in LINKFLAGS.
Clang builds presently have some magic in it that is required for
linking to work at all.
2018-11-02 21:41:53 -04:00
Alexander von Gluck IV
8522edfe36 jam: Ensure common boot LDFLAGS and ASFLAGS get distributed 2018-10-19 08:55:41 -05:00
Jessica Hamilton
1f96a3cbde system/boot: Add support for multiple bootloaders 2018-10-17 14:47:46 -05:00
Jessica Hamilton
74bfec3b96 build/jam: whitespace cleanup.
Change-Id: I80c9a51417631b1f283923451f5bb530097b74f3
2018-05-07 13:12:16 +12:00
Fredrik Holmqvist
211483cb51 EFI: Initial test EFI application
* Only set HAIKU_BOOT_PLATFORM to bios_ia32 if not defined
* Add gnuefi build feature
* Introduce BOOT_LDFLAGS, and move options for passing to linker
  into ArchitectureSetup
* x86_64 compile fixes for warnings in boot loader
* loader/elf.cpp: don't include ELF32 support when targeting EFI
* relocation_func.cpp: copy of the relocation code from gnuefi
  to make _relocate extern "C", and avoid including <efilib.h>
* boot_loader_efi.ld: copy of gnuefi's elf_x86_64_efi.lds,
  modified to include support for C++ constructors, etc. Keep in
  sync with the gnuefi package

Signed-off-by: Jessica Hamilton <jessica.l.hamilton@gmail.com>
2016-09-02 19:02:29 +12:00
Simon South
9e5091d7a3 Build without linker warnings about missing entry symbols.
* BootRules: Use -Xlinker option correctly to specify entry point.
* KernelRules: Build kernel add-ons as shared objects explicitly.

Signed-off-by: Jérôme Duval <jerome.duval@gmail.com>
2015-10-29 16:59:59 +01:00
Jessica Hamilton
11e8ecdd94 writembr: Implement support for GPT partitions, #4028.
* This should support both GPT and MBR formatted partitions.
* To boot Haiku from a GPT partition, it must have the correct
  BFS UUID for the partition.
* Tools such as gdisk/gptfdisk can create partitions with
  the correct BFS UUID.
2015-06-04 15:07:13 +12:00
Oliver Tappe
220d040227 Use libstdc++, libsupc++ and libgcc from gcc_syslibs.
* Instead of faking libstdc++.so from libstdc++.a, use libstdc++.so
  from the gcc_syslibs build feature for everything except x86_gcc2.
* Use libgcc_s.so from the gcc_syslibs build feature for everything but
  x86_gcc2 (which still carries libgcc as part of libroot.so).
* Drop filtering of libgcc objects for libroot, as that is no longer
  necessary since we're only using libgcc-as-single-object for libroot
  with x86_gcc2, where the filtered object file doesn't exist. Should
  the objects that used to be filtered cause any problems as part of
  libgcc_s.so, we can always filter them as part of the gcc build.
* Use libsupc++.so from the gcc_syslibs build feature for everything but
  x86_gcc2.
* Adjust all Jamfiles accordingly.
* Deactivate building of faked libstdc++.so for non-x86-gcc2. For
  x86_gcc2, we still build libstdc++.so from the sources in the Haiku
  source tree as part of the Haiku build .
* Put gcc_syslibs package onto the image, when needed.
2014-08-13 13:32:44 +02:00
Oliver Tappe
bd04aa3772 Cleanup: Fix missing evaluation of HAIKU_NO_LIBSUPC++.
* There's no user of HAIKU_NO_LIBSUPC++ anywhere, so the typo didn't
  have any effect.
2014-07-31 10:49:36 +02:00
Oliver Tappe
8c54af563c Whitespace cleanup in root and 'build' folder.
* Removed trailing whitespace and empty lines at top of files.
2014-05-01 12:55:41 +02:00
Jérôme Duval
66a7f29f59 x86_64: include the "32" dir when targeting 32-bit
* helps with building boot loader with GCC 4.8
2014-01-15 22:45:45 +01:00
Ingo Weinhold
b0944c78b0 More work towards hybrid support
* All packaging architecture dependent variables do now have a
  respective suffix and are set up for each configured packaging
  architecture, save for the kernel and boot loader variables, which
  are still only set up for the primary architecture.
  For convenience TARGET_PACKAGING_ARCH, TARGET_ARCH, TARGET_LIBSUPC++,
  and TARGET_LIBSTDC++ are set to the respective values for the primary
  packaging architecture by default.
* Introduce a set of MultiArch* rules to help with building targets for
  multiple packaging architectures. Generally the respective targets are
  (additionally) gristed with the packaging architecture. For libraries
  the additional grist is usually omitted for the primary architecture
  (e.g. libroot.so and <x86>libroot.so for x86_gcc2/x86 hybrid), so that
  Jamfiles for targets built only for the primary architecture don't
  need to be changed.
* Add multi-arch build support for all targets needed for the stage 1
  cross devel package as well as for libbe (untested).
2013-08-01 08:54:06 +02:00
Alex Smith
65ad1ba320 Made it possible to build the bootloader when targetting x86_64.
* x86_64 is using the existing *_ia32 boot platforms.
* Special flags are required when compiling the loader to get GCC to compile
  32-bit code. This adds a new set of rules for compiling boot code rather
  than using the kernel rules, which compile using the necessary flags.
* Some x86_64 private headers have been stubbed by #include'ing the x86
  versions. These will be replaced later.
2012-05-26 21:47:27 +01:00