Commit Graph

66 Commits

Author SHA1 Message Date
Augustin Cavalier
7aa5574713 kernel & addons: Build with the non-legacy GCC even on x86_gcc2h.
Only one code change: for some reason, GCC chokes on the cr3 functions
as macros (throwing errors about invalid registers.) The BSDs have them
as inline functions instead, so they are converted to that here.

Tested and working. There seems to be about a 10% decrease in CPU time
on some compilation benchmarks that I briefly tried.

Change-Id: I31666297394d7619f83fca6ff5f933ddd6f07420
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4515
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2021-10-02 18:29:40 +00:00
Augustin Cavalier
37ea891aad Enable -fvisibility=hidden on static libraries by default.
Only on non-GCC2 for now, as GCC2 does not have -fvisibility.

An opt-out is left as a possibility, and is unfortunately necessary
for libshared and libicon, as these two are used even in WebKit instead
of linking to the .a. However, libcolumnlistview, libagg, and a whole
bunch of others are now no longer exported, so this is already a major
improvement on what symbols we were leaking.

This may provide performance differences for consumers of these APIs,
as GCC and the linker are now free to merge and directly use functions
that previously could have been semantically interposed. AGG usage in
app_server, especially, may benefit.

We can also now remove the addition from libnetservices, so do that.
2021-09-08 17:32:47 -04:00
Augustin Cavalier
03980b1fb0 build: Make LinkAgainst recursive for static libraries.
That is, it will now pull in NEEDLIBS and LINKLIBS set by LinkAgainst
from static libraries also built by Jam. This allows specifying what
libraries other static libraries need only once (in most cases;
occasionally things are not evaluated in a sane order and then
this does not quite work.)

Use this for libnetservices.a, which needs libshared.a, so that
dependencies on it do not have to be declared within most in-tree
consumers of libnetservices (e.g. Package Kit, http_streamer, etc.)
2021-09-08 15:03:06 -04:00
Augustin Cavalier
27ecd4761c build: More miscellaneous fixes for MSYS.
Remove the .exe hack, as it is not needed.
2020-05-03 19:31:22 -04:00
Augustin Cavalier
7a617f59fd configure & build: Add basic support for building with MSYS.
Also remove the MINGW support, as it was far too incomplete.

This *should* work under case-sensitive NTFS, but instead,
it seems #14963 occurs. So perhaps there is a GCC bug
related to case-sensitive vs. case-insensitivity after all.
2020-05-03 13:24:26 -04:00
Augustin Cavalier
a1e74397a1 build: Rework gcc2 test_app_server build logic a bit. 2020-01-05 17:17:41 -05:00
Adrien Destugues
32158f3d64 Fix test_app_server build.
Fixes #15536.
2019-12-31 13:15:30 +01:00
Augustin Cavalier
f6fe382433 MainBuildRules: Fail if the generated struct-offsets header is empty.
In some LTO-related experiments, it came out empty due to GCC
not generating actual assembly but rather intermediate code,
resulting in various later targets failing with quite literally
thousands of errors.
2018-11-24 14:35:10 -05:00
Augustin Cavalier
807304b100 build: Add basic support for MinGW hosts.
This doesn't fully work yet (the FS code in libroot_build
needs to be adapted, as some of the symlink-related calls
are not available on MinGW), but it gets much further than
the "Cygwin" target did.
2018-11-23 16:24:25 -05:00
Augustin Cavalier
37c106060a build: Remove support for cross-building from Cygwin and SunOS.
These have been broken for a long time. Some Cygwin changes that
are relevant on MinGW are kept here, but users on Windows who
want to build Haiku should probably use WSL at this point.

However, now that we are using relative paths and don't need
to worry about drive path kludges, it's actually possible to
get some host tools built on MinGW. Changes for that coming.
2018-11-23 15:40:50 -05:00
Augustin Cavalier
28ab14e35f MainBuildRules: Use $(CC) -E instead of "cpp" as the preprocessor.
"cpp" is the system C preprocessor, not the one from our cross-compiler,
and in the case of my system which does not have GCC installed at all,
it doesn't even exist.

