diff --git a/arch/x86_64/src/common/Toolchain.defs b/arch/x86_64/src/common/Toolchain.defs new file mode 100644 index 00000000000..d4c1717575d --- /dev/null +++ b/arch/x86_64/src/common/Toolchain.defs @@ -0,0 +1,63 @@ +############################################################################ +# arch/x86_64/src/common/Toolchain.defs +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +############################################################################ + +ifeq ($(CONFIG_DEBUG_SYMBOLS),y) + ARCHOPTIMIZATION = -g +endif + +ifneq ($(CONFIG_DEBUG_NOOPT),y) + ARCHOPTIMIZATION += -O2 -fno-optimize-sibling-calls + ARCHOPTIMIZATION += -fno-omit-frame-pointer -fno-crossjumping + ARCHOPTIMIZATION += -fno-delete-null-pointer-checks +endif + +ARCHCPUFLAGS = -fPIC -fno-stack-protector -mno-red-zone -mrdrnd +ARCHPICFLAGS = -fPIC +ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef + +# We have to use a cross-development toolchain under Cygwin because the native +# Cygwin toolchains don't generate ELF binaries. + +ifeq ($(CONFIG_WINDOWS_CYGWIN),y) +CROSSDEV = i486-nuttx-elf- +endif + +ifeq ($(CONFIG_HOST_MACOS),y) +CROSSDEV = x86_64-elf- +endif + +CC = $(CROSSDEV)gcc +CPP = $(CROSSDEV)gcc -E -x c +LD = $(CROSSDEV)ld +STRIP = $(CROSSDEV)strip --strip-unneeded +AR = $(CROSSDEV)ar rcs +NM = $(CROSSDEV)nm +OBJCOPY = $(CROSSDEV)objcopy +OBJDUMP = $(CROSSDEV)objdump + +CFLAGS := $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe +CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) +AFLAGS := $(CFLAGS) -D__ASSEMBLY__ + +ifeq ($(CONFIG_HOST_MACOS),y) +AFLAGS += -Wa,--divide +endif + +EXEEXT = .elf diff --git a/arch/x86_64/src/intel64/Toolchain.defs b/arch/x86_64/src/intel64/Toolchain.defs new file mode 100644 index 00000000000..6d0392aaa3e --- /dev/null +++ b/arch/x86_64/src/intel64/Toolchain.defs @@ -0,0 +1,21 @@ +############################################################################ +# arch/x86_64/src/intel64/Toolchain.defs +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +############################################################################ + +include $(TOPDIR)/arch/x86_64/src/common/Toolchain.defs diff --git a/boards/x86_64/intel64/qemu-intel64/scripts/Make.defs b/boards/x86_64/intel64/qemu-intel64/scripts/Make.defs index f9a264dfbb7..e55817d63fb 100644 --- a/boards/x86_64/intel64/qemu-intel64/scripts/Make.defs +++ b/boards/x86_64/intel64/qemu-intel64/scripts/Make.defs @@ -20,48 +20,6 @@ include $(TOPDIR)/.config include $(TOPDIR)/tools/Config.mk - -ifeq ($(CONFIG_DEBUG_SYMBOLS),y) - ARCHOPTIMIZATION = -g -endif - -ifneq ($(CONFIG_DEBUG_NOOPT),y) - ARCHOPTIMIZATION += -O2 -fno-optimize-sibling-calls -fno-omit-frame-pointer -fno-crossjumping -fno-delete-null-pointer-checks - -endif +include $(TOPDIR)/arch/x86_64/src/intel64/Toolchain.defs ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)qemu.ld - -ARCHCPUFLAGS = -fPIC -fno-stack-protector -mno-red-zone -mrdrnd -ARCHPICFLAGS = -fPIC -ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef - -# We have to use a cross-development toolchain under Cygwin because the native -# Cygwin toolchains don't generate ELF binaries. - -ifeq ($(CONFIG_WINDOWS_CYGWIN),y) -CROSSDEV = i486-nuttx-elf- -endif - -ifeq ($(CONFIG_HOST_MACOS),y) -CROSSDEV = x86_64-elf- -endif - -CC = $(CROSSDEV)gcc -CPP = $(CROSSDEV)gcc -E -LD = $(CROSSDEV)ld -STRIP = $(CROSSDEV)strip --strip-unneeded -AR = $(CROSSDEV)ar rcs -NM = $(CROSSDEV)nm -OBJCOPY = $(CROSSDEV)objcopy -OBJDUMP = $(CROSSDEV)objdump - -CFLAGS := $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe -CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -AFLAGS := $(CFLAGS) -D__ASSEMBLY__ - -ifeq ($(CONFIG_HOST_MACOS),y) -AFLAGS += -Wa,--divide -endif - -EXEEXT = .elf