Specifically, avoid building all plugins as non-static objects,
as well as some supplementary libraries. In fact, a large amount
of plugins was already gated to build as shared objects only with
WITHPIC=1, but this was not done consistently.
This gating has been moved to */p/Makefile.
Building these shared objects is a waste of time and breaks
the --without-pic build unless CFLAGS is forced in the make
invocation.
* Modifications like adding @SSL_CFLAGS@ to .pc.acr files that
would be overwritten by `make pkgcfg` have been moved to
Makefiles proper.
* Missing .pc.acr files for libraries r_egg and r_crypto were
added to the tree as well as the configure script.
* Instead of explicitly listing every -lr_* library in every
.pc file in the Libs: section, r_* libraries are now listed
in the Requires: section, which ensures that flags get
transitively propagated. This gets rid of the MAGICSED hack.
libr.a is a static library that combines every library r2 builds
and/or depends on, which means that they should be repackaged.
Before this commit, the situation was quite sorry:
* Makefile-ar.mk was parameterized by ARTYPE;
* there were three ARTYPEs, default, gnu and ios;
* the ios ARTYPE was not used and instead its logic was folded
into default;
* the gnu ARTYPE was obviously broken (typo in "rm -f libr.",
typo in "$(C_AR)") preventing it from ever running correctly;
* the default ARTYPE created libraries that did not link
on e.g. a Linux desktop, since the libr.a it created consisted
only of another .a files, and this just results in an error
trying to link:
libr.a: error adding symbols: Archive has no index; run ranlib to add one
* the default ARTYPE, when targeting iOS, performed a bunch of
useless work combining the archives as above, and then just
delegated to libtool, which overwrites the result.
After this commit:
* there is no ARTYPE (nothing in the r2 tree sets it anyway);
* there are no platform-specific assumptions about ar, such
as support for the -M option;
* there is only one code path;
* every archive is partially linked into a single object file
and then added to libr.a.
* Add SIDT operator for x86 assembler (Store Interrupt Descriptor Table Register)
* Add SLDT operator for x86 assembler (Store Local Descriptor Table Register)
* Add SMSW operator for x86 assembler (Store Machine Status Word)
* Add SGDT operator for x86 assembler (Store Global Descriptor Table Register)
* Add STMXCSR operator for x86 assembler (Store MXCSR Register State)
* Add STR operator for x86 assembler (Store Task Register)