the package. For f2c, all Fortran 95+ programs are broken and it is
generally not possible to mix output from different Fortran compilers.
Default to g95 for now as fallback compiler.
Build depends are target packages that are needed at build-time for,
e.g., static libraries to link against, header files to include, &c.
Tool depends are native packages that are needed at build-time for,
e.g., compilers/linkers/&c. to run.
ok agc
DragonFly has two compilers in base, GCC 4.4.7 and GCC 4.7.2.
The way one switches between them for userland programs is to set
CCVER in the environment.
However, to set this via make.conf is tricky. I've been using the
low level "ALL_ENV+= CCVER=gcc47", but this trick fails to properly
identify the compiler which results in _GCC_VERSION being incorrectly
defined.
Additionally, there are some prominent packages that do not build on
gcc 4.7 and the fix is either not fully understood or would require a
large amount of work to implement. In these cases, it is desireable
to specify the package be built on gcc 4.4 regardless of CCVER setting.
To address these issues, a new directive is added: DRAGONFLY_CCVER.
It is only effective if OPSYS equals "DragonFly", and it will properly
set CCVER and properly define _GCC_VERSION. It will also allow a
per package specification of a particular compiler in the pkg makefile.
Introduce USE_GCC_RUNTIME for packages which build shared libraries, but
do not use libtool to do so, and add logic to always define _USE_GCC_SHLIB
on Solaris if either USE_LIBTOOL or USE_GCC_RUNTIME are defined. On Solaris,
a non-GNU linker is always used, so this correctly adds a dependency upon the
gcc runtime for those packages.
All recent packages featuring Ada code have a hard dependency on the
lang/gnat-aux compiler package. The valid values for USE_LANGUAGES
are c, c99, c++, fortran, fortran77, java, objc, so specifying a
specific compiler was necessary up into now.
One problem with lang/gnat-aux is that it is installed at ${LOCALBASE}
where the lang/gccXX compilers are installed at ${LOCALBASE}/gccXX.
The latter compilers have no possibility of sharing conflicting files
unlike lang/gnat-aux. Rather than fundamentally update the GCC 4.6-based
lang/gnat-aux to avoid these conflicts, a new Ada-capable compiler
based on GCC 4.7 was created with the intent of being supported by
mk/compiler.mk and mk/compiler/gcc.mk.
The Ada packages will be effectively migrated from lang/gnat-aux to the
new lang/gcc-aux compiler, but lang/gcc-aux will remain as a standalone
package as it is the only GCC 4.6-based compiler that builds on
DragonFly and serves it as a world and kernel compile option.
In addition to the current language wrappers, lang/gcc-aux adds
wrappers for "ada" (unique to gcc-aux, hardlinked to gcc driver),
and the gnat, gnatmake, gnatbind, gnatlink, gnatchop, gnatprep,
and gnatls programs. Supporting all of these allows the wrapper
system to be used with Ada packages; currently wrappers are mostly
disabled on them.
The lang/gcc47 implicitly adds support for the "objc-c++" language by
adding it to the USE_LANGUAGES list, but it wasn't really supported.
An attempt was made to better support objc-c++, but this new enumeration
probably still needs work or needs to be removed completely.
Logic for Ada support:
1) All lang/gccXX compilers have version numbers ranging from 2.8.1 to 9.
2) lang/gcc-aux uses the release date as its version number in the form of
YYYYMMDD with a minimum value of 20120614, so there is no version
overlap.
3) When at least one element of USE_LANGUAGES is "ada", the value of
20120614 is added to the set of GCC_REQD which selects lang/gcc-aux.
4) The _NEED_NEWER_GCC check is disabled. It fails and isn't relevant;
unless a package sets GCC_REQD over 20120614, the only way to select
lang/gcc-aux is to specify the Ada language and only one compiler
known to gcc.mk can support it.
Default to f2c for Fortran, mirroring gcc.
Append -Qunused-arguments in the wrappers to unbreak many stupid
configure checks that get confused by the (also added) -L options.
Solaris 11 Express, too).
Changes 4.4.5:
The GNU project and the GCC developers are pleased to announce the
release of GCC 4.4.5.
This release is a bug-fix release, containing fixes for regressions in
GCC 4.4.4 relative to previous releases of GCC.
Welcome to the modern world of computing.
This is known to break DragonFly at least,
either port g95 or fix lang/gcc44 to work on NetBSD.
Unless there're packages that still think that Fortran is F77,
this shouldn't affect anything.
The [1]GNU project and the GCC developers are pleased to announce the
release of GCC 4.4.4.
This release is a bug-fix release, containing fixes for regressions in
GCC 4.4.3 relative to previous releases of GCC.
The GNU project and the GCC developers are pleased to announce the
release of GCC 4.4.3.
This release is a bug-fix release, containing fixes for regressions in
GCC 4.4.1 relative to previous releases of GCC.
Changes are many, important for pkgsrc:
- much higher speed (up to 30% faster for the overall build of libX11)
- less magic for detection of the tag
The pkgsrc integration of f2c has been changed to be more sane.
libtool itself now depends on the f2c frontend to use proper
auto-configuration and only fakes up the library. This part is
encapsulated in mk/compiler/f2c.mk.
exclam != echo ${DEFINED_LATER:Q} value
colon := ${DEFINED_LATER} value
DEFINED_LATER = later
show:
@echo ${exclam}
@echo ${colon}
Don't expect them to be the same.
- provide cpp wrapper using cc -E
- provide c++_r wrapper working like c++
- provide -rpath handling for cc
- fix some debug messages to provide the correct script name
- Add cc_r/xlc_r wrapper using the same rules as xlc itself.
It is used for example by Perl.
- Improve the RPATH emulation:
- Always set -blibpath, use /usr/lib:/lib as default
- If -blibpath is exlicitly given, add to the default
- Additionally append any -Wl,-rpath given.
installed by devel/ccache can be used. This is especially important for
cross-builds.
Documented IGNORE_CCACHE.
Fixed the double use of the directory ${WRKDIR}/.ccache, which was used
both as wrapper directory and as cache directory.
at the very least with AIX 5.3 directly and for older, wrapper should
take care.
Provide some more sane defaults for XLC and bail out explicitly if
XLCBASE can't be determined.
ALL_ENV as well. This ensures that any locale settings are
overridden and the output matches what pkgsrc expects.
This should fix some of the strange bootstrap issues seen over
time that were seemingly fxied by USE_NATIVE_GCC=yes.
- USE_CROSS_COMPILATION activates it, CROSS_DESTDIR specifies root of
the target filesystem
- derive _CROSS_DESTDIR from CROSS_DESTDIR or MAKEOBJDIR
- buildlink3.mk prefixes the files to symlink with _CROSS_DESTDIR
- compiler/gcc.mk knows about the target prefix (e.g. i386--netbsdelf)
- PKG_DBDIR is prefixed with _CROSS_DESTDIR
- package-install and bin-install are not called with su
- install and strip are redirected to the tool version
- links for the target specific ar, as, ld, nm, objdump, ranlib and
strip are added
- compiler wrapper detect if linking is requested or not
- special command sinks for CPP and CC/CXX add the cross-compile magic:
- modify include dirs to get the target /usr/include
- modify linker dirs and runpath to use target /usr/lib at link time,
but keep correct rpath entries
Supported-by: Google SoC 2007
Basic tests by he@ on Sparc. Review from jlam@.
everything that is related to it.
The wrappers in WRKDIR/.wrapper now call the compilers in SUNWSPROBASE
directly. The aliases that have been provided had never been called
because WRKDIR/.wrapper was earlier in the PATH and already called the
canonical compiler (for example, .wrapper/gcc called .sunpro/cc, not
.sunpro/gcc).
Also removed the comments related to f2c. We have a version control
system to keep outdated code, so why keep it in the current source?
to all internal recursive make processes. As such, rename it to
"PKGSRC_MAKE_ENV".
XXX Note, some of the usage of this variable in package Makefiles seems
XXX incorrect. They probably want "MAKE_ENV", which is the environment
XXX passed to the make process when running "make" within ${WRKSRC}.
the linker, set _COMPILER_RPATH_FLAG accordingly. "-Wl," is removed by
the sunpro compiler wrapper where necessary.
fix comment for _LINKER_RPATH_FLAG while here.
this fixes, among other things, apache modules built with apxs.
to tech-pkg:
=====
* USE_BUILDLINK3=YES will be unconditional. (In fact, USE_BUILDLINK3 will
be ignored altogether by mk/; but see below.)
* NO_BUILDLINK and NO_WRAPPER will be ignored by mk/. If a build happens,
these phases will happen.
* The existing NO_BUILD will imply the previous NO_BUILDLINK and NO_WRAPPER.
If no build happens, those phases are not needed.
* NO_TOOLS will be ignored by mk/. The tools phase, which provides much
more than just the C compiler, will always happen regardless of package.
This will make metapackage builds only slightly slower, in trade for far
less user error.
icc is a high performance compiler suite for Linux/i386 and ia64, and
is free for non-commercial use. see:
http://www.intel.com/software/products/compilers/clin/
for more information.
tested with icc version 8.0 and 8.1 on Slackware 10/i386.
Also move its definition later in bsd.pkg.mk, so that it actually works
for compiler/*.mk (which is why those files originally had to provide
"defaults" for their variables -- they never did get evaluated).
one fork/exec step on platforms where gcc is compiled with hardcoded gcc-lib
pathnames. This applies to most platforms, but the default currently
remains not to use symlinks so as to avoid unexpected gotchas for users.