Skip to content

Commit 29245aa

Browse files
committed
examples/elf: replace Python fixture generators
1 parent 7f20e7e commit 29245aa

7 files changed

Lines changed: 489 additions & 293 deletions

File tree

examples/elf/main/CMakeLists.txt

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ if(CONFIG_EXAMPLES_ELF)
2222
set(ELF_SYMTAB ${CMAKE_CURRENT_BINARY_DIR}/test_symtab.c)
2323
set(ELF_ROMFS_IMG ${CMAKE_CURRENT_BINARY_DIR}/elf_romfs.img)
2424
set(ELF_ROMFS_SRC ${CMAKE_CURRENT_BINARY_DIR}/elf_romfs.c)
25-
set(ELF_GEN_SYMTAB ${CMAKE_CURRENT_SOURCE_DIR}/gen_symtab.py)
26-
set(ELF_GEN_ROMFS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/gen_romfs_source.py)
2725

2826
set(ELFNAME_BASE hello)
2927

@@ -41,10 +39,9 @@ if(CONFIG_EXAMPLES_ELF)
4139

4240
add_custom_command(
4341
OUTPUT ${ELF_SYMTAB}
44-
COMMAND ${Python3_EXECUTABLE} ${ELF_GEN_SYMTAB} ${ELF_BINARY_FILES} g_elf
42+
COMMAND ${NUTTX_APPS_DIR}/tools/mksymtab.sh ${ELF_BINARY_FILES} g_elf >
4543
${ELF_SYMTAB}
46-
DEPENDS ${ELF_BINARY_TARGETS} ${ELF_GEN_SYMTAB}
47-
VERBATIM)
44+
DEPENDS ${ELF_BINARY_TARGETS})
4845

4946
set_source_files_properties(${ELF_SYMTAB} PROPERTIES GENERATED TRUE)
5047

@@ -60,21 +57,33 @@ if(CONFIG_EXAMPLES_ELF)
6057
set(ELF_PKGTEST ${CMAKE_BINARY_DIR}/bin/pkgtest.nsh)
6158
set(ELF_PKGFAIL ${CMAKE_BINARY_DIR}/bin/pkgfail.nsh)
6259
set(ELF_HELLO_BIN ${CMAKE_BINARY_DIR}/bin/hello)
60+
set(ELF_FIXTURE_HOST_DIR ${CMAKE_CURRENT_BINARY_DIR}/host)
61+
set(ELF_FIXTURE_HOST_SRC ${CMAKE_CURRENT_SOURCE_DIR}/host/CMakeLists.txt)
62+
set(ELF_FIXTURE_TOOL
63+
${ELF_FIXTURE_HOST_DIR}/mk_pkg_fixture${CMAKE_EXECUTABLE_SUFFIX})
6364
set(ELF_HELLO_TARGET hello)
6465

6566
if(NOT CMAKE_C_ELF_COMPILER)
6667
set(ELF_HELLO_TARGET ELF_hello)
6768
endif()
6869

