Friday, March 16, 2018

Building GNU libsigsegv 2.12

In a crazy effort to gather an ever growing set of up-to-date GNU tools and utilities built my myself I proceed little by little on each GNU software, getting its source code and attempting the build. At first I'm concerned in just successfully building the software. But I'll try to figure out how to reference the new artifacts in a sort of side-by-side installation that could co-exist with the standard Solaris packages without mixing stuffs.

The GNU libsigsegv library is sometimes used on GNU buildings so I add it to my crazy list of GNU software to manually build. For now, it seems that later on I would have to adjust my GNU m4 macros in order to take into account this new libsigsegv version. Fortunately, later on when I build an updated version of GNU m4 I'll have the option (--with-libsigsegv-prefix) to automatically do that.

The basic building strategy and general assumptions have been detailed on a previous post: Staged Building, so I'll (hopefully) get more straight to the point:

$ pwd
/stage/build

$ ./gnu-build-preparation ../source/.../libsigegv-2.12.tar.gz

Processing /stage/source/.../libsigsegv-2.12.tar.gz

------------------------------------
App: libsigsegv
Ver: 2.12
------------------------------------

In the process, the following ZFS datasets will be created:

  rpool/stage/build/libsigsegv
  rpool/stage/build/libsigsegv/libsigsegv-2.12
  rpool/stage/build/libsigsegv/libsigsegv-2.12-32
  rpool/stage/build/libsigsegv/libsigsegv-2.12-64

  rpool/stage/prototype/libsigsegv
  rpool/stage/prototype/libsigsegv/libsigsegv-2.12
  rpool/stage/prototype/libsigsegv/libsigsegv-2.12/32
  rpool/stage/prototype/libsigsegv/libsigsegv-2.12/64

Enter "y" to proceed:
y
 

Creating rpool/stage/build/libsigsegv...
Creating rpool/stage/build/libsigsegv/libsigsegv-2.12...

rpool/stage/build/libsigsegv
rpool/stage/build/libsigsegv/libsigsegv-2.12
rpool/stage/build/libsigsegv/libsigsegv-2.12@source
rpool/stage/build/libsigsegv/libsigsegv-2.12-32
rpool/stage/build/libsigsegv/libsigsegv-2.12-32@start
rpool/stage/build/libsigsegv/libsigsegv-2.12-64
rpool/stage/build/libsigsegv/libsigsegv-2.12-64@start

Creating rpool/stage/prototype/libsigsegv subtree.

rpool/stage/prototype/libsigsegv
rpool/stage/prototype/libsigsegv/2.12
rpool/stage/prototype/libsigsegv/2.12/32
rpool/stage/prototype/libsigsegv/2.12/64

Creating pre-configuration script.


$ cd libsigsegv/libsigsegv-2.12-64

$ source ../setenv 64

CONFIG_SHELL=

CC=/usr/bin/gcc CFLAGS=-m64 -march=core2 -std=gnu89

CXX=/usr/bin/g++ CXXFLAGS=-m64 -march=core2 -std=gnu++03

LD=/usr/bin/ld LDFLAGS=-m64 -march=core2

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

PKG_CONFIG_PATH=

Suggested build sequence:

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

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


$ gmake -j4

For IPS package:


$ sudo gmake DESTDIR=/stage/prototype/libsigsegv/2.12/64 install

For immediate use:

$ sudo gmake install

$ zfs snapshot -r .../opt/...@libsigsegv-2.12

$ ./configure --build=x86_64-pc-solaris2.11 --prefix=/opt/gnu

