Commit Graph

21 Commits

Author SHA1 Message Date
Ruslan Ermilov
fac6ec1f62 FreeBSD 4.1 bootstrapping aid (setproctitle(3) is in -lutil).
This backs out (sort of) delta 1.18 to perl/miniperl/Makefile.
Update to the ld(1) comment by peter in this revision:

ld(1) built as part of the cross-tools stage of buildworld has
been fixed to look for dynamic dependencies in the right place,
${WORLDTMP}/usr/lib, effective binutils/ld/Makefile,v 1.20.

Approved by:	markm
2002-02-08 13:09:08 +00:00
Ruslan Ermilov
3d8712c3a1 Unbreak standalone `make depend' in gnu/usr.bin/perl.
Noticed by:	bde
2001-10-04 11:45:38 +00:00
Ruslan Ermilov
4448c79e47 Fix cross-building, etc:
1.  To cross-build, one now needs to set TARGET_ARCH, and not the
    MACHINE_ARCH.  MACHINE_ARCH should never be changed manually!

2.  Initialize DESTDIR= explicitly for bootstrap-tools, build-tools,
    and cross-tools stages.  This fixes broken header and library
    dependencies problem.  We build them in the host environment,
    and obviously want them to depend on host headers and libraries.
    The problem with broken header dependencies for bootstrap-tools
    and cross-tools was already partially solved (see BOOTSTRAPPING
    tests in bsd.prog.mk and bsd.lib.mk), but it was still there for
    build-tools if the user ran "make world DESTDIR=/foo".  Also,
    for all of these stages, the library dependencies were broken
    because of how bsd.libnames.mk define DPADD members.

    We still provide a glue to install bootstrap- and cross-tools
    under the ${WORLDTMP}.

    Removed PATH overrides for bootstrap-, build-, and cross-tools
    stages.  There is just no reason why we would need to override
    it, and the hacks to clean up the ${WORLDTMP} in the -DNOCLEAN
    case are no longer needed with fixes from this step.

    That is, we now never use ${WORLDTMP} headers and libraries,
    and we don't use any ${WORLDTMP} installed binaries during
    these stages.  Again, these stages depend solely on the host
    environment, including compiler, headers, and libraries.

3.  Moved "miniperl" back from cross-tools (it has nothing to do
    with a cross-compiler) to build-tools where it belongs.  The
    change from step 1 let to do this.  Also, to make this work,
    build-tools targets of "cc_tools" and "miniperl" were modified
    to call "depend".  Here follow the detailed explanations.

    There are two categories of build tools, for now.  In the first
    category there are "cc_tools" and "miniperl".  They occupy the
    whole (sub)directory, and nothing needs to be done in this
    subdirectory later during the "all" stage.  They are also
    constructed using system makefiles.  We must build the .depend
    early in the build-tools stage because:

    1)  They use (and depend on) the host environment.

    2)  If we don't do this in build-tools, the "depend" stage of
        buildworld will do this for us; wrong library and header
        dependencies will be recorded (DESTDIR=${WORLDTMP}) and,
        what's worse, the "all" stage may then clobber the
        build-architecture format tools (that we built in the
        build-tools stage) with the target-architecture format
        ones, breaking cross build.

    In the second category there are all other build-tools.  They
    share their directory with the "main" module that needs them
    in the "all" stage, and they don't show up themselves in the
    .depend file.  The portion of this fix was already committed
    in gnu/usr.bin/cc/cc_tools/Makefile,v 1.52.

4.  "libperl" is no longer a build tool, and "miniperl" is the
    stand-alone application.  I had to make this change because
    build-tools and "all" stages share the same object directory.
    Without this change, if we cross compile, libperl.a is first
    built for the build architecture during the build-tools stage
    (for the purposes of immediate linkage with "miniperl").
    Later on, the "all" stage sees this library as up-to-date,
    and doesn't rebuild it.  The effect is that the wrong format
    static libperl library is installed with installworld.

5.  Fixed "includes" to install secure/lib/libtelnet headers if
    required.

Reviewed by:	bde
2001-09-29 13:17:54 +00:00
Peter Wemm
b36bb32876 When setproctitle() moved from libutil to libc, we forgot to back the
change out that made libperl.so dynamically depend on libutil.so to pick
up setproctitle() in its old location.  This breaks changes involving
incomptabable libc's because ld looks for the dynamic dependency
(which it has no business doing anyway) in the wrong place - /usr/lib!
2001-02-13 05:19:56 +00:00
Marcel Moolenaar
ad879ce955 Fix cross-building.
o  Move building libperl and miniperl from build-tools to
   cross-tools. libperl uses MACHINE_ARCH to determine the
   right configuration, which doesn't match the build
   machine when cross-building if they are built as build-
   tools.
o  Since miniperl needs to be built as a cross-tool, it
   needs to be installed under /usr/obj so that it can be
   used (cross-tools have a special object directory to
   avoid build conflicts. As a downside, you can't easily
   run cross-tools from their object directory). Remove
   the install and distribute override targets. To avoid
   having miniperl installed by installworld, remove it
   from SUBDIR.
o  We can't pickup miniperl from the object directory but
   since it's installed, depend on PATH. This is save,
   because the makefiles are run with a known path.
o  Build libperl again as part of the library target. A
   _libperl variable existed, but it was never defined.
o  Add chmod to the list of saved tools, because perl
   conditionally uses it during install.

The bootstrap-tools and cross-tools targets are modified to
avoid building profiled and shared libraries. While here,
have these targets build static binaries instead of shared
binaries.

Approved by: markm
2000-11-20 02:17:34 +00:00
Mark Murray
116d5cd80d Fixes and cleanups to the perl build; don't error out when NOCLEAN is
set and directories are being (re)made; build the procname ($0) stuff,
don't install miniperl.
(Miniperl needs a revisit).
2000-08-20 10:03:26 +00:00
Mark Murray
8bea8d9daa Tweaks to the build to allow "make -DNOCLEAN" and "make release" to
work.
2000-06-29 18:21:51 +00:00
Mark Murray
609108d899 Fix for bootstrapping. Grr. Pointy Hat Please? 2000-06-26 15:02:10 +00:00
Mark Murray
9bbc1ad14d Userland build stuff for Perl5.006.
This is cleaned up quite a lot since 5.00502, and the library modules
are broken out into individual dirs. This should please a lot folk.
2000-06-25 14:48:20 +00:00
Bruce Evans
758aca682c Fixed wrong path to libperl in DPADD.
Fixed wrong path to libperl in LDADD in some funky objdir setups.

Use ${dir}/libfoo.a instead of -L${dir} -lfoo for local static libraries
in LDADD so that `make checkdpadd' doesn't report non-errors.

