Thursday, June 7, 2018

Building GNU gperf 3.1

The basic building strategy and general assumptions have been detailed on a previous post: Staged Building:

 $ pwd
/stage/build

$ ./gnu-build-preparation ../source/.../gperf-3.1.tar.gz
...

$ cd gperf/gperf-3.1-32

$ source ../setenv-3.1 32

Configuration file [version 4]: /stage/build/gperf/ld.config-32 
 Platform:     32-bit LSB 80386
 Default Library Path (ELF):   /opt/gnu/lib:/opt/usr/lib:/lib:/usr/lib
 Trusted Directories (ELF):    /lib/secure:/usr/lib/secure  (... default)

Command line:
  crle 

   -c /stage/build/gperf/ld.config-32 
   -l /opt/gnu/lib:/opt/usr/lib:/lib:/usr/lib

LD_CONFIG_32=/stage/build/gperf/ld.config-32

CONFIG_SHELL=

CC=/usr/bin/gcc CFLAGS=-m32 -march=nocona -mtune=nocona -std=gnu89

CXX=/usr/bin/g++ CXXFLAGS=-m32 -march=nocona -mtune=nocona -std=gnu++98

LD=/usr/bin/ld LDFLAGS=-m32 -march=nocona -mtune=nocona

PATH=/opt/gnu/bin:/opt/usr/bin:/usr/gnu/bin:/usr/bin:/usr/sbin

PKG_CONFIG_PATH=/opt/usr/lib/pkgconfig

Suggested build sequence:

Fine-tune/fix config.h.in, Makefile.in and others...

$ ./configure \
    --build=i386-pc-solaris2.11 \
    --prefix=/opt/... \
    ...

$ gmake -j2

$ su
# source ../setenv-3.1 32

For IPS package:

# gmake DESTDIR=/stage/prototype/gperf/3.1/32 install

For immediate use:

# gmake install
# zfs snapshot -r .../opt/...@gperf-3.1


$ ./configure \
  --build=i386-pc-solaris2.11 \
  --prefix=/opt/gnu
checking whether make sets $(MAKE)... yes
configure: creating ./config.status
config.status: creating Makefile
=== configuring in lib (/stage/build/gperf/gperf-3.1-32/lib)
configure: running /bin/sh ./configure --disable-option-checking '--prefix=/opt/gnu'  '--build=i386-pc-solaris2.11' 'build_alias=i386-pc-solaris2.11' --cache-file=/dev/null --srcdir=.
checking whether make sets $(MAKE)... yes
checking for gcc... /usr/bin/gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /usr/bin/gcc accepts -g... yes
checking for /usr/bin/gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... /usr/bin/gcc -E
checking whether we are using the GNU C++ compiler... yes
checking whether /usr/bin/g++ accepts -g... yes
checking how to run the C++ preprocessor... /usr/bin/g++ -E
checking for ar... ar
checking for ranlib... ranlib
checking for a BSD compatible install... /usr/bin/ginstall -c
configure: creating ./config.status
config.status: creating Makefile
=== configuring in src (/stage/build/gperf/gperf-3.1-32/src)
configure: running /bin/sh ./configure --disable-option-checking '--prefix=/opt/gnu'  '--build=i386-pc-solaris2.11' 'build_alias=i386-pc-solaris2.11' --cache-file=/dev/null --srcdir=.
checking whether make sets $(MAKE)... yes
checking for gcc... /usr/bin/gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /usr/bin/gcc accepts -g... yes
checking for /usr/bin/gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... /usr/bin/gcc -E
checking whether we are using the GNU C++ compiler... yes
checking whether /usr/bin/g++ accepts -g... yes
checking how to run the C++ preprocessor... /usr/bin/g++ -E
checking for a BSD compatible install... /usr/bin/ginstall -c
checking for stack-allocated variable-size arrays... yes
checking for rand in -lm... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
=== configuring in tests (/stage/build/gperf/gperf-3.1-32/tests)
configure: running /bin/sh ./configure --disable-option-checking '--prefix=/opt/gnu'  '--build=i386-pc-solaris2.11' 'build_alias=i386-pc-solaris2.11' --cache-file=/dev/null --srcdir=.
checking whether make sets $(MAKE)... yes
checking for gcc... /usr/bin/gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /usr/bin/gcc accepts -g... yes
checking for /usr/bin/gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... /usr/bin/gcc -E
checking whether we are using the GNU C++ compiler... yes
checking whether /usr/bin/g++ accepts -g... yes
checking how to run the C++ preprocessor... /usr/bin/g++ -E
configure: creating ./config.status
config.status: creating Makefile
=== configuring in doc (/stage/build/gperf/gperf-3.1-32/doc)
configure: running /bin/sh ./configure --disable-option-checking '--prefix=/opt/gnu'  '--build=i386-pc-solaris2.11' 'build_alias=i386-pc-solaris2.11' --cache-file=/dev/null --srcdir=.
checking whether make sets $(MAKE)... yes
checking for a BSD compatible install... /usr/bin/ginstall -c
configure: creating ./config.status
config.status: creating Makefile