With this, Clang-ARM builds successfully create a "haiku-arm.mmc".
I couldn't get it to output, even after blessing it with "rune",
but that may just be my fault...
2018-08-17 21:54:56 -04:00
Augustin Cavalier
47a96c099e MainBuildRules: Fix CreateAsmStructOffsetsHeader on recent Clang.
It seems that at on some platforms at least, Clang uses @define instead
of #define, but with functionally identical syntax, so use sed to
process it as such.
2018-08-11 15:20:30 -04:00
Augustin Cavalier
b2f22ba09f build: Actually disable non-useful Clang warnings.
* The if-case was appending to gccBaseFlags after the rest of the file
   was done using it, so it was ineffective. Now we set it with the rest
   of the baseFlags.
 * We already pass no-integrated-as in configure, no need to do it in
   MainBuildRules.
 * B_USE_BUILTIN_ATOMIC_FUNCTIONS isn't used anymore, so get rid of it.
2018-06-18 22:04:48 -04:00
Jessica Hamilton
74bfec3b96 build/jam: whitespace cleanup.
Change-Id: I80c9a51417631b1f283923451f5bb530097b74f3
2018-05-07 13:12:16 +12:00
Augustin Cavalier
5e19679ea3 build: Use libroot_build on Haiku.
Previously we just used the system libroot, which of course meant
that when libroot's ABI changed, the build broke. Now we use the full
libroot_build that we do on non-Haiku platforms. The logic for "BeOS-compatible
but not Haiku" does not really apply anymore, so it has been gutted where
appropriate (and libhaikucompat has been decoupled from the build.)

The only caveat here is the change to Errors.h -- we really should be using
the system's one where I included the one from the tree, but for whatever
reason, GCC2 refused to handle the #include_next properly.

Fixes the build breakage of Haiku-on-Haiku by my prior commits (sorry).
2017-12-13 19:47:39 -05:00
Jonathan Schleifer
f10b49ed41
Fixup for my last commit (better check for Clang) 2015-11-08 00:37:13 +01:00
Jonathan Schleifer
f2f1efc509
Use -no-integrated-as to create asm struct offsets
This depends on quite a nasty hack to generate those, namely using
inline assembly to generate a file with things that are not actually
assembly, which Clang therefore filters out.
2015-11-08 00:04:16 +01:00
François Revol
a2ddc1c06e Fix CompileDTS rule to locate the device tree blob properly
This avoids having to call it from the BoardSetup files.
2015-04-24 02:27:55 +02:00
Adrien Destugues
2311bdf24f AssembleNasm: add source dir to include path.
This makes it possible to %include local files. nasm doesn't allow this
otherwise (include paths are assumed relative to the working directory).

Fixes build of ape_reader.
2014-12-09 17:53:44 +01:00
François Revol
88d51506d0 Move ARM device tree files to an arch-specific subfolder
FDT are also used on PPC at least, and at least skeleton.dtsi
might clash since there is a different one for PPC.
2014-10-31 16:28:48 +01:00
Ithamar R. Adema
128e69f9e5 CompileDTS: use preprocessor on .dts files
Recent linux behaviour (and also copied by BSD) is to preprocess
DTS files with the C preprpocessor to enable sharing constants between
driver implementation and DTS content for more readability.
2014-10-31 10:57:07 +01:00
Jessica Hamilton
f0b0d6578b Undo accidental file mode changes. 2014-09-15 16:38:30 +12:00
Jessica Hamilton
e547662664 stage1/2 loaders: auto-generate binary files. Fixes #10723 2014-09-10 22:00:30 +12:00
Oliver Tappe
f7653b1b74 Optionally build glue code for bootstrap_stage0 platform. 2014-08-13 13:32:49 +02: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
afde44733f * When using the non-legacy compiler, use the c++ and gcc headers
provided in the gcc_syslibs_devel build feature for building Haiku.
* Simplify declaration of c++ and gcc headers for the legacy compiler -
  in the end we always use the ones living by our source tree anyway.
* Fix a couple of missing local declarations for jam variables, which
  were necessary to avoid a build problem with strace. There are
  probably more bugs like these hiding in our build system files, but
  I'm saving the fix for those to the next commit.