Fixed misformatting of $FreeBSD$.
2000-03-27 18:29:46 +00:00
Mark Murray
bdca82d4e3 Fix for (amongst other things) the cross-compile case where a too-old
version of libperl was being found.

Tested on:	beast
2000-01-29 14:18:02 +00:00
Mark Murray
3ea5059f1e Low-level, but significant cleanup of Perl's build process.
This should significantly ease "make; make install" loops.
1999-09-24 15:32:11 +00:00
Mark Murray
3c044221da Allow perl to be built with thread support.
Submitted by:	Doug Ambrisko <ambrisko@whistle.com>
1999-09-04 10:02:04 +00:00
Peter Wemm
9b7a44a60e $Id$ -> $FreeBSD$ 1999-08-27 23:37:10 +00:00
Mark Murray
ed4a07ffcc Very substantial debug/improvement of the FreeBSD/Perl5 build.
o make install ; make install now works
o make all ; make all is quiet the second time
o Dependancies are properliy debugged; this means that make -jN has a
  far hihjer likelyhood of working.
o a proper 'link farm' has been constructed for the build. This
  dramatically simplifies the dependancy tangle.
o for perldoc's use, all the .pod files are installed.
o the man3 docs are properly compressed.
o the man pages and libary code are installed by the makefiles, not
  by a perl script.
o at the end, h2ph is run.
1998-10-11 18:13:42 +00:00
Mark Murray
6f78849eef Repairs to make the ports system work again. Currently, the ports
are installed in the same place as on 2.2.*; this will almost
certainly change in the future.

While I'm here, finish off the shared library brouhaha with miniperl.
1998-09-26 16:17:06 +00:00
Mark Murray
883f1dcf78 More make cleanups.
1) Part of the NOSHARED fix; I messed this up and managed to get
   perl installed without being linked to the shared library libperl.so.
   This broke Perl in ELF when linking in shared objects.

2) Start of a cleanup of the man3 page location. This will (eventually)
   allow for a the ports to put their pages in the "normal" ${PREFIX}-
   based location.

3) Nuke cruft.
1998-09-23 06:05:28 +00:00
Mark Murray
406f5f9aec Generalise the build a bit more.
1) Fix up the NOSHARED stuff (bde)
2) Accomodate CFLAGS (vanilla)
3) Provide separate files for i386 and alpha (Doug Rabson)

In case 3, the supplied files were corrupted, but the concepts
sound enough, so I just copied what exists into
config.SH-{elf|aout}.{i386|alpha}. Alpha team, go ahead and do what
is necessary on config.SH-elf.alpha. :-)
1998-09-16 17:25:52 +00:00
Mark Murray
3674e655b9 Allow libperl to be a shared library.
This has the delightful side effect of fixing ELF .so objects.

Asked-for-by: peter
1998-09-12 19:16:33 +00:00
Mark Murray
4842ab0d9a Fix parallel building.
(Tested by make -j12 buildworld on a 4-cpu SMP box).

Address (but not solve) ELF shareable objects causing perl to
dump core. (I have a heck of a lot to learn about ELF).

Lots of help by: bde, jkh, jb and others
1998-09-12 15:45:30 +00:00
Mark Murray
17168bf62e Bring in the Perl5 BMake files. This ends the easy stuff.
I'll be doiung the rest in stages.
1998-09-09 07:20:33 +00:00