Build Tools:
checking for a BSD-compatible install... /usr/gnu/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/gnu/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... 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 whether /usr/bin/gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of /usr/bin/gcc... none
checking how to run the C preprocessor... /usr/bin/gcc -E
checking build system type... x86_64-pc-solaris2.11
checking host system type... x86_64-pc-solaris2.11
checking host platform... x86_64-pc-solaris2.11
checking how to print strings... print -r
checking for a sed that does not truncate output... /usr/gnu/bin/sed
checking for grep that handles long lines and -e... /usr/gnu/bin/grep
checking for egrep... /usr/gnu/bin/grep -E
checking for fgrep... /usr/gnu/bin/grep -F
checking for ld used by /usr/bin/gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... no
checking for BSD- or MS-compatible name lister (nm)... /usr/gnu/bin/nm -B
checking the name lister (/usr/gnu/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 786240
checking how to convert x86_64-pc-solaris2.11 file names to x86_64-pc-solaris2.11 format... func_convert_file_noop
checking how to convert x86_64-pc-solaris2.11 file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... print -r --
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/gnu/bin/nm -B output from /usr/bin/gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/gnu/bin/dd
checking how to truncate binary pipes... /usr/gnu/bin/dd bs=4096 count=1
checking for mt... mt
checking if mt is a manifest tool... no
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if /usr/bin/gcc supports -fno-rtti -fno-exceptions... no
checking for /usr/bin/gcc option to produce PIC... -fPIC -DPIC
checking if /usr/bin/gcc PIC flag -fPIC -DPIC works... yes
checking if /usr/bin/gcc static flag -static works... no
checking if /usr/bin/gcc supports -c -o file.o... yes
checking if /usr/bin/gcc supports -c -o file.o... (cached) yes
checking whether the /usr/bin/gcc linker (/usr/bin/ld -64) supports shared libraries... yes
checking dynamic linker characteristics... solaris2.11 ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... no
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... no
checking whether to build static libraries... yes

Optional Platform Environment:
checking sys/signal.h usability... yes
checking sys/signal.h presence... yes
checking for sys/signal.h... yes
checking for unistd.h... (cached) yes
checking for getpagesize... yes
checking for sysconf(_SC_PAGESIZE)... yes
checking for PAGESIZE in limits.h... no
checking for mmap with MAP_ANON... yes
checking for mmap with MAP_ANONYMOUS... yes
checking for mmap of /dev/zero... yes
checking whether a fault handler according to POSIX works... yes
checking whether a fault handler according to Linux/i386 works... no
checking whether a fault handler according to old Linux/i386 works... no
checking whether a fault handler according to Linux/m68k works... no
checking whether a fault handler according to Linux/PowerPC works... no
checking whether a fault handler according to Linux/HPPA works... no
checking whether a fault handler according to BSD works... no
checking whether a fault handler according to IRIX works... no
checking whether a fault handler according to HP-UX HPPA works... no
checking whether a fault handler according to OSF/1 Alpha works... no
checking whether a fault handler according to NetBSD Alpha works... no
checking whether a fault handler according to AIX works... no
checking whether a fault handler according to MacOSX/Darwin7 PowerPC works... no
checking whether a fault handler according to MacOSX/Darwin5 PowerPC works... no
checking whether a fault handler according to Hurd works... no
checking ucontext.h usability... yes
checking ucontext.h presence... yes
checking for ucontext.h... yes
checking for the fault handler specifics... fault-solaris-i386.h
checking if the system supports catching SIGSEGV... yes
checking for stack direction... grows down
checking for prmap_t in sys/procfs.h... yes
checking for mquery... no
checking for mincore... yes
checking for getrlimit... yes
checking for setrlimit... yes
checking for sigaltstack... yes
checking for stack_t... yes
checking for working sigaltstack... yes
checking for correct stack_t interpretation... yes
checking whether a signal handler can be left through longjmp... no
checking whether a signal handler can be left through longjmp and sigaltstack... no
checking whether a signal handler can be left through longjmp and setcontext... yes
checking whether a signal handler can be left through siglongjmp... yes
checking whether a signal handler can be left through siglongjmp and sigaltstack... yes
checking whether a signal handler can be left through siglongjmp and setcontext... yes
checking if the system supports catching stack overflow... yes
checking for uintptr_t... yes

Build Parameters:
checking whether to activate relocatable installation... no

Output Substitution:
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating src/sigsegv.h
config.status: creating tests/Makefile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands

Now please type 'make' to compile. Good luck.


$ gmake -j4
gmake TARGETSTACK=" all" all-recursive
gmake[1]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64'
Making all in src
gmake[2]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64/src'
/bin/sh ../libtool  --tag=CC   --mode=compile /usr/bin/gcc -DHAVE_CONFIG_H -I. -I..  -I. -I.   -m64 -march=core2 -std=gnu89 -c -o handler.lo handler.c
/bin/sh ../libtool  --tag=CC   --mode=compile /usr/bin/gcc -DHAVE_CONFIG_H -I. -I..  -I. -I.   -m64 -march=core2 -std=gnu89 -c -o stackvma.lo stackvma.c
/bin/sh ../libtool  --tag=CC   --mode=compile /usr/bin/gcc -DHAVE_CONFIG_H -I. -I..  -I. -I.   -m64 -march=core2 -std=gnu89 -c -o leave.lo leave.c
/bin/sh ../libtool  --tag=CC   --mode=compile /usr/bin/gcc -DHAVE_CONFIG_H -I. -I..  -I. -I.   -m64 -march=core2 -std=gnu89 -c -o dispatcher.lo dispatcher.c
libtool: compile:  /usr/bin/gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -m64 -march=core2 -std=gnu89 -c handler.c -o handler.o
libtool: compile:  /usr/bin/gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -m64 -march=core2 -std=gnu89 -c dispatcher.c -o dispatcher.o
libtool: compile:  /usr/bin/gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -m64 -march=core2 -std=gnu89 -c stackvma.c -o stackvma.o
libtool: compile:  /usr/bin/gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -m64 -march=core2 -std=gnu89 -c leave.c -o leave.o
/bin/sh ../libtool  --tag=CC   --mode=compile /usr/bin/gcc -DHAVE_CONFIG_H -I. -I..  -I. -I.   -m64 -march=core2 -std=gnu89 -c -o version.lo version.c
libtool: compile:  /usr/bin/gcc -DHAVE_CONFIG_H -I. -I.. -I. -I. -m64 -march=core2 -std=gnu89 -c version.c -o version.o
/bin/sh ../libtool  --tag=CC   --mode=link /usr/bin/gcc  -m64 -march=core2 -std=gnu89 -rpath /opt/gnu/lib -version-info 2:5:0 -lc -no-undefined -m64 -march=core2 -o libsigsegv.la -rpath /opt/gnu/lib handler.lo stackvma.lo leave.lo dispatcher.lo version.lo 
libtool: link: ar cru .libs/libsigsegv.a  handler.o stackvma.o leave.o dispatcher.o version.o
libtool: link: ranlib .libs/libsigsegv.a
libtool: link: ( cd ".libs" && rm -f "libsigsegv.la" && ln -s "../libsigsegv.la" "libsigsegv.la" )
gmake[2]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64/src'
Making all in tests
gmake[2]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64/tests'
/usr/bin/gcc -DHAVE_CONFIG_H -I. -I..  -I../src   -m64 -march=core2 -std=gnu89 -c -o sigsegv1.o sigsegv1.c
/usr/bin/gcc -DHAVE_CONFIG_H -I. -I..  -I../src   -m64 -march=core2 -std=gnu89 -c -o sigsegv2.o sigsegv2.c
/usr/bin/gcc -DHAVE_CONFIG_H -I. -I..  -I../src   -m64 -march=core2 -std=gnu89 -c -o sigsegv3.o sigsegv3.c
/usr/bin/gcc -DHAVE_CONFIG_H -I. -I..  -I../src   -m64 -march=core2 -std=gnu89 -c -o stackoverflow1.o stackoverflow1.c
/usr/bin/gcc -DHAVE_CONFIG_H -I. -I..  -I../src   -m64 -march=core2 -std=gnu89 -c -o stackoverflow2.o stackoverflow2.c
/bin/sh ../libtool  --tag=CC   --mode=link /usr/bin/gcc  -m64 -march=core2 -std=gnu89  -m64 -march=core2 -o sigsegv1 sigsegv1.o ../src/libsigsegv.la
/bin/sh ../libtool  --tag=CC   --mode=link /usr/bin/gcc  -m64 -march=core2 -std=gnu89  -m64 -march=core2 -o sigsegv3 sigsegv3.o ../src/libsigsegv.la
/bin/sh ../libtool  --tag=CC   --mode=link /usr/bin/gcc  -m64 -march=core2 -std=gnu89  -m64 -march=core2 -o sigsegv2 sigsegv2.o ../src/libsigsegv.la
/bin/sh ../libtool  --tag=CC   --mode=link /usr/bin/gcc  -m64 -march=core2 -std=gnu89  -m64 -march=core2 -o stackoverflow1 stackoverflow1.o ../src/libsigsegv.la
libtool: link: /usr/bin/gcc -m64 -march=core2 -std=gnu89 -m64 -march=core2 -o sigsegv1 sigsegv1.o  ../src/.libs/libsigsegv.a -lc
libtool: link: /usr/bin/gcc -m64 -march=core2 -std=gnu89 -m64 -march=core2 -o sigsegv2 sigsegv2.o  ../src/.libs/libsigsegv.a -lc
/bin/sh ../libtool  --tag=CC   --mode=link /usr/bin/gcc  -m64 -march=core2 -std=gnu89  -m64 -march=core2 -o stackoverflow2 stackoverflow2.o ../src/libsigsegv.la
libtool: link: /usr/bin/gcc -m64 -march=core2 -std=gnu89 -m64 -march=core2 -o sigsegv3 sigsegv3.o  ../src/.libs/libsigsegv.a -lc
libtool: link: /usr/bin/gcc -m64 -march=core2 -std=gnu89 -m64 -march=core2 -o stackoverflow1 stackoverflow1.o  ../src/.libs/libsigsegv.a -lc
libtool: link: /usr/bin/gcc -m64 -march=core2 -std=gnu89 -m64 -march=core2 -o stackoverflow2 stackoverflow2.o  ../src/.libs/libsigsegv.a -lc
gmake[2]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64/tests'
gmake[2]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64'

Now please type 'make check' to run a quick test suite. Hope it works.

gmake[2]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64'
gmake[1]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64'


$ gmake check
Making check in src
gmake[1]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64/src'
gmake[1]: Nothing to be done for `check'.
gmake[1]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64/src'
Making check in tests
gmake[1]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64/tests'
gmake  check-TESTS
gmake[2]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64/tests'
gmake[3]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64/tests'
PASS: sigsegv1
PASS: sigsegv2
PASS: sigsegv3
PASS: stackoverflow1
PASS: stackoverflow2
============================================================================
Testsuite summary for
============================================================================
# TOTAL: 5
# PASS:  5
# SKIP:  0
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 0
============================================================================
gmake[3]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64/tests'
gmake[2]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64/tests'
gmake[1]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64/tests'
gmake[1]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64'

Please send the following summary line via email to the main author
Bruno Haible for inclusion into the list of
successfully tested platforms (see PORTING file).

libsigsegv: x86_64-pc-solaris2.11 | yes | yes | 2.12

Then please type 'make install' to install the package.

gmake[1]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64'


$ sudo gmake DESTDIR=/stage/prototype/libsigsegv/2.12/64 install
Password:
Sorry, try again.
Password:
Making install in src
gmake[1]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64/src'
gmake[2]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64/src'
 /usr/gnu/bin/mkdir -p '/stage/prototype/libsigsegv/2.12/64/opt/gnu/lib'
 /bin/sh ../libtool   --mode=install /usr/gnu/bin/install -c   libsigsegv.la '/stage/prototype/libsigsegv/2.12/64/opt/gnu/lib'
libtool: install: /usr/gnu/bin/install -c .libs/libsigsegv.lai /stage/prototype/libsigsegv/2.12/64/opt/gnu/lib/libsigsegv.la
libtool: install: /usr/gnu/bin/install -c .libs/libsigsegv.a /stage/prototype/libsigsegv/2.12/64/opt/gnu/lib/libsigsegv.a
libtool: install: chmod 644 /stage/prototype/libsigsegv/2.12/64/opt/gnu/lib/libsigsegv.a
libtool: install: ranlib /stage/prototype/libsigsegv/2.12/64/opt/gnu/lib/libsigsegv.a

libtool: warning: remember to run 'libtool --finish /opt/gnu/lib'
/bin/sh /stage/build/libsigsegv/libsigsegv-2.12-64/build-aux/install-sh -d /stage/prototype/libsigsegv/2.12/64/opt/gnu/include
/usr/gnu/bin/install -c -m 644 sigsegv.h /stage/prototype/libsigsegv/2.12/64/opt/gnu/include/sigsegv.h
gmake[2]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64/src'
gmake[1]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64/src'
Making install in tests
gmake[1]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64/tests'
gmake[2]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64/tests'
gmake[2]: Nothing to be done for `install-exec-am'.
gmake[2]: Nothing to be done for `install-data-am'.
gmake[2]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64/tests'
gmake[1]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64/tests'
gmake[1]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64'
gmake[2]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64'
gmake[2]: Nothing to be done for `install-exec-am'.
gmake TARGETSTACK="install-recursive install-am install-data-am" install-data-hook
gmake[3]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64'

Now use the package; you can remove it later via 'make uninstall'.

gmake[3]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64'
gmake[2]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64'
gmake[1]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64'


Due to the above warning message and the fact I'll not build the corresponding IPS package right now that could handle the warning as its final delivery actions, I'll repeat the installation in the final resting area (${prefix}) because it's non-conflicting with any standard system areas.

$ sudo gmake install
Making install in src
gmake[1]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64/src'
gmake[2]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64/src'
 /usr/gnu/bin/mkdir -p '/opt/gnu/lib'
 /bin/sh ../libtool   --mode=install /usr/gnu/bin/install -c   libsigsegv.la '/opt/gnu/lib'
libtool: install: /usr/gnu/bin/install -c .libs/libsigsegv.lai /opt/gnu/lib/libsigsegv.la
libtool: install: /usr/gnu/bin/install -c .libs/libsigsegv.a /opt/gnu/lib/libsigsegv.a
libtool: install: chmod 644 /opt/gnu/lib/libsigsegv.a
libtool: install: ranlib /opt/gnu/lib/libsigsegv.a
/bin/sh /stage/build/libsigsegv/libsigsegv-2.12-64/build-aux/install-sh -d /opt/gnu/include
/usr/gnu/bin/install -c -m 644 sigsegv.h /opt/gnu/include/sigsegv.h
gmake[2]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64/src'
gmake[1]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64/src'
Making install in tests
gmake[1]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64/tests'
gmake[2]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64/tests'
gmake[2]: Nothing to be done for `install-exec-am'.
gmake[2]: Nothing to be done for `install-data-am'.
gmake[2]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64/tests'
gmake[1]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64/tests'
gmake[1]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64'
gmake[2]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64'
gmake[2]: Nothing to be done for `install-exec-am'.
gmake TARGETSTACK="install-recursive install-am install-data-am" install-data-hook
gmake[3]: Entering directory `/stage/build/libsigsegv/libsigsegv-2.12-64'

Now use the package; you can remove it later via 'make uninstall'.

gmake[3]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64'
gmake[2]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64'
gmake[1]: Leaving directory `/stage/build/libsigsegv/libsigsegv-2.12-64'


$ sudo zfs snapshot -r .../opt/gnu@libsigsegv-2.12

Checking the resulting artifacts:

$ l /stage/prototype/libsigsegv/2.12/64/opt/gnu/*
/stage/prototype/libsigsegv/2.12/64/opt/gnu/include:
total 6.5K

-rw-r--r-- 1 root root ... sigsegv.h

/stage/prototype/libsigsegv/2.12/64/opt/gnu/lib:
total 11K

-rw-r--r-- 1 root root ... libsigsegv.a
-rwxr-xr-x 1 root root ... libsigsegv.la


$ l /opt/gnu/*
/opt/gnu/include:
total 10K

-rw-r--r-- 1 root root ... sigsegv.h

/opt/gnu/lib:
total 20K

-rw-r--r-- 1 root root ... libsigsegv.a
-rwxr-xr-x 1 root root ... libsigsegv.la


The building process is virtually the same for 32-bits artifacts but I don't install them under /opt/gnu because I'm particularly using it exclusively for 64-bits artifacts.