* Add new gcc packages to the HaikuPorts (x86*-)repositories.
2014-08-13 13:32:34 +02:00
Oliver Tappe
a07cdb6e9f Define two pseudo targets for the target and build platform.
* The main build rules now cause their targets to depend on the
  platform such that global per-platform intializations can be
  set up by making the platform pseudo target depend on the
  target returned by the initialization rule.
2014-07-31 18:07:16 +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
Jonathan Schleifer
d6f8092732 Sorry, my last commit was incomplete 2014-03-29 02:29:52 +01:00
Ingo Weinhold
724f4e2d38 Fix kernel -Werror support
The introduction of secondary arch support for kernel files disabled
-Werror for all kernel files, since the -Werror flags were moved from
{CC,C++}FLAGS to TARGET_WARNING_{CC,C++}FLAGS_<arch>, which, however,
was overwritten by the SetupKernel rule. This commit introduces new
global variables {HAIKU,HOST,TARGET}_WERROR_FLAGS[_<arch>], which
contain the additional -Werror flags to be applied for the architecture.
The config variable WARNINGS can be set to "treatAsErrors" to cause
-Werror and {HOST,TARGET}_WERROR_FLAGS[_<arch>] to be appended to the
compilation flags.

Fixes #10280.
2013-12-05 12:48:22 +01:00
Ingo Weinhold
81291304ad Merge remote-tracking branch 'haiku/master' into package-management
Conflicts:
	build/jam/BuildSetup
	build/jam/HaikuImage
	build/jam/board/sam460ex/BoardSetup
	build/jam/board/verdex/BoardSetup
	data/catalogs/apps/icon-o-matic/fr.catkeys
	src/add-ons/kernel/drivers/audio/hda/hda_codec.cpp
	src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp
	src/apps/debugger/files/FileManager.cpp
	src/apps/debugger/files/FileManager.h
	src/apps/debugger/user_interface/gui/inspector_window/MemoryView.cpp
	src/apps/haiku-depot/MainWindow.cpp
	src/apps/haiku-depot/MainWindow.h
	src/apps/haiku-depot/Model.cpp
	src/apps/haiku-depot/PackageInfo.h
	src/apps/haiku-depot/PackageInfoListener.h
	src/apps/haiku-depot/PackageInfoView.cpp
	src/apps/haiku-depot/PackageInfoView.h
	src/apps/haiku-depot/PackageListView.cpp
	src/apps/haiku-depot/PackageListView.h
	src/system/kernel/arch/arm/arch_timer.cpp
	src/system/libroot/os/arch/arm/atomic.S
	src/tools/translation/bitsinfo/Jamfile
	src/tools/translation/bmpinfo/Jamfile
	src/tools/translation/tgainfo/Jamfile
2013-09-27 01:55:45 +02:00
Ithamar R. Adema
124830be8d ARM: FDT: add DTS[I] files for the first couple of targets.
Both for the rPI and the Verdex target we now have FDTs. The verdex
DTS is homebrew, the pxa DTSIs come from Linux and should be kept
in sync.

The rPI DTS and Broadcom DTSI come from FreeBSD HEAD, and should
ofcourse also be kept in sync.

One global new Jam rule has been introduced for handling DTS
compilation, aptly named CompileDTS....

More coming!
2013-09-19 01:25:44 +02: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
Jérôme Duval
6b40eddef7 build: switch from link option -nostart to -shared for addons and libs.
* they are interchangeable in GCC 2 and 4.6.
2013-04-24 20:40:48 +02:00
Ingo Weinhold
a235c39ee4 Added BuildPlatformStaticLibraryPIC rule.
It works like BuildPlatformStaticLibrary, but generates position
independent code.
2011-11-12 15:40:17 +01:00
Ingo Weinhold
24df65921b Merged signals-merge branch into trunk with the following changes:
* Reorganized the kernel locking related to threads and teams.
* We now discriminate correctly between process and thread signals. Signal
  handlers have been moved to teams. Fixes #5679.
* Implemented real-time signal support, including signal queuing, SA_SIGINFO
  support, sigqueue(), sigwaitinfo(), sigtimedwait(), waitid(), and the addition
  of the real-time signal range. Closes #1935 and #2695.
