My OpenADK config
вс, 11 февр. 2024 г. в 09:34, Dmitry Chestnykh dm.chestnykh@gmail.com:
The goal of this change is to fix FDPIC toolchain compilation. Previous implementation had the issue that `make oldconfig` destroyed the effect of `echo` and `sed` executing to write BINFMT-related lines into .config. Note that we have to use `echo UCLIBC_FORMAT_*=y` instead of sed because in the original file `UCLIBC_FORMAT_*` line may not exist. Sed just replaces text in lines, so if the line doesn't exist sed will do nothing. To have the proper `UCLIBC_FORMAT_*=y` in the .config I've changed some `sed`s to `echo`s. Without this change the compilation of FDPIC toolchain fails because UCLIBC_FORMAT_FDPIC_ELF is not defined, it leads to miss of `-mfdpic` compilation flag and to the absense of crtreloc.o object that needs during utilities linking and the linking process fails.
Signed-off-by: Dmitry Chestnykh dm.chestnykh@gmail.com
toolchain/uclibc-ng/Makefile | 71 ++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 36 deletions(-)
diff --git a/toolchain/uclibc-ng/Makefile b/toolchain/uclibc-ng/Makefile index 6b1fd31ce..cabac310d 100644 --- a/toolchain/uclibc-ng/Makefile +++ b/toolchain/uclibc-ng/Makefile @@ -85,42 +85,6 @@ ifeq ($(ADK_TARGET_HARD_FLOAT_DP),y) $(SED) 's/.*(UCLIBC_HAS_FPU).*/\1=y/' ${WRKBUILD}/.config $(SED) 's/.*(UCLIBC_HAS_SOFT_FLOAT).*/# \1 is not set/' ${WRKBUILD}/.config endif -ifeq ($(ADK_TARGET_BINFMT_ELF),y)
$(SED) 's/.*\(UCLIBC_FORMAT_ELF\).*/\1=y/' ${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_SHARED_FLAT\).*/# \1 is not set/'
${WRKBUILD}/.config -endif -ifeq ($(ADK_TARGET_BINFMT_FDPIC),y)
$(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/\1=y/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_ELF\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_SHARED_FLAT\).*/# \1 is not set/'
${WRKBUILD}/.config -endif -ifeq ($(ADK_TARGET_BINFMT_FLAT),y)
echo '# UCLIBC_FORMAT_FLAT is not set' >> ${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT\).*/\1=y/' ${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_SHARED_FLAT\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/# \1 is not set/'
${WRKBUILD}/.config -ifeq ($(ADK_TARGET_BINFMT_FLAT_SEP_DATA),y)
echo '# UCLIBC_FORMAT_FLAT_SEP_DATA is not set' >>
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/\1=y/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT \).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_SHARED_FLAT\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/# \1 is not set/'
${WRKBUILD}/.config -endif -ifeq ($(ADK_TARGET_BINFMT_FLAT_SHARED),y)
echo '# UCLIBC_FORMAT_SHARED_FLAT is not set' >>
${WRKBUILD}/.config
echo '# HAVE_NO_SHARED is not set' >> ${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_SHARED_FLAT\).*/\1=y/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT \).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/# \1 is not set/'
${WRKBUILD}/.config -endif -endif ifeq ($(ADK_TARGET_LIBC_WITH_LIBICONV),y) $(SED) 's/.*(UCLIBC_HAS_LIBICONV).*/\1=y/' ${WRKBUILD}/.config endif @@ -344,6 +308,41 @@ endif UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \ UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \ oldconfig
+ifeq ($(ADK_TARGET_BINFMT_ELF),y)
echo 'UCLIBC_FORMAT_ELF=y' >> ${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_SHARED_FLAT\).*/# \1 is not set/'
${WRKBUILD}/.config +endif +ifeq ($(ADK_TARGET_BINFMT_FDPIC),y)
echo 'UCLIBC_FORMAT_FDPIC_ELF=y' >> ${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_ELF\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_SHARED_FLAT\).*/# \1 is not set/'
${WRKBUILD}/.config +endif +ifeq ($(ADK_TARGET_BINFMT_FLAT),y)
echo 'UCLIBC_FORMAT_FLAT=y' >> ${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_SHARED_FLAT\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/# \1 is not set/'
${WRKBUILD}/.config +ifeq ($(ADK_TARGET_BINFMT_FLAT_SEP_DATA),y)
echo 'UCLIBC_FORMAT_FLAT_SEP_DATA=y' >> ${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT \).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_SHARED_FLAT\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/# \1 is not set/'
${WRKBUILD}/.config +endif +ifeq ($(ADK_TARGET_BINFMT_FLAT_SHARED),y)
echo '# HAVE_NO_SHARED is not set' >> ${WRKBUILD}/.config
echo 'UCLIBC_FORMAT_SHARED_FLAT=y' >> ${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT \).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/# \1 is not set/'
${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/# \1 is not set/'
${WRKBUILD}/.config +endif +endif
ifeq ($(ADK_TARGET_LIBC_WITH_LOCALE),y) $(SED) 's/.*(UCLIBC_BUILD_MINIMAL_LOCALES).*/\1="$(ADK_RUNTIME_DEFAULT_LOCALE)"/' ${WRKBUILD}/.config endif -- 2.43.0