Skip to content

Commit

Permalink
add separate uclibc
Browse files Browse the repository at this point in the history
  • Loading branch information
fda77 committed May 4, 2020
1 parent 760226a commit 6607e74
Show file tree
Hide file tree
Showing 10 changed files with 46 additions and 6 deletions.
2 changes: 2 additions & 0 deletions config/avm/features.in
Original file line number Diff line number Diff line change
Expand Up @@ -506,4 +506,6 @@ config FREETZ_AVM_HAS_MULTID_LEASES_FORMAT_V2
config FREETZ_AVM_HAS_AVMDAEMON_PRELOAD
bool
default y
depends on \
!FREETZ_SEPARATE_AVM_UCLIBC

8 changes: 6 additions & 2 deletions config/avm/uclibc.in
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
### uClibc version used by AVM in the original firmware
###

if !FREETZ_SEPARATE_AVM_UCLIBC

config FREETZ_AVM_UCLIBC_0_9_28
bool
default y
Expand All @@ -27,6 +29,8 @@ config FREETZ_AVM_UCLIBC_1_0_14
default y
depends on FREETZ_AVM_PROP_UCLIBC_1_0_14

endif # FREETZ_SEPARATE_AVM_UCLIBC

config FREETZ_AVM_UCLIBC_1_0_15
bool
default y
Expand All @@ -35,11 +39,11 @@ config FREETZ_AVM_UCLIBC_1_0_15
config FREETZ_AVM_UCLIBC_NPTL_ENABLED
bool
default y
depends on \
depends on FREETZ_SEPARATE_AVM_UCLIBC || \
FREETZ_AVM_UCLIBC_0_9_33 || FREETZ_AVM_UCLIBC_1_0_14

config FREETZ_AVM_UCLIBC_XLOCALE_ENABLED
bool
default y
depends on FREETZ_AVM_PROP_UCLIBC_XLOCALE
depends on FREETZ_SEPARATE_AVM_UCLIBC || FREETZ_AVM_PROP_UCLIBC_XLOCALE

15 changes: 15 additions & 0 deletions config/ui/patches.in
Original file line number Diff line number Diff line change
Expand Up @@ -1344,6 +1344,7 @@ comment "Replacement patches --------------------"

