Skip to content

Commit

Permalink
add hybrid linking for misc. libs to reduce size for thingino
Browse files Browse the repository at this point in the history
  • Loading branch information
gtxaspec committed Dec 14, 2024
1 parent 6c4b55c commit d102462
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 15 deletions.
34 changes: 27 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,38 @@ CXX = ${CROSS_COMPILE}g++

DEBUG=n

CXXFLAGS = $(CFLAGS) -std=c++20 -Wall -Wextra -Wno-unused-parameter
LDFLAGS = -lrt
CXXFLAGS += $(CFLAGS) -std=c++20 -Wall -Wextra -Wno-unused-parameter
LDFLAGS += -lrt -lpthread

CFLAGS = -Wall -Wextra -Wno-unused-parameter -O2 -DNO_OPENSSL=1
CFLAGS ?= -Wall -Wextra -Wno-unused-parameter -O2 -DNO_OPENSSL=1
ifeq ($(KERNEL_VERSION_4),y)
CFLAGS += -DKERNEL_VERSION_4
endif

ifneq (,$(findstring -static,$(LDFLAGS)))
LIBS = -limp -lalog -lsysutils -lmuslshim -lliveMedia -lgroupsock -lBasicUsageEnvironment -lUsageEnvironment -lconfig++ -lwebsockets -lschrift -lopus -lfaac
ifneq ($(filter -DBINARY_STATIC -DBINARY_HYBRID -DBINARY_DYNAMIC,$(CFLAGS)),)
else
LIBS = -limp -lalog -laudioProcess -lsysutils -lmuslshim -lliveMedia -lgroupsock -lBasicUsageEnvironment -lUsageEnvironment -lconfig++ -lwebsockets -lschrift -lopus -lfaac
override CFLAGS += -DBINARY_DYNAMIC
endif

ifneq ($(MAKECMDGOALS),clean)
ifneq (,$(findstring -DBINARY_STATIC,$(CFLAGS)))
override LDFLAGS += -static -static-libgcc -static-libstdc++
LIBS = -l:libimp.a -l:libalog.a -l:libsysutils.a -l:libmuslshim.a \
-l:libliveMedia.a -l:libgroupsock.a -l:libBasicUsageEnvironment.a -l:libUsageEnvironment.a \
-l:libconfig++.a -l:libwebsockets.a -l:libschrift.a -l:libopus.a -l:libfaac.a
else ifneq (,$(findstring -DBINARY_HYBRID,$(CFLAGS)))
override LDFLAGS += -static-libstdc++
LIBS = -Wl,-Bdynamic -l:libimp.so -l:libalog.so -l:libsysutils.so -l:libmuslshim.so -l:libaudioProcess.so -l:libaudioshim.so -l:libwebsockets.so \
-Wl,-Bstatic -l:libliveMedia.a -l:libgroupsock.a -l:libBasicUsageEnvironment.a -l:libUsageEnvironment.a \
-l:libconfig++.a -l:libschrift.a -l:libopus.a -l:libfaac.a \
-Wl,-Bdynamic
else ifneq (,$(findstring -DBINARY_DYNAMIC,$(CFLAGS)))
LIBS = -Wl,-Bdynamic -l:libimp.so -l:libalog.so -l:libaudioProcess.so -l:libsysutils.so -l:libmuslshim.so \
-l:libliveMedia -l:libgroupsock -l:libBasicUsageEnvironment -l:libUsageEnvironment.so \
-l:libconfig++.so -l:libwebsockets.so -l:libschrift.so -l:libopus.so -l:libfaac.so
else
$(error No valid binary type defined in CFLAGS. Please specify -DBINARY_STATIC, -DBINARY_HYBRID, or -DBINARY_DYNAMIC)
endif
endif

ifneq (,$(findstring -DPLATFORM_T31,$(CFLAGS)))
Expand Down Expand Up @@ -66,7 +86,7 @@ $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(VERSION_FILE)

$(TARGET): $(OBJECTS) $(VERSION_FILE)
@mkdir -p $(@D)
$(CCACHE) $(CXX) $(LDFLAGS) -o $@ $(OBJECTS) $(LIBS) -s -Os
$(CCACHE) $(CXX) $(LDFLAGS) -o $@ $(OBJECTS) $(LIBS) -s

.PHONY: all clean

