Makefiles: cleanup / simplification various compiler and flags
authorJan Vrany <jan.vrany@fit.cvut.cz>
Thu, 21 Jun 2018 08:07:41 +0000
changeset 244 8de3e1d78d6a
parent 241 481556cfa16d
child 245 b02b6cf48a23
child 246 687c4889e2e6
Makefiles: cleanup / simplification various compiler and flags ...to use a common definition on both i686 and x86_64.
makelib/config-i686-pc-linux-gnu.make
makelib/config-i686.make
makelib/config-linux-gnu.make
makelib/config-x86_64-pc-linux-gnu.make
makelib/config.make
--- 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)