Print this page
crt: Need a position-independent CRT for PIE
- Implement the greatest possible part of the crt1 in C
- Implement SPARC versions of the ASM sections of crt1
- Build crt1 position-independently, minor ASM updates to be position
  independent
- Implement crt1 with the hook expected by modern GCC to support
  profiling, make gcrt1 a symlink for source compatibility (older GCC
  initializes profiling at firsnt use of _mcount if necessary, so
  doesn't need the gcrt)
- Split the CRT out of developer/library/lint into a separate c-runtime package


  26 # Copyright (c) 2013 Gary Mills
  27 # Copyright 2014 Garrett D'Amore <garrett@damore.org>
  28 # Copyright (c) 2015 Gary Mills
  29 # Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
  30 # Copyright 2016 Toomas Soome <tsoome@me.com>
  31 #
  32 
  33 include ../Makefile.master
  34 
  35 #       Note that libcurses installs commands along with its library.
  36 #       This is a minor bug which probably should be fixed.
  37 #       Note also that a few extra libraries are kept in cmd source.
  38 #
  39 # Certain libraries are linked with, hence depend on, other libraries.
  40 # Library dependencies are called out explicitly, see "Library
  41 # interdependencies" below.
  42 .PARALLEL:
  43 
  44 # Build libc and its dependencies
  45 SUBDIRS=                        \
  46         common                  \
  47         ../cmd/sgs/libconv      \
  48         ../cmd/sgs/libdl        \
  49         libc                    \
  50         .WAIT
  51 
  52 # Build libraries with lots of dependents
  53 SUBDIRS +=              \
  54         libm            \
  55         libmd           \
  56         libmp           \
  57         libnsl          \
  58         libnvpair       \
  59         libsocket       \
  60         .WAIT
  61 
  62 # Build everything else. Aside from explicit dependencies, all libraries
  63 # are built in parallel.
  64 SUBDIRS +=                              \
  65         ../cmd/sendmail/libmilter       \
  66         ../cmd/sgs/libelf       \


 533 #
 534 
 535 all:                    $(SUBDIRS)
 536 
 537 install:                $(SUBDIRS) .WAIT install_extra
 538 
 539 # extra libraries kept in other source areas
 540 install_extra:
 541         @cd ../cmd/sgs; pwd; $(MAKE) install_lib
 542         @pwd
 543 
 544 clean clobber lint:     $(NOWAIT_SUBDIRS:%=%-nodepend)
 545 
 546 install_h check:        $(HDRSUBDIRS:%=%-nodepend)
 547 
 548 _msg:                   $(MSGSUBDIRS:%=%-nodepend) .WAIT _dc
 549 
 550 _dc:                    $(DCSUBDIRS:%=%-nodepend)
 551 
 552 # Library interdependencies are called out explicitly here.
 553 ../cmd/sgs/libconv: common
 554 ../cmd/sgs/libdl: common
 555 libc:           ../cmd/sgs/libconv ../cmd/sgs/libdl
 556 
 557 libm:           libc
 558 libmd:          libc
 559 libmp:          libc
 560 libnsl:         libc libmd libmp
 561 libnvpair:      libc libnsl
 562 libsocket:      libc libnsl
 563 
 564 basedeps:       libc libm libmd libmp libnsl libnvpair libsocket
 565 basedeps :=     TARGET=install
 566 
 567 # The following dependencies don't need to be listed below as they are built
 568 # before everything else:
 569 # libc libm libmd libmp libnsl libnvpair libsocket
 570 abi:            libctf libmapmalloc libproc
 571 auditd_plugins: libbsm libsecdb libgss libmtmalloc
 572 brand:          libzonecfg libmapmalloc
 573 cfgadm_plugins: libdevice libdevinfo libhotplug librcm hbaapi libkstat libscf
 574 fm:             libexacct libipmi libzfs scsi libdevinfo libdevid libcfgadm \




  26 # Copyright (c) 2013 Gary Mills
  27 # Copyright 2014 Garrett D'Amore <garrett@damore.org>
  28 # Copyright (c) 2015 Gary Mills
  29 # Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
  30 # Copyright 2016 Toomas Soome <tsoome@me.com>
  31 #
  32 
  33 include ../Makefile.master
  34 
  35 #       Note that libcurses installs commands along with its library.
  36 #       This is a minor bug which probably should be fixed.
  37 #       Note also that a few extra libraries are kept in cmd source.
  38 #
  39 # Certain libraries are linked with, hence depend on, other libraries.
  40 # Library dependencies are called out explicitly, see "Library
  41 # interdependencies" below.
  42 .PARALLEL:
  43 
  44 # Build libc and its dependencies
  45 SUBDIRS=                        \
  46         crt                     \
  47         ../cmd/sgs/libconv      \
  48         ../cmd/sgs/libdl        \
  49         libc                    \
  50         .WAIT
  51 
  52 # Build libraries with lots of dependents
  53 SUBDIRS +=              \
  54         libm            \
  55         libmd           \
  56         libmp           \
  57         libnsl          \
  58         libnvpair       \
  59         libsocket       \
  60         .WAIT
  61 
  62 # Build everything else. Aside from explicit dependencies, all libraries
  63 # are built in parallel.
  64 SUBDIRS +=                              \
  65         ../cmd/sendmail/libmilter       \
  66         ../cmd/sgs/libelf       \


 533 #
 534 
 535 all:                    $(SUBDIRS)
 536 
 537 install:                $(SUBDIRS) .WAIT install_extra
 538 
 539 # extra libraries kept in other source areas
 540 install_extra:
 541         @cd ../cmd/sgs; pwd; $(MAKE) install_lib
 542         @pwd
 543 
 544 clean clobber lint:     $(NOWAIT_SUBDIRS:%=%-nodepend)
 545 
 546 install_h check:        $(HDRSUBDIRS:%=%-nodepend)
 547 
 548 _msg:                   $(MSGSUBDIRS:%=%-nodepend) .WAIT _dc
 549 
 550 _dc:                    $(DCSUBDIRS:%=%-nodepend)
 551 
 552 # Library interdependencies are called out explicitly here.
 553 ../cmd/sgs/libconv: crt
 554 ../cmd/sgs/libdl: crt
 555 libc:           ../cmd/sgs/libconv ../cmd/sgs/libdl
 556 
 557 libm:           libc
 558 libmd:          libc
 559 libmp:          libc
 560 libnsl:         libc libmd libmp
 561 libnvpair:      libc libnsl
 562 libsocket:      libc libnsl
 563 
 564 basedeps:       libc libm libmd libmp libnsl libnvpair libsocket
 565 basedeps :=     TARGET=install
 566 
 567 # The following dependencies don't need to be listed below as they are built
 568 # before everything else:
 569 # libc libm libmd libmp libnsl libnvpair libsocket
 570 abi:            libctf libmapmalloc libproc
 571 auditd_plugins: libbsm libsecdb libgss libmtmalloc
 572 brand:          libzonecfg libmapmalloc
 573 cfgadm_plugins: libdevice libdevinfo libhotplug librcm hbaapi libkstat libscf
 574 fm:             libexacct libipmi libzfs scsi libdevinfo libdevid libcfgadm \