$ gmake -j2
cd lib; gmake all
gmake[1]: Entering directory `/stage/build/gperf/gperf-3.1-32/lib'
/usr/bin/gcc -m32 -march=nocona -mtune=nocona -std=gnu89 -I. -c ./getopt.c
/usr/bin/gcc -m32 -march=nocona -mtune=nocona -std=gnu89 -I. -c ./getopt1.c
/usr/bin/g++ -m32 -march=nocona -mtune=nocona -std=gnu++98 -I. -c ./getline.cc
/usr/bin/g++ -m32 -march=nocona -mtune=nocona -std=gnu++98 -I. -c ./hash.cc
rm -f libgp.a
ar rc libgp.a getopt.o getopt1.o getline.o hash.o
ranlib libgp.a
gmake[1]: Leaving directory `/stage/build/gperf/gperf-3.1-32/lib'
cd src; gmake all
gmake[1]: Entering directory `/stage/build/gperf/gperf-3.1-32/src'
/usr/bin/g++ -m32 -march=nocona -mtune=nocona -std=gnu++98 -I. -I./../lib -c ./version.cc
/usr/bin/g++ -m32 -march=nocona -mtune=nocona -std=gnu++98 -I. -I./../lib -c ./positions.cc
/usr/bin/g++ -m32 -march=nocona -mtune=nocona -std=gnu++98 -I. -I./../lib -c ./options.cc
/usr/bin/g++ -m32 -march=nocona -mtune=nocona -std=gnu++98 -I. -I./../lib -c ./keyword.cc
/usr/bin/g++ -m32 -march=nocona -mtune=nocona -std=gnu++98 -I. -I./../lib -c ./keyword-list.cc
/usr/bin/g++ -m32 -march=nocona -mtune=nocona -std=gnu++98 -I. -I./../lib -c ./input.cc
/usr/bin/g++ -m32 -march=nocona -mtune=nocona -std=gnu++98 -I. -I./../lib -c ./bool-array.cc
/usr/bin/g++ -m32 -march=nocona -mtune=nocona -std=gnu++98 -I. -I./../lib -c ./hash-table.cc
/usr/bin/g++ -m32 -march=nocona -mtune=nocona -std=gnu++98 -I. -I./../lib -c ./search.cc
/usr/bin/g++ -m32 -march=nocona -mtune=nocona -std=gnu++98 -I. -I./../lib -c ./output.cc
/usr/bin/g++ -m32 -march=nocona -mtune=nocona -std=gnu++98 -I. -I./../lib -c ./main.cc
/usr/bin/g++ -m32 -march=nocona -mtune=nocona -std=gnu++98 -m32 -march=nocona -mtune=nocona -o gperf version.o positions.o options.o keyword.o keyword-list.o input.o bool-array.o hash-table.o search.o output.o main.o ../lib/libgp.a -lm
gmake[1]: Leaving directory `/stage/build/gperf/gperf-3.1-32/src'
cd tests; gmake all
gmake[1]: Entering directory `/stage/build/gperf/gperf-3.1-32/tests'
gmake[1]: Nothing to be done for `all'.
gmake[1]: Leaving directory `/stage/build/gperf/gperf-3.1-32/tests'
cd doc; gmake all
gmake[1]: Entering directory `/stage/build/gperf/gperf-3.1-32/doc'
gmake[1]: Nothing to be done for `all'.
gmake[1]: Leaving directory `/stage/build/gperf/gperf-3.1-32/doc'


$ su
...

# source ../setenv-3.1 32

...

# gmake install
cd lib; gmake install
gmake[1]: Entering directory `/stage/build/gperf/gperf-3.1-32/lib'
gmake[1]: Nothing to be done for `install'.
gmake[1]: Leaving directory `/stage/build/gperf/gperf-3.1-32/lib'
cd src; gmake install
gmake[1]: Entering directory `/stage/build/gperf/gperf-3.1-32/src'
/bin/sh ./../build-aux/mkinstalldirs /opt/gnu/bin
/usr/bin/ginstall -c gperf /opt/gnu/bin/gperf
gmake[1]: Leaving directory `/stage/build/gperf/gperf-3.1-32/src'
cd tests; gmake install
gmake[1]: Entering directory `/stage/build/gperf/gperf-3.1-32/tests'
gmake[1]: Nothing to be done for `install'.
gmake[1]: Leaving directory `/stage/build/gperf/gperf-3.1-32/tests'
cd doc; gmake install
gmake[1]: Entering directory `/stage/build/gperf/gperf-3.1-32/doc'
/bin/sh ./../build-aux/mkinstalldirs /opt/gnu/share/info
/usr/bin/ginstall -c -m 644 ./gperf.info /opt/gnu/share/info/gperf.info
/bin/sh ./../build-aux/mkinstalldirs /opt/gnu/share/man/man1
/usr/bin/ginstall -c -m 644 ./gperf.1 /opt/gnu/share/man/man1/gperf.1
/bin/sh ./../build-aux/mkinstalldirs /opt/gnu/share/doc/
/usr/bin/ginstall -c -m 644 ./gperf.html /opt/gnu/share/doc//gperf.html
gmake[1]: Leaving directory `/stage/build/gperf/gperf-3.1-32/doc'


$ sudo zfs snapshot -r .../opt/gnu@gperf-3.1