How to build make 4.0 from make 3.82? - makefile

I'm trying to upgrade my SH4 cpu packages. 'make''s version was 3.82.
If I want to upgrade to 'make' 4.0, it require to build 'guile'.
When I build 'guile'. It shows
$ cd guile-2.0.11
$ ./configure --prefix=/usr --disable-static --disable-error-on-warning # OK
$ make
make: -n: Command not found
GNUmakefile:123: *** invalid syntax in conditional. Stop.
The GNUmakefile line 123 is
123 ifneq ($(word 2, $(MAKECMDGOALS)), )
124 ifneq ($(filter $(ALL_RECURSIVE_TARGETS), $(MAKECMDGOALS)), )
125 .NOTPARALLEL:
126 endif
127 endif
I'm wonder am I falling into 'egg is born from chicken, chicken is born from egg' problem.

You don't need Guile to build GNU Make 4.0. You can build it without it, just don't pass -with-guile to configure and you should be fine.
If you want to a build a version of GNU Make with Guile you can try first building GNU make without Guile as described above. Use that version of make when building Guile and then rebuild GNU Make with your newly compiled Guile library.

Related

conflicting types for '__readlink' during make glibc 2.14

I made a softwareupdate on a simulationsoftware which needs a newer version of glibc. Therefore I wanted to install the glibc version 2.14 on a new prefix.
According to How to upgrade glibc from version 2.12 to 2.14 on CentOS?
i tried to install it on a sles11sp3
mkdir /var/mpi/Libraries/glibc_install; cd /var/mpi/Libraries/glibc_install
wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
tar zxvf glibc-2.14.tar.gz
cd glibc-2.14
mkdir build
cd build
../configure --prefix=/var/mpi/Libraries/glibc-2.14
make -j4
During the make I get the following error:
readlink.c:26: error: conflicting types for ‘__readlink’
../include/unistd.h:120: error: previous declaration of ‘__readlink’ was here
make[2]: *** [/var/mpi/Libraries/glibc_install/glibc-2.14/build/io/readlink.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory `/var/mpi/Libraries/glibc_install/glibc-2.14/io'
make[1]: *** [io/subdir_lib] Error 2
make[1]: Leaving directory `/var/mpi/Libraries/glibc_install/glibc-2.14'
make: *** [all] Error 2
Do you have a clue how to solve this problem?
io/readlink.c is just a stub implementation which always fails at run time. It is not supposed to be compiled at all when building for GNU/Linux. Instead, the implementation should come from the generic system call wrapper in sysdeps/unix/syscalls.list:
readlink - readlink i:spi __readlink readlink
However, recent Linux architectures (those called generic in Linux parlance, currently aarch64, csky, nios2, and riscv) no longer have a readlink system call, and the function as to be implemented using readlinkat. This implementation is in the file sysdeps/unix/sysv/linux/generic/readlink.c.
It's not clear what you are doing so that the wrong file is compiled. Are you sure you have installed compatible kernel headers?
The particular upstream commit (which went into glibc 2.15):
commit 95b7042bac3e2cfc6fef7aec6acc7d46dd50eba5
Author: Roland McGrath <roland#hack.frob.com>
Date: Fri Nov 11 10:02:42 2011 -0800
Fix __readlink declaration.
But given the fundamental nature of the build problem you encountered, I doubt that applying this patch, while addressing the immediate build failure, will give you a functional glibc build in the end.
GLIBC : 2.14 → 2011-06-01. The "bugfix version" 2.14.1 → 2011-10-07 https://ftp.gnu.org/gnu/glibc/
Note : make -j4 is not recommended for glibc, as far as I remember.
My tests (old SLE11 SP2) : The SLE 11 SP2 gcc 4.3.2 is too old for glibc-2.14.1, may be the SP3 minor gcc update (to 4.3.4) is also too old?
Using the "extra EL 6 gcc-4.9.3" .... for glibc-2.14.1 :
cd build-glibc214/ # the recommended build directory outside the glibc source
export CC=gcc49 CXX=g++49 && ../glibc-2.14.1/configure --prefix=/opt/glibc214
make # no errors
# make install # OK
Extra gcc´s : how to install gcc 4.9.2 on RHEL 7.4

Compiling autoconf results in an incorrect version reporting

I want to update from autoconf 2.62 to 2.69.
I downloaded the source and ran the following:
./configure
make
make install
These all complete successfully.
When I run autoconf --version I get the following:
autoconf --version
autoconf (GNU Autoconf) ?K??
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+/Autoconf: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>, <http://gnu.org/licenses/exceptions.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by David J. MacKenzie and Akim Demaille.
The problem you see here is that the version reports as ?K??.
Why could this be? My machine runs in the EBCDIC codepage and I am wondering if this could be associated. Is there a configure / make option I need to add.
This issues stops me compiling other software, as the configure scripts check the version autoconf reports and it ends up failing those checks.
-----UPDATE-------
I have run make check as requested and this is the output:
autoconf269: >make check
make check-recursive
Making check in bin
Making check in .
Making check in lib
Making check in Autom4te
Making check in m4sugar
make check-local
Making check in autoconf
make check-local
Making check in autotest
make check-local
Making check in autoscan
Making check in emacs
Making check in doc
make: Makefile: line 436: Warning -- FSUM9433 Duplicate entry [fdl.texi] in prerequisite list
Making check in tests
make check-local
cd ../lib/autotest && make autotest.m4f
`autotest.m4f' is up to date
autom4te_perllibdir='..'/lib AUTOM4TE_CFG='../lib/autom4te.cfg' ../bin/autom4te -B '..'/lib -B '..'/lib --language=autotest -I . -I . suite.at -o ./testsuite.tmp
m4:local.at:18: bad expression in eval (bad input): ((?+1+0) > (2+0)) - ((?+1+0) < (2+0))
autom4te: /workarea/tools/m4/bin/m4 failed with exit status: 1
FSUM8226 make: Error code 1
FSUM8226 make: Error code 255
FSUM8226 make: Error code 1
FSUM8226 make: Error code 255
My eyes are drawn to : m4:local.at:18: bad expression in eval (bad input): ((?+1+0) > (2+0)) - ((?+1+0) < (2+0)) -- any ideas why this may be considered a bad expression?
One possiblity: the autoconf you compiled installed into /usr/local while the preinstalled one is in /usr. /usr is first in PATH so the preinstalled one is used.
You can also check the version before running make install to ensure, that the new verson fixes your problem.

GNU make - 3.81 build fails vs 4.2.1 (4.0+?) succeeds 'cannot find library'

BACKGROUND
This is related to my question GNU make - transform every prerequisite into target (implicitly)
INFO
I am running my build like so
make all MAKEFILES=Dummy.mk
with make v3.81 and make v4.2.1
Dummy.mk:
%:: null
#:
null:
#:
Windows 8, 64-bit
Shell used by make is
C:\Users\User1\Desktop\A\Project\bld\armle-v7\release\subProj>sh --help
GNU bash, version 3.1.17(1)-release-(i686-pc-msys)
...
When I build with make v3.81, the build fails on this compile command:
qcc -Vgcc_ntoarmv7le -lang-c++ -Wl,-rpath-link,\
C:\Users\User1\Desktop\A\QNX_SDK\target\qnx6/armle-v7/lib -Wl,-rpath-link,\
C:\Users\User1\Desktop\A\QNX_SDK\target\qnx6/armle-v7/usr/lib -Wl,-O1 -Wl,-rpath,\
C:/fs/mp/qt5/lib -Wl,-rpath,C:/fs/mp/fordhmi/lib -shared -Wl,-soname,libHmiLogging.so.1 -o\
libHmiLogging.so.1.0.0 .obj/hmiloggingcategory.o .obj/hmiloggingcategoryregistry.o\
.obj/hmiperformancelogging.o .obj/hmitracelogging.o\
-LC:\Users\User1\Desktop\A\QNX_SDK\target\qnx6/armle-v7/lib\
-LC:\Users\User1\Desktop\A\QNX_SDK\target\qnx6/armle-v7/usr/lib\
-LC:/Users/User1/Desktop/A/Proj/qt5binaries/lib -lQt5Core \
-LC:/QNX650/target/qnx6/armle-v7/lib \
-LC:/QNX650/target/qnx6/armle-v7/usr/lib -lm
C:\Users\User1\Desktop\A\QNX_SDK\host\win32\x86\usr\bin\ntoarm-ld: cannot find -lQt5Core
cc: C:/Users/User1/Desktop/A/QNX_SDK/host/win32/x86/usr/bin/ntoarm-ld caught signal 1
make[3]: *** [C:/Users/User1/Desktop/A/Proj/lib/armle-v7/release/lib/libHmiLogging.so.1.0.0] Error 1
You're probably thinking "well you haven't told it where to find that library" but I only see this error when I run with make 3.81 AND do MAKEFILES=Dummy.mk.
If I use make 3.81 without Dummy.mk, there's no error.
If I use make 4.2.1 with or without Dummy.mk, there's no error.
Our project is kinda transitioning from make v3.81 to make v4.2.1 but stuff still has to work with make v3.81.
QUESTION
What's the cause of this error?
NOTE
qcc is the QNX version of gcc. It supports pretty much all gcc functionality.

Enabling OpenMPI support when compiling John the Ripper 1.8.0

I just made a VPN network between my VPS's and wanted them to run some John the Ripper tasks. I followed this manual, but since 1.8.0 version John the Ripper's Makefile does not have the following lines, which it refers to:
CC = mpicc -DHAVE_MPI -DJOHN_MPI_BARRIER -DJOHN_MPI_ABORT`
MPIOBJ = john-mpi.o
There's a legacy Makefile, which has the
CC = mpicc -DHAVE_MPI
part, but, when I tried to compile with this, I see a lot of errors. I assume this legacy Makefile is not longer supported.
How can I enable OpenMPI support when compiling John the Ripper?
In case it matters, I am running Ubuntu.
Don't use that Makefile.
Do this:
./configure --enable-mpi
See if the report gave yes for OpenMPI
Then:
make -s

Installing gcc 4.1.0 on ubuntu

I have latest version of ubuntu, but the version of gcc is higher than what I want. How do I build gcc 4.1.0 or install gcc 4.1.0 on this.
I did not find steps to build gcc 4.1.0
Here are the steps to building gcc:
http://gcc.gnu.org/install/
Note that, while "It refers to the current development sources, instructions for specific released versions are included with the sources."
It is a typical* configure, make, make install process. The most important configure flag is probably --enable-languages. and --prefix of course. Also --program-suffix=-4.1 will cause the generated executable to be called gcc-4.1 instead of gcc. The prerequisites list may look scary but most of it is optional, especially if only building for C/C++.
[*] ok, not so typical: another caveat pointed out by JonathanWakely in the comments below is that you shouldn't build gcc in the source dir since that is not supported, so :
(after getting all the prerequisites)
[gcc-src-dir] $ cd ../my-build-dir
[my-build-dir] $ ../gcc-src-dir/configure $CONFIG_FLAGS
[my-build-dir] $ make
[my-build-dir] $ make install
And he pointed to a wiki page he wrote which will walk you through the whole process.
I had a few issues installing gcc 4.1.2 on ubuntu (12.04 in my case). This script sorted it for me:
#!/bin/tcsh
if ($#argv != 1) then
echo "Synopsis: $argv[0] <install_dir>"
exit(-1)
endif
setenv GCCINSTALL $argv[1]
setenv LIBRARY_PATH /usr/lib/x86_64-linux-gnu
setenv SRC ~/gccSrc
mkdir -p $SRC
cd $SRC
wget http://gcc.cybermirror.org/releases/gcc-4.1.2/gcc-4.1.2.tar.gz
tar xvf gcc-4.1.2.tar.gz
cd gcc-4.1.2
mkdir build
cd build
../configure --prefix=${GCCINSTALL} --disable-multilib
grep 4.1.2/missing Makefile
sed -i "s#${SRC}/gcc-4.1.2/missing##" Makefile
grep 4.1.2/missing Makefile
make bootstrap
make install

Resources