2008-01-10 18:23:08 +00:00
|
|
|
############################################################################
|
2020-01-20 01:03:11 +08:00
|
|
|
# tools/Makefile.host
|
2007-02-17 23:21:28 +00:00
|
|
|
#
|
2024-09-10 14:15:58 +02:00
|
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
#
|
2020-04-24 13:15:08 -06:00
|
|
|
# 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
|
2007-02-17 23:21:28 +00:00
|
|
|
#
|
2020-04-24 13:15:08 -06:00
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
2007-02-17 23:21:28 +00:00
|
|
|
#
|
2020-04-24 13:15:08 -06:00
|
|
|
# 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.
|
2007-02-17 23:21:28 +00:00
|
|
|
#
|
2008-01-10 18:23:08 +00:00
|
|
|
############################################################################
|
2007-02-17 23:21:28 +00:00
|
|
|
|
2020-09-14 13:53:37 -03:00
|
|
|
export TOPDIR ?= $(CURDIR)/..
|
2012-11-13 00:38:59 +00:00
|
|
|
-include $(TOPDIR)/Make.defs
|
|
|
|
|
include ${TOPDIR}/tools/Config.mk
|
|
|
|
|
|
2018-03-21 08:40:02 -06:00
|
|
|
# Check the endian-ness of the target
|
|
|
|
|
|
|
|
|
|
ifeq ($(CONFIG_ENDIAN_BIG),y)
|
|
|
|
|
CFLAGS += -DTGT_BIGENDIAN=1
|
|
|
|
|
endif
|
|
|
|
|
|
2013-01-05 14:57:43 +00:00
|
|
|
# Targets
|
|
|
|
|
|
2012-12-02 17:34:08 +00:00
|
|
|
all: b16$(HOSTEXEEXT) bdf-converter$(HOSTEXEEXT) cmpconfig$(HOSTEXEEXT) \
|
2015-10-08 12:48:40 -06:00
|
|
|
configure$(HOSTEXEEXT) mkconfig$(HOSTEXEEXT) mkdeps$(HOSTEXEEXT) \
|
|
|
|
|
mksymtab$(HOSTEXEEXT) mksyscall$(HOSTEXEEXT) mkversion$(HOSTEXEEXT) \
|
2026-03-20 13:54:21 +00:00
|
|
|
mkpasswd$(HOSTEXEEXT) cnvwindeps$(HOSTEXEEXT) nxstyle$(HOSTEXEEXT) \
|
|
|
|
|
initialconfig$(HOSTEXEEXT) gencromfs$(HOSTEXEEXT) \
|
|
|
|
|
convert-comments$(HOSTEXEEXT) lowhex$(HOSTEXEEXT) \
|
2021-10-11 21:38:51 +08:00
|
|
|
detab$(HOSTEXEEXT) rmcr$(HOSTEXEEXT) incdir$(HOSTEXEEXT) \
|
tools/nxflat: Import the NXFLAT thunk generator.
An NXFLAT module reaches the base firmware through a "thunk" file: one
assembly stub per imported function, generated by mknxflat. That tool
has always lived outside this repository, in the NuttX buildroot NXFLAT
toolchain, so building an NXFLAT module needs a separate checkout and a
separate build of a tool that links against libbfd.
libbfd is why it stayed out. It is GPL, which an Apache project cannot
depend on, and it is awkward to obtain besides -- a stock binutils
install often ships libbfd without the libiberty it needs to link. But
the dependency was never deep. mknxflat used libbfd for eight calls,
all of them opening the file and walking the symbol table; it never
relocates or rewrites anything. That is replaced here by reading the
ELF symbol table directly, which removes the dependency outright and
costs about a hundred lines.
The emitted text is unchanged. The format strings live in the .def
files, which are carried here byte-for-byte from upstream, and the
selection rule for what becomes a thunk is the upstream one: everything
undefined that is not explicitly an object. Symbol typing cannot be
trusted for this -- imported functions are routinely emitted as
STT_NOTYPE rather than STT_FUNC, while a weakly defined object does
appear as an undefined object -- so the test is on what a symbol is not.
Upstream chose the instruction set at compile time through an "arch"
symlink pointing at either arm/ or thumb2/. A symlink cannot be carried
in the repository, and one host binary has to serve boards of both
flavours, since lpc31xx is ARM while lpc17xx, tiva, stm32f1 and rp23xx
are Thumb-2. That choice becomes a runtime "-a" option. The "-f"
option, which read further command line arguments from a file, is
dropped; nothing in the tree used it.
This commit changes no output. Against the upstream tool, for both
architectures, with and without -w, over modules exercising the plain,
weak and non-returning thunk paths, the generated thunk files are
byte-identical.
Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com>
2026-08-02 21:26:48 +02:00
|
|
|
mknxflat$(HOSTEXEEXT) jlink-nuttx$(HOSTDYNEXT)
|
2016-01-14 16:28:43 -06:00
|
|
|
default: mkconfig$(HOSTEXEEXT) mksyscall$(HOSTEXEEXT) mkdeps$(HOSTEXEEXT) \
|
2020-05-29 13:19:32 -06:00
|
|
|
cnvwindeps$(HOSTEXEEXT) incdir$(HOSTEXEEXT)
|
2012-11-13 00:38:59 +00:00
|
|
|
|
2012-11-13 02:39:01 +00:00
|
|
|
ifdef HOSTEXEEXT
|
2016-03-26 15:34:16 -06:00
|
|
|
.PHONY: b16 bdf-converter cmpconfig clean configure kconfig2html mkconfig \
|
2026-03-20 13:54:21 +00:00
|
|
|
mkdeps mksymtab mksyscall mkversion mkpasswd cnvwindeps nxstyle \
|
tools/nxflat: Import the NXFLAT thunk generator.
An NXFLAT module reaches the base firmware through a "thunk" file: one
assembly stub per imported function, generated by mknxflat. That tool
has always lived outside this repository, in the NuttX buildroot NXFLAT
toolchain, so building an NXFLAT module needs a separate checkout and a
separate build of a tool that links against libbfd.
libbfd is why it stayed out. It is GPL, which an Apache project cannot
depend on, and it is awkward to obtain besides -- a stock binutils
install often ships libbfd without the libiberty it needs to link. But
the dependency was never deep. mknxflat used libbfd for eight calls,
all of them opening the file and walking the symbol table; it never
relocates or rewrites anything. That is replaced here by reading the
ELF symbol table directly, which removes the dependency outright and
costs about a hundred lines.
The emitted text is unchanged. The format strings live in the .def
files, which are carried here byte-for-byte from upstream, and the
selection rule for what becomes a thunk is the upstream one: everything
undefined that is not explicitly an object. Symbol typing cannot be
trusted for this -- imported functions are routinely emitted as
STT_NOTYPE rather than STT_FUNC, while a weakly defined object does
appear as an undefined object -- so the test is on what a symbol is not.
Upstream chose the instruction set at compile time through an "arch"
symlink pointing at either arm/ or thumb2/. A symlink cannot be carried
in the repository, and one host binary has to serve boards of both
flavours, since lpc31xx is ARM while lpc17xx, tiva, stm32f1 and rp23xx
are Thumb-2. That choice becomes a runtime "-a" option. The "-f"
option, which read further command line arguments from a file, is
dropped; nothing in the tree used it.
This commit changes no output. Against the upstream tool, for both
architectures, with and without -w, over modules exercising the plain,
weak and non-returning thunk paths, the generated thunk files are
byte-identical.
Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com>
2026-08-02 21:26:48 +02:00
|
|
|
initialconfig gencromfs convert-comments lowhex detab rmcr incdir \
|
|
|
|
|
mknxflat
|
2012-11-13 00:38:59 +00:00
|
|
|
endif
|
2021-10-11 21:38:51 +08:00
|
|
|
ifdef HOSTDYNEXT
|
|
|
|
|
.PHONY: jlink-nuttx
|
|
|
|
|
endif
|
|
|
|
|
.PHONY: clean
|
2011-03-31 04:23:17 +00:00
|
|
|
|
2013-01-05 14:57:43 +00:00
|
|
|
# b16 - Fixed precision math conversion tool
|
2012-12-02 17:34:08 +00:00
|
|
|
|
2014-04-13 16:22:22 -06:00
|
|
|
b16$(HOSTEXEEXT): b16.c
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -o b16$(HOSTEXEEXT) b16.c
|
2012-12-02 17:34:08 +00:00
|
|
|
|
|
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
b16: b16$(HOSTEXEEXT)
|
|
|
|
|
endif
|
|
|
|
|
|
2013-01-04 16:00:38 +00:00
|
|
|
# configure - Instantiate a canned NuttX configuration
|
|
|
|
|
|
|
|
|
|
configure$(HOSTEXEEXT): configure.c cfgparser.c
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -o configure$(HOSTEXEEXT) configure.c cfgparser.c
|
|
|
|
|
|
|
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
configure: configure$(HOSTEXEEXT)
|
|
|
|
|
endif
|
|
|
|
|
|
2011-03-31 04:23:17 +00:00
|
|
|
# mkconfig - Convert a .config file into a C config.h file
|
|
|
|
|
|
2013-01-04 16:00:38 +00:00
|
|
|
mkconfig$(HOSTEXEEXT): mkconfig.c cfgdefine.c
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -o mkconfig$(HOSTEXEEXT) mkconfig.c cfgdefine.c
|
2012-11-13 00:38:59 +00:00
|
|
|
|
2012-11-13 02:39:01 +00:00
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
mkconfig: mkconfig$(HOSTEXEEXT)
|
2012-11-13 00:38:59 +00:00
|
|
|
endif
|
2011-04-14 16:46:17 +00:00
|
|
|
|
2012-04-11 23:06:30 +00:00
|
|
|
# cmpconfig - Compare the contents of two configuration files
|
|
|
|
|
|
2013-01-04 16:50:15 +00:00
|
|
|
cmpconfig$(HOSTEXEEXT): cmpconfig.c cfgparser.c
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -o cmpconfig$(HOSTEXEEXT) cmpconfig.c cfgparser.c
|
2012-11-13 00:38:59 +00:00
|
|
|
|
2012-11-13 02:39:01 +00:00
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
cmpconfig: cmpconfig$(HOSTEXEEXT)
|
2012-11-13 00:38:59 +00:00
|
|
|
endif
|
2012-04-11 23:06:30 +00:00
|
|
|
|
2013-04-19 18:35:06 -06:00
|
|
|
# kconfig2html - Create an HTML document describing the configuration options
|
|
|
|
|
|
|
|
|
|
kconfig2html$(HOSTEXEEXT): kconfig2html.c
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -o kconfig2html$(HOSTEXEEXT) kconfig2html.c
|
|
|
|
|
|
|
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
kconfig2html: kconfig2html$(HOSTEXEEXT)
|
|
|
|
|
endif
|
|
|
|
|
|
2011-04-14 16:46:17 +00:00
|
|
|
# mkversion - Convert a .version file into a C version.h file
|
|
|
|
|
|
2013-01-04 16:00:38 +00:00
|
|
|
mkversion$(HOSTEXEEXT): mkconfig.c cfgdefine.c
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -o mkversion$(HOSTEXEEXT) mkversion.c cfgdefine.c
|
2012-11-13 00:38:59 +00:00
|
|
|
|
2012-11-13 02:39:01 +00:00
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
mkversion: mkversion$(HOSTEXEEXT)
|
2012-11-13 00:38:59 +00:00
|
|
|
endif
|
2011-03-31 01:42:50 +00:00
|
|
|
|
2026-07-15 15:44:37 +00:00
|
|
|
# mkpasswd - Generate a NuttX /etc/passwd entry with PBKDF2-HMAC-SHA256 hash
|
2026-03-20 13:54:21 +00:00
|
|
|
|
|
|
|
|
mkpasswd$(HOSTEXEEXT): mkpasswd.c
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -o mkpasswd$(HOSTEXEEXT) mkpasswd.c
|
|
|
|
|
|
|
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
mkpasswd: mkpasswd$(HOSTEXEEXT)
|
|
|
|
|
endif
|
|
|
|
|
|
2011-03-31 04:23:17 +00:00
|
|
|
# mksyscall - Convert a CSV file into syscall stubs and proxies
|
|
|
|
|
|
2012-11-13 02:39:01 +00:00
|
|
|
mksyscall$(HOSTEXEEXT): mksyscall.c csvparser.c
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -o mksyscall$(HOSTEXEEXT) mksyscall.c csvparser.c
|
2012-11-13 00:38:59 +00:00
|
|
|
|
2012-11-13 02:39:01 +00:00
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
mksyscall: mksyscall$(HOSTEXEEXT)
|
2012-11-13 00:38:59 +00:00
|
|
|
endif
|
2012-09-01 15:33:33 +00:00
|
|
|
|
|
|
|
|
# mksymtab - Convert a CSV file into a symbol table
|
|
|
|
|
|
2012-11-13 02:39:01 +00:00
|
|
|
mksymtab$(HOSTEXEEXT): mksymtab.c csvparser.c
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -o mksymtab$(HOSTEXEEXT) mksymtab.c csvparser.c
|
2012-11-13 00:38:59 +00:00
|
|
|
|
2012-11-13 02:39:01 +00:00
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
mksymtab: mksymtab$(HOSTEXEEXT)
|
2012-11-13 00:38:59 +00:00
|
|
|
endif
|
2007-02-17 23:21:28 +00:00
|
|
|
|
tools/nxflat: Import the NXFLAT thunk generator.
An NXFLAT module reaches the base firmware through a "thunk" file: one
assembly stub per imported function, generated by mknxflat. That tool
has always lived outside this repository, in the NuttX buildroot NXFLAT
toolchain, so building an NXFLAT module needs a separate checkout and a
separate build of a tool that links against libbfd.
libbfd is why it stayed out. It is GPL, which an Apache project cannot
depend on, and it is awkward to obtain besides -- a stock binutils
install often ships libbfd without the libiberty it needs to link. But
the dependency was never deep. mknxflat used libbfd for eight calls,
all of them opening the file and walking the symbol table; it never
relocates or rewrites anything. That is replaced here by reading the
ELF symbol table directly, which removes the dependency outright and
costs about a hundred lines.
The emitted text is unchanged. The format strings live in the .def
files, which are carried here byte-for-byte from upstream, and the
selection rule for what becomes a thunk is the upstream one: everything
undefined that is not explicitly an object. Symbol typing cannot be
trusted for this -- imported functions are routinely emitted as
STT_NOTYPE rather than STT_FUNC, while a weakly defined object does
appear as an undefined object -- so the test is on what a symbol is not.
Upstream chose the instruction set at compile time through an "arch"
symlink pointing at either arm/ or thumb2/. A symlink cannot be carried
in the repository, and one host binary has to serve boards of both
flavours, since lpc31xx is ARM while lpc17xx, tiva, stm32f1 and rp23xx
are Thumb-2. That choice becomes a runtime "-a" option. The "-f"
option, which read further command line arguments from a file, is
dropped; nothing in the tree used it.
This commit changes no output. Against the upstream tool, for both
architectures, with and without -w, over modules exercising the plain,
weak and non-returning thunk paths, the generated thunk files are
byte-identical.
Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com>
2026-08-02 21:26:48 +02:00
|
|
|
# mknxflat - Generate the thunk file for an NXFLAT module
|
|
|
|
|
|
|
|
|
|
MKNXFLAT_SRCS = nxflat/mknxflat.c nxflat/thunk_arm.c nxflat/thunk_thumb2.c
|
|
|
|
|
|
|
|
|
|
mknxflat$(HOSTEXEEXT): $(MKNXFLAT_SRCS)
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -Inxflat -o mknxflat$(HOSTEXEEXT) \
|
|
|
|
|
$(MKNXFLAT_SRCS)
|
|
|
|
|
|
|
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
mknxflat: mknxflat$(HOSTEXEEXT)
|
|
|
|
|
endif
|
|
|
|
|
|
2011-07-24 12:36:21 +00:00
|
|
|
# bdf-converter - Converts a BDF font to the NuttX font format
|
2011-07-23 13:53:59 +00:00
|
|
|
|
2012-11-13 02:39:01 +00:00
|
|
|
bdf-converter$(HOSTEXEEXT): bdf-converter.c
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -o bdf-converter$(HOSTEXEEXT) bdf-converter.c
|
2012-11-13 00:38:59 +00:00
|
|
|
|
2012-11-13 02:39:01 +00:00
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
bdf-converter: bdf-converter$(HOSTEXEEXT)
|
2012-11-13 00:38:59 +00:00
|
|
|
endif
|
|
|
|
|
|
2016-01-09 13:51:34 -06:00
|
|
|
# nxstyle - Check a file for compliance to NuttX coding style
|
2015-10-08 12:48:40 -06:00
|
|
|
|
|
|
|
|
nxstyle$(HOSTEXEEXT): nxstyle.c
|
2021-03-04 16:34:39 -03:00
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -DTOPDIR=\"$(realpath $(TOPDIR))\" \
|
|
|
|
|
-o nxstyle$(HOSTEXEEXT) nxstyle.c
|
2015-10-08 12:48:40 -06:00
|
|
|
|
|
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
nxstyle: nxstyle$(HOSTEXEEXT)
|
|
|
|
|
endif
|
|
|
|
|
|
2017-06-02 10:17:30 -06:00
|
|
|
# initialconfig - Create a barebones .config file sufficient only for
|
2019-12-12 07:41:51 -06:00
|
|
|
# instantiating the symbolic links necessary to do a real configuration
|
2017-06-02 10:17:30 -06:00
|
|
|
# from scratch.
|
|
|
|
|
|
|
|
|
|
initialconfig$(HOSTEXEEXT): initialconfig.c
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -o initialconfig$(HOSTEXEEXT) initialconfig.c
|
|
|
|
|
|
|
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
initialconfig: initialconfig$(HOSTEXEEXT)
|
|
|
|
|
endif
|
|
|
|
|
|
2018-03-20 07:31:13 -06:00
|
|
|
# gencromfs - Generate a CROMFS file system
|
|
|
|
|
|
|
|
|
|
gencromfs$(HOSTEXEEXT): gencromfs.c
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -o gencromfs$(HOSTEXEEXT) gencromfs.c
|
|
|
|
|
|
|
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
gencromfs: gencromfs$(HOSTEXEEXT)
|
|
|
|
|
endif
|
|
|
|
|
|
2018-12-01 19:15:31 -06:00
|
|
|
# convert-comments - Convert C++-style comments to C-style comments
|
|
|
|
|
|
|
|
|
|
convert-comments$(HOSTEXEEXT): convert-comments.c
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -o convert-comments$(HOSTEXEEXT) convert-comments.c
|
|
|
|
|
|
|
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
convert-comments: convert-comments$(HOSTEXEEXT)
|
|
|
|
|
endif
|
|
|
|
|
|
2018-12-03 08:45:05 -06:00
|
|
|
# lowhex - Convert hexadecimal constants to lower cast format
|
|
|
|
|
|
|
|
|
|
lowhex$(HOSTEXEEXT): lowhex.c
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -o lowhex$(HOSTEXEEXT) lowhex.c
|
|
|
|
|
|
|
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
lowhex: lowhex$(HOSTEXEEXT)
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# detab - Convert tabs to spaces
|
|
|
|
|
|
|
|
|
|
detab$(HOSTEXEEXT): detab.c
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -o detab$(HOSTEXEEXT) detab.c
|
|
|
|
|
|
|
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
detab: detab$(HOSTEXEEXT)
|
|
|
|
|
endif
|
|
|
|
|
|
2019-02-07 12:11:40 -06:00
|
|
|
# rmcr - Convert tabs to spaces
|
|
|
|
|
|
|
|
|
|
rmcr$(HOSTEXEEXT): rmcr.c
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -o rmcr$(HOSTEXEEXT) rmcr.c
|
|
|
|
|
|
|
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
rmcr: rmcr$(HOSTEXEEXT)
|
|
|
|
|
endif
|
|
|
|
|
|
2020-05-29 13:19:32 -06:00
|
|
|
# incdir - Generate compiler-specific include paths
|
|
|
|
|
|
|
|
|
|
incdir$(HOSTEXEEXT): incdir.c
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -o incdir$(HOSTEXEEXT) incdir.c
|
|
|
|
|
|
|
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
incdir: incdir$(HOSTEXEEXT)
|
|
|
|
|
endif
|
|
|
|
|
|
2016-01-09 13:51:34 -06:00
|
|
|
# cnvwindeps - Convert dependences generated by a Windows native toolchain
|
|
|
|
|
# for use in a Cygwin/POSIX build environment
|
|
|
|
|
|
|
|
|
|
cnvwindeps$(HOSTEXEEXT): cnvwindeps.c
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -o cnvwindeps$(HOSTEXEEXT) cnvwindeps.c
|
|
|
|
|
|
|
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
cnvwindeps: cnvwindeps$(HOSTEXEEXT)
|
|
|
|
|
endif
|
|
|
|
|
|
2012-11-13 00:38:59 +00:00
|
|
|
# Create dependencies for a list of files
|
|
|
|
|
|
2012-11-13 02:39:01 +00:00
|
|
|
mkdeps$(HOSTEXEEXT): mkdeps.c csvparser.c
|
|
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -o mkdeps$(HOSTEXEEXT) mkdeps.c
|
2012-11-13 00:38:59 +00:00
|
|
|
|
2012-11-13 02:39:01 +00:00
|
|
|
ifdef HOSTEXEEXT
|
|
|
|
|
mkdeps: mkdeps$(HOSTEXEEXT)
|
2012-11-13 00:38:59 +00:00
|
|
|
endif
|
2011-07-23 13:53:59 +00:00
|
|
|
|
2021-10-11 21:38:51 +08:00
|
|
|
# jlink-nuttx - Create jlink GDBServer nuttx plugin
|
|
|
|
|
|
|
|
|
|
jlink-nuttx$(HOSTDYNEXT): jlink-nuttx.c
|
2022-06-29 11:34:45 +03:00
|
|
|
$(Q) $(HOSTCC) $(HOSTCFLAGS) -shared -fPIC jlink-nuttx.c -o jlink-nuttx$(HOSTDYNEXT)
|
2021-10-11 21:38:51 +08:00
|
|
|
|
|
|
|
|
ifdef HOSTDYNEXT
|
|
|
|
|
jlink-nuttx: jlink-nuttx$(HOSTDYNEXT)
|
|
|
|
|
endif
|
|
|
|
|
|
2007-02-17 23:21:28 +00:00
|
|
|
clean:
|
2019-09-30 08:29:38 -06:00
|
|
|
$(call DELFILE, b16)
|
|
|
|
|
$(call DELFILE, b16.exe)
|
|
|
|
|
$(call DELFILE, bdf-converter)
|
|
|
|
|
$(call DELFILE, bdf-converter.exe)
|
2018-07-14 17:06:47 -06:00
|
|
|
$(call DELFILE, cmpconfig)
|
|
|
|
|
$(call DELFILE, cmpconfig.exe)
|
2019-09-30 08:29:38 -06:00
|
|
|
$(call DELFILE, cnvwindeps)
|
|
|
|
|
$(call DELFILE, cnvwindeps.exe)
|
|
|
|
|
$(call DELFILE, convert-comments)
|
|
|
|
|
$(call DELFILE, convert-comments.exe)
|
2018-07-14 17:06:47 -06:00
|
|
|
$(call DELFILE, configure)
|
|
|
|
|
$(call DELFILE, configure.exe)
|
2019-09-30 08:29:38 -06:00
|
|
|
$(call DELFILE, detab)
|
|
|
|
|
$(call DELFILE, detab.exe)
|
|
|
|
|
$(call DELFILE, gencromfs)
|
|
|
|
|
$(call DELFILE, gencromfs.exe)
|
|
|
|
|
$(call DELFILE, initialconfig)
|
|
|
|
|
$(call DELFILE, initialconfig.exe)
|
|
|
|
|
$(call DELFILE, lowhex)
|
|
|
|
|
$(call DELFILE, lowhex.exe)
|
2012-11-20 15:47:41 +00:00
|
|
|
$(call DELFILE, Make.dep)
|
2019-09-30 08:29:38 -06:00
|
|
|
$(call DELFILE, mkconfig)
|
|
|
|
|
$(call DELFILE, mkconfig.exe)
|
tools/nxflat: Import the NXFLAT thunk generator.
An NXFLAT module reaches the base firmware through a "thunk" file: one
assembly stub per imported function, generated by mknxflat. That tool
has always lived outside this repository, in the NuttX buildroot NXFLAT
toolchain, so building an NXFLAT module needs a separate checkout and a
separate build of a tool that links against libbfd.
libbfd is why it stayed out. It is GPL, which an Apache project cannot
depend on, and it is awkward to obtain besides -- a stock binutils
install often ships libbfd without the libiberty it needs to link. But
the dependency was never deep. mknxflat used libbfd for eight calls,
all of them opening the file and walking the symbol table; it never
relocates or rewrites anything. That is replaced here by reading the
ELF symbol table directly, which removes the dependency outright and
costs about a hundred lines.
The emitted text is unchanged. The format strings live in the .def
files, which are carried here byte-for-byte from upstream, and the
selection rule for what becomes a thunk is the upstream one: everything
undefined that is not explicitly an object. Symbol typing cannot be
trusted for this -- imported functions are routinely emitted as
STT_NOTYPE rather than STT_FUNC, while a weakly defined object does
appear as an undefined object -- so the test is on what a symbol is not.
Upstream chose the instruction set at compile time through an "arch"
symlink pointing at either arm/ or thumb2/. A symlink cannot be carried
in the repository, and one host binary has to serve boards of both
flavours, since lpc31xx is ARM while lpc17xx, tiva, stm32f1 and rp23xx
are Thumb-2. That choice becomes a runtime "-a" option. The "-f"
option, which read further command line arguments from a file, is
dropped; nothing in the tree used it.
This commit changes no output. Against the upstream tool, for both
architectures, with and without -w, over modules exercising the plain,
weak and non-returning thunk paths, the generated thunk files are
byte-identical.
Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com>
2026-08-02 21:26:48 +02:00
|
|
|
$(call DELFILE, mknxflat)
|
|
|
|
|
$(call DELFILE, mknxflat.exe)
|
2019-09-30 08:29:38 -06:00
|
|
|
$(call DELFILE, mkdeps)
|
|
|
|
|
$(call DELFILE, mkdeps.exe)
|
|
|
|
|
$(call DELFILE, mksymtab)
|
|
|
|
|
$(call DELFILE, mksymtab.exe)
|
2012-11-20 15:47:41 +00:00
|
|
|
$(call DELFILE, mksyscall)
|
|
|
|
|
$(call DELFILE, mksyscall.exe)
|
|
|
|
|
$(call DELFILE, mkversion)
|
|
|
|
|
$(call DELFILE, mkversion.exe)
|
2026-03-20 13:54:21 +00:00
|
|
|
$(call DELFILE, mkpasswd)
|
|
|
|
|
$(call DELFILE, mkpasswd.exe)
|
2018-07-14 17:06:47 -06:00
|
|
|
$(call DELFILE, nxstyle)
|
|
|
|
|
$(call DELFILE, nxstyle.exe)
|
2019-09-30 08:29:38 -06:00
|
|
|
$(call DELFILE, rmcr)
|
|
|
|
|
$(call DELFILE, rmcr.exe)
|
2021-10-11 21:38:51 +08:00
|
|
|
$(call DELFILE, jlink-nuttx.so)
|
|
|
|
|
$(call DELFILE, jlink-nuttx.dll)
|
2012-11-17 18:54:53 +00:00
|
|
|
ifneq ($(CONFIG_WINDOWS_NATIVE),y)
|
2012-11-16 12:41:58 +00:00
|
|
|
$(Q) rm -rf *.dSYM
|
2012-11-17 18:54:53 +00:00
|
|
|
endif
|
2020-09-14 13:53:37 -03:00
|
|
|
$(Q) $(MAKE) -C pic32 -f Makefile.host clean
|
2020-10-28 09:39:59 +01:00
|
|
|
$(Q) $(MAKE) -C cxd56 -f Makefile.host clean
|
2020-05-31 01:00:17 +01:00
|
|
|
$(call DELFILE, incdir)
|
|
|
|
|
$(call DELFILE, incdir.exe)
|
2012-11-17 18:54:53 +00:00
|
|
|
$(call CLEAN)
|