* Gave SIGBUS a separate signal number. Fixes #6704.
* Implemented <time.h> clock and timer support, and fixed/completed alarm() and
  [set]itimer(). Closes #5682.
* Implemented support for thread cancellation. Closes #5686.
* Moved send_signal() from <signal.h> to <OS.h>. Fixes #7554.
* Lots over smaller more or less related changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42116 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-12 00:00:23 +00:00
Oliver Tappe
783930d916 * reverted the part of r35362 that introduced support for minor ABI versioning - my evil twin made
me do that!

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35370 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 23:41:44 +00:00
Oliver Tappe
418b8758bf * added support for minor ABI versions to the SharedLibrary rule, as otherwise updating libz.so
could prove to be a major PITA (because of all the dependencies that would need to be rebuilt)
* when adding a library to the image, its optional minor abi version is taken care of, too (i. e. a
corresponding link is created).
* the ABI-related links in /system/lib are now replicated in /boot/develop/lib/<arch>

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35362 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 20:53:29 +00:00
Oliver Tappe
291785f88f * added support for library (API-)versioning and private system libraries to
build system
* declared ICU-libs as private system libraries, which causes them to no longer
  be available for building software (they no longer are linked from the 
  development lib folder, so the linker won't find them)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35323 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-27 23:13:49 +00:00
Ingo Weinhold
c682a1937e SharedLibrary: The soname of the library can now be set explicitly by setting
the HAIKU_SONAME variable on the target.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34787 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-28 00:06:11 +00:00
Ingo Weinhold
297827477b Added rule SetVersionScript to set the version script for a target and adjusted
the Link and KernelLd rules to support it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30825 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-22 14:51:16 +00:00
Ingo Weinhold
77e84f219a configure does now check the yasm version for target architecture x86, and
sets the HAIKU_YASM build variable, which will be checked in BuildSetup.
Re-running configure or adding the variable manually to
generated/build/BuildConfig is required.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30145 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-13 10:50:17 +00:00
David McPaul
31433f615e test for valid ASFLAGS before calling yasm
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30112 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-11 06:23:14 +00:00
David McPaul
1c258c3d59 use yasm instead of nasm
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30096 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-10 03:21:06 +00:00
Ingo Weinhold
0feb2904db Moved AssembleNasm to MainBuildRules.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29805 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-30 15:11:55 +00:00
Ingo Weinhold
296f476ec9 * Missing config header directories in the CreateAsmStructOffsetsHeader
rule.
* Automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27825 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-01 14:26:08 +00:00
Maurice Kalinowski
ba97f78287 julun+mauricek:
* add cygwin specific options.
   * Cygwin cannot handle -fPIC option and throws warnings, thus we only use it on non windows platforms for the host tools.
   * Windows uses PATH instead of LD_LIBRARY_PATH, so before calling a host tool this environment variable needs to be expanded... Brilliant...
   * Using jam on Windows is kind of complicated, as the cygwin included gcc creates executables with a .exe extension. When jam parses dependencies for being up to date it ignores this extension again and tries to rebuild the executables again and again. This hack removes the extension after successful linking. Though jam has a SUFEXE variable for cygwin builds, we cannot use this one directly as crosscompiled targets do not have an extension, it is complicated to use the same jam for both platforms. A more clean attempt would be to check for the extension on each host target depending on the platform. This should be fixed later on.
   * Btw. Say hello to Haiku compiling successfully on Windows :) with one patch to be discussed for jam...

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26590 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-23 22:20:37 +00:00
François Revol
feeb7a7124 On m68k immediate values are prefixed by #, not $, so we must filter it out too...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26072 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-22 01:12:44 +00:00
Ingo Weinhold
9d00a03d7b Moved --no-undefined flag addition to AddSharedObjectGlueCode where it
is added in case of target platform haiku only.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25790 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-03 16:34:02 +00:00
Ingo Weinhold
7870b77c18 The Executable and Addon rules also use --no-undefined, now. Apparently
-nostdlib disables that for executables although it should be enabled by
default.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25785 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-03 15:13:33 +00:00