Expand Down
25 changes: 23 additions & 2 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,24 @@ prudynt(){

cd $TOP
make clean

if [ "$2" = "-static" ]; then
BIN_TYPE="-DBINARY_STATIC"
elif [ "$2" = -"hybrid" ]; then
BIN_TYPE="-DBINARY_HYBRID"
else
BIN_TYPE="-DBINARY_DYNAMIC"
fi

/usr/bin/make -j$(nproc) \
ARCH= CROSS_COMPILE="${PRUDYNT_CROSS}" \
CFLAGS="-DPLATFORM_$1 -Os -DALLOW_RTSP_SERVER_PORT_REUSE=1 -DNO_OPENSSL=1 \
CFLAGS="-DPLATFORM_$1 $BIN_TYPE -O2 -DALLOW_RTSP_SERVER_PORT_REUSE=1 -DNO_OPENSSL=1 \
-I./3rdparty/install/include \
-I./3rdparty/install/include/liveMedia \
-I./3rdparty/install/include/groupsock \
-I./3rdparty/install/include/UsageEnvironment \
-I./3rdparty/install/include/BasicUsageEnvironment" \
LDFLAGS=" -L./3rdparty/install/lib $2" \
LDFLAGS=" -L./3rdparty/install/lib" \
-C $PWD all
exit 0
}
Expand Down Expand Up @@ -150,13 +159,25 @@ deps() {
cd ingenic-musl
if [[ "$2" == "-static" ]]; then
make CC="${PRUDYNT_CROSS}gcc" -j$(nproc) static
make CC="${PRUDYNT_CROSS}gcc" -j$(nproc)
else
make CC="${PRUDYNT_CROSS}gcc" -j$(nproc)
fi
cp libmuslshim.* ../install/lib/
fi
cd $TOP

echo "import libaudioshim"
cd 3rdparty
rm -rf libaudioshim
if [[ ! -d libaudioshim ]]; then
git clone --depth=1 https://github.com/gtxaspec/libaudioshim
cd libaudioshim
make CC="${PRUDYNT_CROSS}gcc" -j$(nproc)
cp libaudioshim.* ../install/lib/
fi
cd $TOP

echo "Build faac"
cd 3rdparty
rm -rf faac
Expand Down
2 changes: 1 addition & 1 deletion buildroot_dev.sh
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ make distclean
time /usr/bin/make V=1 -j$(( $(nproc) + 1 )) \
ARCH= \
CROSS_COMPILE="$CCACHE_BIN $HOME_DIR/output/$PROFILE_NAME/per-package/prudynt-t/host/bin/mipsel-linux-" \
CFLAGS="-DPLATFORM_$PLAT $OPT_CMD -DALLOW_RTSP_SERVER_PORT_REUSE=1 -DNO_OPENSSL=1 \
CFLAGS="-DPLATFORM_$PLAT $OPT_CMD -DBINARY_HYBRID -DALLOW_RTSP_SERVER_PORT_REUSE=1 -DNO_OPENSSL=1 \
-I$HOME_DIR/output/$PROFILE_NAME/per-package/prudynt-t/host/mipsel-buildroot-linux-musl/sysroot/usr/include \
-I$HOME_DIR/output/$PROFILE_NAME/per-package/prudynt-t/host/mipsel-buildroot-linux-musl/sysroot/usr/include/libwebsockets \
-I$HOME_DIR/output/$PROFILE_NAME/per-package/prudynt-t/host/mipsel-buildroot-linux-musl/sysroot/usr/include/liveMedia \
Expand Down
9 changes: 4 additions & 5 deletions scripts/make_libwebsockets_deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -96,11 +96,10 @@ $STRIP ./lib/libwebsockets.so.19

mkdir -p ../../install/
mkdir -p ../../install/lib/
if [[ "$1" == "-static" ]]; then
cp ./lib/libwebsockets.a ../../install/lib/
else
cp ./lib/libwebsockets.so.19 ../../install/lib/libwebsockets.so
fi

cp ./lib/libwebsockets.a ../../install/lib/
cp ./lib/libwebsockets.so.19 ../../install/lib/libwebsockets.so

#cp -R ../include/libwebsockets ../../../include/
cp -R include/* ../../install/include/

Expand Down

0 comments on commit d102462

Please sign in to comment.