config FREETZ_KEEP_AVM_UCLIBC
bool "Keep AVM uClibc - FOR TESTING PURPOSES ONLY"
depends on !FREETZ_SEPARATE_AVM_UCLIBC
depends on FREETZ_SHOW_EXPERT && \
( \
(FREETZ_AVM_UCLIBC_0_9_28 && FREETZ_TARGET_UCLIBC_0_9_28) || \
Expand Down Expand Up @@ -1376,6 +1377,7 @@ config FREETZ_REPLACE_OPENSSL
config FREETZ_REPLACE_OUTER_UCLIBC_AND_BUSYBOX
bool "Replace uClibc and BusyBox in outer image"
depends on FREETZ_AVM_HAS_INNER_OUTER_FILESYSTEM
depends on !FREETZ_SEPARATE_AVM_UCLIBC
default n
help
This replaces uClibc and BusyBox in the outer image by
Expand Down Expand Up @@ -1426,6 +1428,19 @@ config FREETZ_REPLACE_ONLINECHANGED

comment "Additional patches ---------------------"

config FREETZ_SEPARATE_AVM_UCLIBC_FORCE
bool
depends on FREETZ_AVM_PROP_UCLIBC_SEPARATE
select FREETZ_SEPARATE_AVM_UCLIBC
default y

config FREETZ_SEPARATE_AVM_UCLIBC
bool "Separate uClibc"
default n
help
Puts uClibc of Freetz into /usr/lib/freetz/.
Needs about 1 MB (uncompressed).

config FREETZ_ADD_TELNETD
bool "Add telnetd"
depends on !FREETZ_AVM_HAS_TELNETD
Expand Down
1 change: 1 addition & 0 deletions config/ui/toolchain.in
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ choice
depends on !(!FREETZ_REAL_DEVELOPER_ONLY__DLTC && FREETZ_SYSTEM_TYPE_IPQ40xx)
depends on !(!FREETZ_REAL_DEVELOPER_ONLY__DLTC && FREETZ_SYSTEM_TYPE_PUMA6)
depends on !(!FREETZ_REAL_DEVELOPER_ONLY__DLTC && FREETZ_SYSTEM_TYPE_QCA956x)
depends on !FREETZ_SEPARATE_AVM_UCLIBC
# depends on !FREETZ_TYPE_FIRMWARE_LABOR_TEST

config FREETZ_BUILD_TOOLCHAIN
Expand Down
3 changes: 3 additions & 0 deletions docs/patches/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -447,5 +447,8 @@
* **<u>RUN_TELEFON_IN_INHOUSE_MODE: Run telefon daemon in inhaus mode</u><a id='run-telefon-in-inhouse-mode'></a>**<br>
Running telefon daemon in "inhaus mode" restores: - Processing of /var/flash/calllog on incoming calls. In case you added telnetd, this patch also restores: - Support for telnetd on/off by phone (#96*7* / #96*8*). - Processing of /var/flash/fx_conf attributes responsible for automatic start of telnetd.

* **<u>SEPARATE_AVM_UCLIBC: Separate uClibc</u><a id='separate-avm-uclibc'></a>**<br>
Puts uClibc of Freetz into /usr/lib/freetz/. Needs about 1 MB (uncompressed).

* **<u>USBSTORAGE_AUTOMOUNT: Automount filesystems</u><a id='usbstorage-automount'></a>**<br>
The filesystems ext2, ext3, ext4, fat, hfs, hfs+, ntfs and reiserfs and swap are mounted automatically. Detection is done by blkid applet . It depends on the original firmware which of the following points you have to select.
9 changes: 7 additions & 2 deletions fwmod
Original file line number Diff line number Diff line change
Expand Up @@ -1129,7 +1129,10 @@ if [ "$DO_MOD" -gt 0 ]; then

fn=${bn//_/[-+._]}
sizeinfo "$bn"
for dn in lib usr/lib ${FREETZ_LIBRARY_DIR#/} usr/lib/xtables; do
[ "$FREETZ_SEPARATE_AVM_UCLIBC" == "y" ] \
&& LIBPATHS="${FREETZ_LIBRARY_DIR#/} lib usr/lib usr/lib/xtables" \
|| LIBPATHS="lib usr/lib ${FREETZ_LIBRARY_DIR#/} usr/lib/xtables"
for dn in $LIBPATHS; do
files=$(shopt -s nullglob; echo ${TARGET_SPECIFIC_ROOT_DIR}/$dn/$fn[-.]*so*)
if [ -z "$files" ]; then
continue;
Expand Down Expand Up @@ -1159,7 +1162,9 @@ if [ "$DO_MOD" -gt 0 ]; then
fi
done
if [ "$FREETZ_KEEP_AVM_UCLIBC" != "y" -a "$FREETZ_LIB_libuClibc" == "y" ]; then
cp -a "${TARGET_SPECIFIC_ROOT_DIR}/lib/libc.so.${FREETZ_TARGET_UCLIBC_MAJOR_VERSION}" "${FILESYSTEM_MOD_DIR}/lib/"
[ "$FREETZ_SEPARATE_AVM_UCLIBC" == "y" ] && \
cp -a "${TARGET_SPECIFIC_ROOT_DIR}/${FREETZ_LIBRARY_DIR}/libc.so.${FREETZ_TARGET_UCLIBC_MAJOR_VERSION}" "${FILESYSTEM_MOD_DIR}/${FREETZ_LIBRARY_DIR}/" || \
cp -a "${TARGET_SPECIFIC_ROOT_DIR}/lib/libc.so.${FREETZ_TARGET_UCLIBC_MAJOR_VERSION}" "${FILESYSTEM_MOD_DIR}/lib/"
[ "${FREETZ_AVM_HAS_INNER_OUTER_FILESYSTEM}" == "y" -a "$FREETZ_REPLACE_OUTER_UCLIBC_AND_BUSYBOX" == "y" ] && \
cp -a "${TARGET_SPECIFIC_ROOT_DIR}/lib/libc.so.${FREETZ_TARGET_UCLIBC_MAJOR_VERSION}" "${FILESYSTEM_OUTER_MOD_DIR}/lib/"
fi
Expand Down
9 changes: 8 additions & 1 deletion make/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,18 @@ TARGET_CFLAGS_mips:=-Wa,--trap
# LFS flags
TARGET_CFLAGS_LFS:=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64

# Loader
ifeq ($(strip $(FREETZ_SEPARATE_AVM_UCLIBC)),y)
#TARGET_CFLAGS_LD:=-Xlinker -I/usr/lib/freetz/ld-uClibc.so.1
TARGET_CFLAGS_LD:=-Wl,-I/usr/lib/freetz/ld-uClibc.so.1
endif

ifneq ($(filter -march=% -mcpu=% -mtune=% -mfpu=% -mfloat-abi=% -m%-float -Wa$(_comma)--trap,$(call qstrip,$(FREETZ_TARGET_CFLAGS))),)
$(error Please remove any ARCH/CPU/FPU/FLOAT-ABI/MODE related flags (-march/-mcpu/-mtune/-mfpu/-mfloat-abi/-m*-float/-Wa$(_comma)--trap) \
from target compiler flags (FREETZ_TARGET_CFLAGS variable in your .config). \
These flags are automatically set by Freetz build environment now)
endif
TARGET_CFLAGS:=$(strip $(TARGET_CFLAGS_HW_CAPABILITIES) $(call qstrip,$(FREETZ_TARGET_CFLAGS)) $(TARGET_CFLAGS_$(call qstrip,$(FREETZ_TARGET_ARCH))) $(TARGET_CFLAGS_LFS))
TARGET_CFLAGS:=$(strip $(TARGET_CFLAGS_HW_CAPABILITIES) $(call qstrip,$(FREETZ_TARGET_CFLAGS)) $(TARGET_CFLAGS_$(call qstrip,$(FREETZ_TARGET_ARCH))) $(TARGET_CFLAGS_LFS) $(TARGET_CFLAGS_LD))

FPIC:=-fPIC

Expand Down Expand Up @@ -304,6 +310,7 @@ endef

define INSTALL_BINARY_STRIP
$(INSTALL_FILE) \
[ "$(FREETZ_SEPARATE_AVM_UCLIBC)" == "y" ] && $(TOOLS_DIR)/patchelf --set-interpreter /usr/lib/freetz/ld-uClibc.so.1 $@ || true; \
$(TARGET_STRIP) $@;
endef
define INSTALL_LIBRARY__INT
Expand Down
3 changes: 2 additions & 1 deletion make/libs/libgcc_s/libgcc_s.mk
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
$(call PKG_INIT_LIB, 1)

$(PKG)_STAGING_BINARY:=$(TARGET_TOOLCHAIN_STAGING_DIR)/usr/lib/$(pkg).so.$($(PKG)_VERSION)
$(PKG)_TARGET_BINARY:=$(TARGET_SPECIFIC_ROOT_DIR)/lib/$(pkg).so.$($(PKG)_VERSION)
$(PKG)_TARGET_BINARY:=$(if $(FREETZ_SEPARATE_AVM_UCLIBC),$($(PKG)_TARGET_DIR),$(TARGET_SPECIFIC_ROOT_DIR)/lib)/$(pkg).so.$($(PKG)_VERSION)

$($(PKG)_STAGING_BINARY): gcc

Expand All @@ -16,5 +16,6 @@ $(pkg)-clean:

$(pkg)-uninstall:
$(RM) $(TARGET_SPECIFIC_ROOT_DIR)/lib/libgcc_s.so*
$(RM) $(LIBGCC_S_TARGET_DIR)/libgcc_s.so*

$(PKG_FINISH)
1 change: 1 addition & 0 deletions patches/scripts/140-remove_uclibc.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
[ "$FREETZ_KEEP_AVM_UCLIBC" == "y" ] && return 0
[ "$FREETZ_SEPARATE_AVM_UCLIBC" == "y" ] && return 0

[ "$FREETZ_AVM_UCLIBC_0_9_28" == "y" ] && version="0.9.28"
[ "$FREETZ_AVM_UCLIBC_0_9_29" == "y" ] && version="0.9.29"
Expand Down
1 change: 1 addition & 0 deletions toolchain/make/target-toolchain.mk
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ $(TARGET_TOOLCHAIN_DIR):

$(TARGET_TOOLCHAIN_STAGING_DIR):
@mkdir -p $@ $@/bin $@/lib
@[ "$(FREETZ_SEPARATE_AVM_UCLIBC)" == "y" ] && ln -snf . $@/lib/freetz || true
@ln -snf . $@/usr
@mkdir -p $@/usr/$(REAL_GNU_TARGET_NAME)
@ln -snf ../lib $@/usr/$(REAL_GNU_TARGET_NAME)/lib
Expand Down

0 comments on commit 6607e74

Please sign in to comment.