Commit graph

30 commits

Author SHA1 Message Date
Dan Willemsen
c9aa6fca41 Fix building static linux binaries
BUILD_HOST_static has been broken because I was stripping
-Wl,--start-group/-Wl,--end-group into a separate set of ldflags instead
of keeping them wrapped around some of the ldlibs. So don't pass some of
the build system flags through the ldlibs checker.

Bug: 30898128
Change-Id: I332b42679695cdc5da3cb0036290b6a3544699c0
2016-09-13 17:48:07 +00:00
Dan Willemsen
327fa9c411 Forbid libstdc++ on Linux and Darwin
The last user has been removed, forbid any modules from selecting this.

Change-Id: Idd9ef6ca4b6c6754935d59c4a09c7d213ae481c1
2016-06-15 13:41:45 -07:00
Colin Cross
50a8120f02 Remove support for device libstdc++ as stl
Prevent platform modules from linking against libstdc++ as their STL
implementation.  NDK modules may still use libstdc++.

Change-Id: I317c9bb90ca7d2e0c1f5770bbdff8075dfe3cc83
2016-03-17 13:10:56 -07:00
Dan Willemsen
441d646c6f Fix C++ on Darwin
We've been including the system libc++ headers even if we're building
against our version of libc++. Stop doing that, and only add the headers
to our path if we're using the system libraries.

If nothing is specified, on recent OSX versions, libc++ is the default
c++ library instead of libstdc++. We've been explicitly including the
libc++ headers on all versions, but that breaks old versions. Force us
over to libc++, since the system libstdc++ does not support C++11, and
libc++ is still supported on our oldest version (10.8).

Change-Id: I1fccee8da0f425e10ccc9d3247ed40664eb6ada0
2016-03-08 20:15:21 -08:00
Dan Albert
0e2e71dc2e Add support for LOCAL_NDK_STL_VARIANT := none.
Sometimes we don't want any STL.

Change-Id: I08b4389b7882702c0e483a1456f7775fe4da1c75
2015-12-09 15:59:17 -08:00
Dan Albert
eb3e3fa5da Use exported includes for libc++.
Change-Id: Ia5d9c857a43975448a8c2b489cc29be0fa67ddf6
2015-09-24 14:09:09 -07:00
Dan Albert
d1d68b19ac Fix LOCAL_CXX_STL := none for Windows.
We still need to link the various MSVC libraries even if we aren't
using the STL.

Bug: http://b/22953515
Change-Id: I73c35710a6162408e99480a4840eedd291adf7ab
2015-09-11 13:37:51 -07:00
Dan Willemsen
057aaea54a Add HOST_CROSS_OS
Instead of using recursive make to change the HOST_OS when building the
windows SDK under linux, add the concept of cross-building to another
host os.

Bug: 23566667
Change-Id: I6dc525b601b6251d458d197c30bf4660d7485502
2015-09-09 18:12:29 +00:00
Dan Willemsen
1ca3b70f84 Blacklist libc++ from windows host builds
It's not ready, and instead of each Android.mk doing this, do it in the
core build.

Change-Id: Ie80b17ffcde64e72c98d310ca986d4cf775c099e
2015-08-18 19:08:45 -07:00
Dan Albert
ef3e7cfa5d Disallow LOCAL_CXX_STL with LOCAL_SDK_VERSION.
Change-Id: I2cd97b453ad24cc4e5d59b4035e861df41b8cbb9
2015-07-27 14:14:56 -07:00
Dan Albert
686a557689 Revert "Revert "Hide unwinder symbols in each binary.""
Bug: 18471342
Bug: 19958712
This reverts commit 61f675bb53.

Change-Id: I87d3655d1238a9cf26d96dcb0665ba5110931800
2015-06-23 13:33:10 -07:00
Bart Sears
61f675bb53 Revert "Hide unwinder symbols in each binary."
This reverts commit dc30a16ba2.

Change-Id: Ib6af148bcaa3041b3040e525442a39b493852794
2015-06-23 19:23:13 +00:00
Dan Albert
dc30a16ba2 Hide unwinder symbols in each binary.
These symbols need to always be resolved for each binary. Making these
symbols hidden means that we will get a build breakage if this doesn't
happen, and should also prevent the situation where one unwinder's
symbols are visible to the other.

Bug: 18471342
Bug: 19958712
Change-Id: Ieff1f10dab254b60ed120410f45998cf75bb5b9b
2015-06-22 15:54:57 -07:00
Dan Albert
2a4a023a54 Fix using libc++_static in dynamic binaries.
Change-Id: I89bacfbf270d2d1bc1b9b2fa6951b355a67b808c
2015-05-12 14:07:18 -07:00
Dan Albert
5ee74388b1 Merge "Disallow using stlport." 2015-05-06 19:53:43 +00:00
Dan Albert
3a360a7353 Disallow using stlport.
The only remaining users of stlport are vendor blobs. Prevent any new
users from using it.

