Makefiles: cleanup / simplification various compiler and flags
...to use a common definition on both i686 and x86_64.
--- a/makelib/config-i686-pc-linux-gnu.make Tue Jun 19 21:26:26 2018 +0100
+++ b/makelib/config-i686-pc-linux-gnu.make Thu Jun 21 08:07:41 2018 +0000
@@ -12,30 +12,7 @@
include $(MAKELIB)/config-linux-gnu.make
include $(MAKELIB)/config-i686.make
-AS_CC=as
-AS_CC_CFLAG=
-ASFLAGS=--32
-
-
-# LD=ld -m elf_i386
-# STC_LD=ld -m elf_i386
-STC_LDFLAGS=$(CCCONFOPT) -L/usr/lib -Llib -L/usr/local/lib -L/usr/X11/lib
-CLASSLIB_LD=ld -m elf_i386
-LDFLAGS=$(CCCONFOPT) -Llib -L/usr/local/lib -L/usr/X11/lib -L/usr/lib \
- -Wl,-rpath,'$$ORIGIN',-rpath,'$$ORIGIN/lib',-rpath,'$$ORIGIN/../lib'
-LD_REL_FLAG=-r
-
-#OPTIONAL_DL_LIB=-ldl
-#OPTIONAL_LIBDL_TARGET=libdld
-
-
-MAKE_ZLIB_ARG= -f Makefile.amd64_mode32
-MAKE_BZ2LIB_ARG= -f Makefile.amd64_mode32
-
-
-FFI_CFLAGS=$(CCCONFOPT)
#------------------ end of linux-elf/amd64_mode32 ---------------------
-O_RULE=__STANDARD_O_RULE__
EXTRA_LIBS=-ldl -lX11 -lXext
# Following is a workaround for Debian / Ubuntu boxes.
--- a/makelib/config-i686.make Tue Jun 19 21:26:26 2018 +0100
+++ b/makelib/config-i686.make Thu Jun 21 08:07:41 2018 +0000
@@ -4,3 +4,9 @@
CPU_INTERN_H=cpu_i386.h
DEFS += -D__amd64_mode32__
CCCONFOPT = -m32
+
+# When performing partial linking, we have to specify `-m elf_i386` in case
+# we're compiling 32bit version on otherwise 64bit system - by far the most
+# common case these days. If the system is truly 32bit, `-m elf_i386` won't
+# hatm.
+CLASSLIB_LD=ld -m elf_i386
--- a/makelib/config-linux-gnu.make Tue Jun 19 21:26:26 2018 +0100
+++ b/makelib/config-linux-gnu.make Thu Jun 21 08:07:41 2018 +0000
@@ -10,22 +10,7 @@
CPUINTERN_H=$(INCLUDE)/linuxIntern.h
OS=-DLINUX
-#OPTIONAL_DL_LIB=-ldl
-#OPTIONAL_LIBDL_TARGET=libdld
-
-
-
MAKEFILE_EXTENSION=linux-elf
-
-# ALL_TARGET=LINUX_i386_ELF
-
-MAKEFLAGS += --no-print-directory
-MAKE_INCLUDE=include
-INSTALL=install
-INSTALL_BIN_CMD=install -s -m 0755
-INSTALL_SCRIPT_CMD=install -m 0755
-COMPRESSOR=gzip
-COMPRESSED_FILETYPE=targz
SETUP_RULE=setup_linux
# We need to use at most GCC 6.x, some code may fail to compile
@@ -40,59 +25,3 @@
CC = gcc-4
endif
endif
-
-
-#
-# use static librt for clock_gettime().
-# dynamic librt causes libpthread to be loaded that does not
-# work with stx' stack layout
-#
-
-OTHERLIBS=-ldl -Wl,-Bstatic,-lrt,-Bdynamic
-OTHERLIBS=-ldl -lrt
-OTHERLIBS=-ldl -lrt -lc
-STATIC_OTHERLIBS=
-LDFLAGS=-Llib -L/usr/local/lib -L/usr/X11/lib \
- -Wl,-z,now,-rpath,'$$ORIGIN',-rpath,'$$ORIGIN/lib',-rpath,'$$ORIGIN/../lib',--wrap=memcpy
-
-SPECIAL_LIBRUN_RULE=allLINUX
-
-
-FORCE_LINK_LIBRUN=1
-
-# mhm - these should now only be in libview!
-
-
-ARCH_LIBSNMP=$(TOP)/libsnmp
-ARCH_CLASSLIBDIRS=$(ARCH_LIBSNMP)
-
-
-#
-# a netsnmp library
-#
-# if already in /usr/lib:
-# DYNAMIC_LINK_LIB_NETSNMP=-lnetsnmp
-# STATIC_LINK_LIB_NETSNMP=
-# TARGET_LIB_NETSNMP=
-#
-# if a local one should be built and used:
-DYNAMIC_LINK_LIB_NETSNMP=-L$(NETSNMP_LIBDIR)/.libs -L$(NETSNMP_LIBDIR) $(NETSNMP_LIBDIR)/.libs/libnetsnmp.a -lrt
-STATIC_LINK_LIB_NETSNMP=
-TARGET_LIB_NETSNMP=snmplib
-
-
-STATIC_LIB_X =$(X_LIB_DIR)/libX11.a
-STATIC_LIB_XEXT=$(X_LIB_DIR)/libXext.a
-STATIC_LIB_XT =$(X_LIB_DIR)/libXt.a
-STATIC_LIB_XAW =$(X_LIB_DIR)/libXaw.a
-STATIC_LIB_XMU =$(X_LIB_DIR)/libXmu.a
-
-# the following defs are for using the system's usb lib (only needed in some apps);
-USB_LIB_DIR=
-USB_LIB_ARG=-lusb
-USB_LIB_DIR_ARG=-L/usr/lib
-USB_MAKE_TARGET=
-
-MATRIXLOCK_DIR=$(TOP)/../exept/setup/ml
-MATRIXLOCK_LIB_ARG=-L$(MATRIXLOCK_DIR)/lib -lmxlin260 -lusb
-#------------------ end of linux-elf/COMMON/defines ---------------------
--- a/makelib/config-x86_64-pc-linux-gnu.make Tue Jun 19 21:26:26 2018 +0100
+++ b/makelib/config-x86_64-pc-linux-gnu.make Thu Jun 21 08:07:41 2018 +0000
@@ -1,48 +1,5 @@
-#
# Definitions for target x86_66-pc-linux-gnu.
-#
-# based on eXept's:
-#
-# linux-elf/x86_64: cpu: x86_64 in 64 bit mode os:linux-ELF options: +commonSymbol
-#
-#------------------ start of linux/x86_64 ---------------------
-#
-# $Header: /cvs/stx/stx/configurations/linux-elf/x86_64/defines,v 1.18 2016-08-29 08:52:44 stefan Exp $
include $(MAKELIB)/config-linux-gnu.make
include $(MAKELIB)/config-x86_64.make
-LDFLAGS=-Llib -L/usr/local/lib -L/usr/X11/lib \
- -Wl,-z,now,-Bsymbolic,-rpath,'$$ORIGIN',-rpath,'$$ORIGIN/lib',-rpath,'$$ORIGIN/../lib'
-EXTRA_SHARED_LIBS=-ldl
-
-# LIBJPEG=$(LIBJPEG_DIR)/libjpeg.a
-# LIBJPEG_FOR_COPY=$(LIBJPEG_DIR)/libjpeg.a
-# LIBJPEG_FOR_LINK=$(LIBJPEG_DIR)/libjpeg.a
-
-
-# a netsnmp library
-#
-# if already in /usr/lib:
-# DYNAMIC_LINK_LIB_NETSNMP=-lnetsnmp
-# STATIC_LINK_LIB_NETSNMP=
-# TARGET_LIB_NETSNMP=
-#
-# if a local one should be built and used (for 64bit, no -lrt is needed):
-DYNAMIC_LINK_LIB_NETSNMP=-L$(NETSNMP_LIBDIR)/.libs -L$(NETSNMP_LIBDIR) $(NETSNMP_LIBDIR)/.libs/libnetsnmp.a
-
-
-MATRIXLOCK_DIR=$(TOP)/../exept/setup/ml
-MATRIXLOCK_LIB_ARG=-L$(MATRIXLOCK_DIR)/lib -lmxlin64260
-MATRIXLOCK_SHARED_LIB_ARG=-lusb
-
-#.SUFFIXES: .o .so
-
-#.o.so:
-# @-rm -f $*.so
-# $(LD) -shared $(LDFLAGS) -o $*.so $*.o $(LOCAL_SHARED_LIBS)
-
-#------------------ end of linux-elf/x86_64 ---------------------
-O_RULE=__STANDARD_O_RULE__
-EXTRA_LIBS=-ldl -lX11 -lXext
-MAKE_ZLIB_ARG= "CFLAGS=-fPIC -O3 -DUSE_MMAP"
--- a/makelib/config.make Tue Jun 19 21:26:26 2018 +0100
+++ b/makelib/config.make Thu Jun 21 08:07:41 2018 +0000
@@ -87,7 +87,7 @@
# c-compiler to use
CC ?= cc
-AS_CC ?= $(CC)
+AS_CC ?= $(CC) $(CCCONFOPT)
AS_CC_CFLAG=-c
CPP = cpp
@@ -95,8 +95,13 @@
AS = as
# linker for final executable
-LD = $(CC)
-# linker for classlibs
+LD = $(CC) $(CCCONFOPT)
+LDFLAGS = $(CCCONFOPT) \
+ -Llib -L/usr/local/lib -L/usr/X11/lib -L/usr/lib \
+ -Wl,-z,now,-Bsymbolic,-rpath,'$$ORIGIN',-rpath,'$$ORIGIN/lib',-rpath,'$$ORIGIN/../lib'
+
+# linker for classlib object files, i.e., for example libstx_libbasic.o. This single partially-linked
+# object file is later linked into a shared library.
CLASSLIB_LD=ld
# lex (can be replaced by flex)
@@ -233,7 +238,7 @@
# default is to use the same compiler as for classes
STC_CC=$(CC)
-STC_LD=$(STC_CC)
+STC_LD=$(LD)
STC_CFLAGS=$(CFLAGS)
STC_LEXLIB=-ll
@@ -453,7 +458,7 @@
#
# OTHERLIBS are libraries to be linked in at the end
#
-OTHERLIBS =
+OTHERLIBS = -ldl -lrt -lc
MAIN = $(LIBRUNDIR)/main.c
#HIDATA = $(LIBRUNDIR)/hidata.o
@@ -522,12 +527,14 @@
ZLIB_DIR=$(TOP)/support/zlib-1.2.3
ZLIB_LD_ARG=-L$(ZLIB_DIR) -lz
ZLIB_MAKE_TARGET=zlib
+MAKE_ZLIB_ARG= "CFLAGS=$(CCCONFOPT) -fPIC -O3 -DUSE_MMAP"
# the following defs are for using the provided (not the system) bz2lib;
# should work everywhere
BZ2LIB_DIR=$(TOP)/support/bz2lib
BZ2LIB_LD_ARG=-L$(BZ2LIB_DIR) -lbz2
BZ2LIB_MAKE_TARGET=bz2lib
+MAKE_BZ2LIB_ARG= "CC=$(CC) $(CCCONFOPT)"
# the following defs are for NOT using any usb lib (only needed in some apps);
# redefined in linux configurations, to use the system lib (-lusb)