From 29cac2081438cc1fcf7b056170d373fb75604d04 Mon Sep 17 00:00:00 2001 From: Raymond Toy <toy.raymond@gmail.com> Date: Thu, 27 Aug 2020 00:36:27 +0000 Subject: [PATCH] Fix #85: Let each x86 configs set optimization level Add `COPT` variable in `Config.x86_common` to set the optimization level (defaulting to `-O2`). Then each `Config.x86` file can set `COPT` as desired if the default doesn't work. Thus, `Config.x86_linux` sets `COPT` to `-O1`, but others can use the default value. See issue #68. --- src/lisp/Config.x86_common | 9 +++++---- src/lisp/Config.x86_darwin | 1 + src/lisp/Config.x86_linux | 4 ++++ src/lisp/Config.x86_linux_clang | 1 + src/lisp/Config.x86_netbsd | 1 + src/lisp/Config.x86_solaris_sunc | 1 + 6 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/lisp/Config.x86_common b/src/lisp/Config.x86_common index d5537657b..946808012 100644 --- a/src/lisp/Config.x86_common +++ b/src/lisp/Config.x86_common @@ -45,10 +45,11 @@ endif CPPFLAGS := $(CPP_DEFINE_OPTIONS) $(CPP_INCLUDE_OPTIONS) CFLAGS += -Wstrict-prototypes -Wall -g -fno-omit-frame-pointer -# gcc 8.1.1 and 8.3.1 (and probably anything after 8.1.1?) won't -# produce a working lisp with -O2. Just use -O1. -CFLAGS += -O1 -ASFLAGS = -g +# Default optimization level. This can be changed in the individual +# configs. +COPT = -O2 + +ASFLAGS = -g ASSEM_SRC = x86-assem.S ARCH_SRC = x86-arch.c diff --git a/src/lisp/Config.x86_darwin b/src/lisp/Config.x86_darwin index 0c1640413..448e634e1 100644 --- a/src/lisp/Config.x86_darwin +++ b/src/lisp/Config.x86_darwin @@ -6,6 +6,7 @@ include Config.x86_common # you have the SDK available. MIN_VER = -mmacosx-version-min=10.6 +CFLAGS += $(COPT) CPPFLAGS += -DDARWIN $(MIN_VER) -m32 CFLAGS += -g3 -mtune=generic ASFLAGS += -g3 $(MIN_VER) diff --git a/src/lisp/Config.x86_linux b/src/lisp/Config.x86_linux index 457a24a34..b99168394 100644 --- a/src/lisp/Config.x86_linux +++ b/src/lisp/Config.x86_linux @@ -1,6 +1,10 @@ # -*- Mode: makefile -*- include Config.x86_common +# gcc 8.1.1 and 8.3.1 (and probably anything after 8.1.1?) won't +# produce a working lisp with -O2. Just use -O1. +COPT = -O1 +CFLAGS += $(COPT) CPPFLAGS += -m32 -D__NO_CTYPE -D_GNU_SOURCE CFLAGS += -rdynamic -march=pentium4 -mfpmath=sse -mtune=generic diff --git a/src/lisp/Config.x86_linux_clang b/src/lisp/Config.x86_linux_clang index cbfb4306a..df4708222 100644 --- a/src/lisp/Config.x86_linux_clang +++ b/src/lisp/Config.x86_linux_clang @@ -3,6 +3,7 @@ include Config.x86_common CC = clang CPPFLAGS += -m32 -D__NO_CTYPE -D_GNU_SOURCE +CFLAGS += $(COPT) CFLAGS += -march=pentium4 -mfpmath=sse -mtune=generic UNDEFSYMPATTERN = -Xlinker -u -Xlinker & diff --git a/src/lisp/Config.x86_netbsd b/src/lisp/Config.x86_netbsd index beb93c23d..529b057a0 100644 --- a/src/lisp/Config.x86_netbsd +++ b/src/lisp/Config.x86_netbsd @@ -1,6 +1,7 @@ # -*- Mode: makefile -*- include Config.x86_common +CFLAGS += $(COPT) CPPFLAGS += -march=pentium4 -mfpmath=sse UNDEFSYMPATTERN = -Xlinker -u -Xlinker & diff --git a/src/lisp/Config.x86_solaris_sunc b/src/lisp/Config.x86_solaris_sunc index 0c137ae4f..b2c623955 100644 --- a/src/lisp/Config.x86_solaris_sunc +++ b/src/lisp/Config.x86_solaris_sunc @@ -2,6 +2,7 @@ include Config.sparc_common CC = cc -xlibmieee -g +CFLAGS += $(COPT) CFLAGS += -Di386 CPP = cc -E DEPEND_FLAGS = -xM1 -- GitLab