70+
add_custom_command(
71+
OUTPUT ${ELF_FIXTURE_TOOL}
72+
COMMAND ${CMAKE_COMMAND} -S ${CMAKE_CURRENT_SOURCE_DIR}/host -B
73+
${ELF_FIXTURE_HOST_DIR}
74+
COMMAND ${CMAKE_COMMAND} --build ${ELF_FIXTURE_HOST_DIR} --target
75+
mk_pkg_fixture
76+
DEPENDS ${ELF_FIXTURE_HOST_SRC}
77+
${CMAKE_CURRENT_SOURCE_DIR}/mk_pkg_fixture.c
78+
VERBATIM)
79+
6980
add_custom_command(
7081
OUTPUT ${ELF_INDEX_JSON} ${ELF_BAD_INDEX_JSON} ${ELF_PKGTEST}
7182
${ELF_PKGFAIL}
72-
COMMAND
73-
${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/mk_pkg_fixture.py
74-
${ELF_HELLO_BIN} ${ELF_INDEX_JSON} ${ELF_BAD_INDEX_JSON}
75-
${ELF_PKGTEST} ${ELF_PKGFAIL} ${CONFIG_ARCH} ${CONFIG_ARCH_BOARD}
76-
DEPENDS ${ELF_HELLO_TARGET}
77-
${CMAKE_CURRENT_SOURCE_DIR}/mk_pkg_fixture.py
83+
COMMAND ${ELF_FIXTURE_TOOL} ${ELF_HELLO_BIN} ${ELF_INDEX_JSON}
84+
${ELF_BAD_INDEX_JSON} ${ELF_PKGTEST} ${ELF_PKGFAIL}
85+
${CONFIG_ARCH} ${CONFIG_ARCH_BOARD}
86+
DEPENDS ${ELF_HELLO_TARGET} ${ELF_FIXTURE_TOOL}
7887
VERBATIM)
7988

8089
list(APPEND ELF_ROMFS_DEPS ${ELF_INDEX_JSON} ${ELF_BAD_INDEX_JSON}
@@ -89,10 +98,8 @@ if(CONFIG_EXAMPLES_ELF)
8998

9099
add_custom_command(
91100
OUTPUT ${ELF_ROMFS_SRC}
92-
COMMAND ${Python3_EXECUTABLE} ${ELF_GEN_ROMFS_SRC} ${ELF_ROMFS_IMG}
93-
${ELF_ROMFS_SRC}
94-
DEPENDS ${ELF_ROMFS_IMG} ${ELF_GEN_ROMFS_SRC}
95-
VERBATIM)
101+
COMMAND xxd -i ${ELF_ROMFS_IMG} > ${ELF_ROMFS_SRC}
102+
DEPENDS ${ELF_ROMFS_IMG})
96103

97104
set_source_files_properties(${ELF_ROMFS_SRC} PROPERTIES GENERATED TRUE)
98105

examples/elf/main/Makefile

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,19 +70,29 @@ ROMFSIMG = elf_romfs.img
7070
ROMFSSRC = elf_romfs.c
7171
ROMFSOBJ = $(ROMFSSRC:.c=$(OBJEXT))
7272
ifdef CONFIG_SYSTEM_NXPKG
73+
HOSTOBJSEXT ?= hobj
7374
PKGINDEX = $(BINDIR)/index.json
7475
PKGBADINDEX = $(BINDIR)/bad-index.json
7576
PKGTEST = $(BINDIR)/pkgtest.nsh
7677
PKGFAIL = $(BINDIR)/pkgfail.nsh
77-
PKG_FIXTURE_GEN = $(APPDIR)/examples/elf/main/mk_pkg_fixture.py
78+
PKG_FIXTURE_GEN = mk_pkg_fixture$(HOSTEXEEXT)
79+
PKG_FIXTURE_SRCS = mk_pkg_fixture.c
80+
PKG_FIXTURE_OBJS = $(PKG_FIXTURE_SRCS:.c=.$(HOSTOBJSEXT))
7881
PKG_FIXTURE_OUTPUTS = $(PKGINDEX) $(PKGBADINDEX) $(PKGTEST) $(PKGFAIL)
7982
PKG_FIXTURE_INPUTS = $(BINDIR)/hello
8083
PKG_FIXTURE_ARGS = \
8184
$(BINDIR)/hello $(PKGINDEX) $(PKGBADINDEX) $(PKGTEST) $(PKGFAIL) \
8285
$(CONFIG_ARCH) $(CONFIG_ARCH_BOARD)
8386

87+
$(PKG_FIXTURE_OBJS): %.$(HOSTOBJSEXT): %.c
88+
@echo "CC: $<"
89+
$(Q) $(HOSTCC) -c $(HOSTCFLAGS) $< -o $@
90+
91+
$(PKG_FIXTURE_GEN): $(PKG_FIXTURE_OBJS)
92+
$(Q) $(HOSTCC) $(HOSTLDFLAGS) $(PKG_FIXTURE_OBJS) -o $@
93+
8494
$(PKG_FIXTURE_OUTPUTS) &: $(PKG_FIXTURE_INPUTS) $(PKG_FIXTURE_GEN)
85-
$(Q) python3 $(PKG_FIXTURE_GEN) \
95+
$(Q) ./$(PKG_FIXTURE_GEN) \
8696
$(PKG_FIXTURE_ARGS)
8797
endif
8898

@@ -122,7 +132,7 @@ postinstall:: $(ROMFSOBJ) $(SYMTABOBJ) $(FSIMG_OBJ)
122132
$(call ARLOCK, $(call CONVERT_PATH,$(BIN)), $^)
123133

124134
distclean::
125-
$(Q) $(call DELFILE, $(SYMTABSRC) $(SYMTABOBJ) $(ROMFSSRC) $(ROMFSIMG) $(ROMFSOBJ) $(MODLUE_NAME))
135+
$(Q) $(call DELFILE, $(SYMTABSRC) $(SYMTABOBJ) $(ROMFSSRC) $(ROMFSIMG) $(ROMFSOBJ) $(MODLUE_NAME) $(PKG_FIXTURE_GEN) $(PKG_FIXTURE_OBJS))
126136

127137

128138
include $(APPDIR)/Application.mk

examples/elf/main/gen_romfs_source.py

Lines changed: 0 additions & 58 deletions
This file was deleted.

examples/elf/main/gen_symtab.py

Lines changed: 0 additions & 87 deletions
This file was deleted.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# ##############################################################################
2+
# apps/examples/elf/main/host/CMakeLists.txt
3+
#
4+
# SPDX-License-Identifier: Apache-2.0
5+
#
6+
# Licensed to the Apache Software Foundation (ASF) under one or more contributor
7+
# license agreements. See the NOTICE file distributed with this work for
8+
# additional information regarding copyright ownership. The ASF licenses this
9+
# file to you under the Apache License, Version 2.0 (the "License"); you may not
10+
# use this file except in compliance with the License. You may obtain a copy of
11+
# the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
18+
# License for the specific language governing permissions and limitations under
19+
# the License.
20+
#
21+
# ##############################################################################
22+
23+
cmake_minimum_required(VERSION 3.16)
24+
project(elf_fixture_host LANGUAGES C)
25+
26+
add_executable(mk_pkg_fixture ../mk_pkg_fixture.c)

0 commit comments

Comments
 (0)