Bug: http://b/15193147
Change-Id: I577a16c8c52e2c7d939c3b5026e18ad90e4b9f26
2015-05-06 10:10:30 -07:00
Dan Albert
0ad5bd22c8 Cleanup libc++ configuration.
Change-Id: I2162f2a19c7f13cfbd4a2530a783a4e671d7cdb1
2015-05-06 10:09:50 -07:00
Dan Albert
88a8ce6946 Select the correct target STL with USE_MINGW.
The previous check tested against USE_MINGW even for target builds.
Hadn't been a problem because people don't typically set USE_MINGW
directly.

Change-Id: I90fe0ea890c44917eb29dd02d7c7f76c19e7fbd6
2015-05-04 16:34:19 -07:00
Dan Albert
3e99e66213 Don't use libunwindbacktrace for non-ARM.
After fixing the link order here, it seems libunwindbacktrace no
longer works for exception unwinding, but libgcc now does.

Change-Id: Ice79af4b8f234ed6a053ee818b6dec3aa9706c8a
2015-04-14 14:42:45 -07:00
Dan Albert
5036729c41 Add unwinder linking to STL setup.
Previously we were bundling this into libc++ and having each binary
resolve its symbols from there. This means that the unwinder that gets
used for a given binary is sensitive to the order in which its
libraries are linked. Making this a static library dependency of each
binary means the right unwinder will always be used.

Bug: 18471342
Bug: 19958712
Change-Id: I782d212784dbf85355b5d9146d7460d675259a0e
2015-03-31 18:29:23 -07:00
Dan Albert
7955bf0fd6 Static binaries with libc++ need libs c, m and dl.
Can't be done on the user's end because these libraries all need to be
linked after libc++_static.

Change-Id: Ib21364e6f43689cf59da31d6f561919731ef8272
2015-03-19 13:05:13 -07:00
Dan Albert
d666bb1009 Fix the mac build.
Bug: 19567451
Change-Id: I6d15259520c9813df1a44d9244c99482f713d114
2015-03-03 21:47:04 -08:00
Dan Albert
b5eb905729 Catch more cases of static host executables.
Bug: 19567451
Change-Id: Ie1de436db74b727421449b43b192e9599ca8fca6
2015-03-03 18:30:27 -08:00
Dan Albert
4f2afde252 (Hopefully) fix the Mac build.
The Mac linker doesn't understand --start-group, which is needed for
properly linking libgcc/libc statically. It isn't needed for dynamic
executables though, so use that driver behavior where appropriate.

Bug: 19567451
Change-Id: Ifeb03bea55bc87561c64ddafdb99f664fef0f00e
2015-03-03 17:42:28 -08:00
Dan Albert
8bf4cc97c2 Fix building static host executables.
BUILD_HOST_static=1 forces all host binaries to be statically linked.
Since -nodefaultlibs was passed (to disable libstdc++), libgcc wasn't
being passed. This change emulates the driver's behavior.

Also fix default STL selection for BUILD_HOST_static.

Bug: 19567451
Change-Id: I617aab782d40ac76ca5a7d9dddf0f202a4e3a69b
2015-03-03 15:08:11 -08:00
Dan Albert
93766b28ce Make libc++ the default STL.
Previously, code defaulted to using libstdc++ (which was GNU libstdc++
on the host, or Bionic's "libstdc++" on the target). Now we default to
libc++. The exception for this is when using mingw, because we cannot
build libc++ for mingw.

Change-Id: I68726fa26cdcb6263f17c838d3e859debd57fae1
2014-11-07 13:24:56 -08:00
Dan Albert
5cab04ffd2 Missed a dependency on pthreads.
Change-Id: I060c9c65b07efe89a308fccf71a1096424a7de39
2014-11-06 17:32:25 -08:00
Dan Albert
93e8cf71fc Use libstc++ for the name of bionic's STL.
It is libstdc++.so, after all, and the naming makes sense for the host
this way (since it also uses libstdc++).

Change-Id: If37ffa015f7967a928ea47a290363d7696c4ce35
2014-10-16 21:18:15 -07:00
Dan Albert
b49987e2f8 Never use stlport on the host.
LOCAL_CXX_STL := stlport should just use the default STL on the host.

Change-Id: Iede1b2d8884e237a10e000e5835addb768c8f78d
2014-10-16 09:53:51 -07:00
Ying Wang
75e8fcbb6c Apply LOCAL_CXX_STL to also prebuilts.
Because LOCAL_CXX_STL modifies a module's required shared libaries,
we need this for also prebuilt shared libraries and executables.

Change-Id: I418c26143999a613c40aadf990f131b123e0ac3d
2014-10-07 13:07:00 -07:00