From 1e3fb91822d3fc094b636ab2c1f1c59586eec186 Mon Sep 17 00:00:00 2001 From: "Ronald Joseph Legarski, Jr." <98552991+solveforceapp@users.noreply.github.com> Date: Fri, 27 Jun 2025 20:45:05 -0700 Subject: [PATCH] Improve build scripts and add clean target --- .github/workflows/c-cpp.yml | 12 ++++------ Build/libHttpClient.Linux/CMakeLists.txt | 2 -- Build/libHttpClient.Linux/curl_Linux.bash | 18 +++++++++++++-- .../libHttpClient_Linux.bash | 7 ++++++ Build/libHttpClient.Linux/openssl_Linux.bash | 23 +++++++++++++++---- Makefile | 6 +++++ 6 files changed, 52 insertions(+), 16 deletions(-) create mode 100644 Makefile diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 6a9c312e..1282f127 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -13,11 +13,7 @@ jobs: steps: - uses: actions/checkout@v4 - - name: configure - run: ./configure - - name: make - run: make - - name: make check - run: make check - - name: make distcheck - run: make distcheck + - name: Fetch submodules + run: git submodule update --init --recursive + - name: Build libHttpClient + run: bash Build/libHttpClient.Linux/libHttpClient_Linux.bash -c Release -sg diff --git a/Build/libHttpClient.Linux/CMakeLists.txt b/Build/libHttpClient.Linux/CMakeLists.txt index fd00de44..d8883cfa 100644 --- a/Build/libHttpClient.Linux/CMakeLists.txt +++ b/Build/libHttpClient.Linux/CMakeLists.txt @@ -4,8 +4,6 @@ get_filename_component(PATH_TO_ROOT "../.." ABSOLUTE) project("libHttpClient.Linux") -set(CMAKE_C_COMPILER clang) -set(CMAKE_CXX_COMPILER clang++) set(CMAKE_STATIC_LIBRARY_PREFIX "") set(CMAKE_SHARED_LIBRARY_PREFIX "") set(CMAKE_POSITION_INDEPENDENT_CODE ON) diff --git a/Build/libHttpClient.Linux/curl_Linux.bash b/Build/libHttpClient.Linux/curl_Linux.bash index ecf30432..c88a9ea2 100644 --- a/Build/libHttpClient.Linux/curl_Linux.bash +++ b/Build/libHttpClient.Linux/curl_Linux.bash @@ -22,7 +22,19 @@ while [[ $# -gt 0 ]]; do done pushd "$SCRIPT_DIR"/../../External/curl -autoreconf -fi "$SCRIPT_DIR"/../../External/curl + +if [ ! -f ./configure ]; then + if [ -f configure.ac ]; then + if command -v autoreconf >/dev/null 2>&1; then + autoreconf -fi + else + echo "autoreconf not found; skipping" + fi + else + echo "Missing cURL sources. Please run 'git submodule update --init --recursive'." + exit 1 + fi +fi if [ -f "$SCRIPT_DIR/../../Out/x64/$CONFIGURATION/libcurl.Linux/libcurl.a" ]; then echo "Previously-built library present at $SCRIPT_DIR/../../Out/x64/$CONFIGURATION/libcurl.Linux/libcurl.a - skipping build" @@ -45,5 +57,7 @@ make mkdir -p "$SCRIPT_DIR"/../../Out/x64/"$CONFIGURATION"/libcurl.Linux cp -R "$PWD"/lib/.libs/* "$SCRIPT_DIR"/../../Out/x64/"$CONFIGURATION"/libcurl.Linux -make clean +if [ -f Makefile ] && make -n clean >/dev/null 2>&1; then + make clean +fi popd diff --git a/Build/libHttpClient.Linux/libHttpClient_Linux.bash b/Build/libHttpClient.Linux/libHttpClient_Linux.bash index a51c48da..dd329ecc 100644 --- a/Build/libHttpClient.Linux/libHttpClient_Linux.bash +++ b/Build/libHttpClient.Linux/libHttpClient_Linux.bash @@ -12,6 +12,7 @@ CONFIGURATION="Release" BUILD_CURL=true BUILD_SSL=true BUILD_STATIC=false +DO_APTGET=true while [[ $# -gt 0 ]]; do case $1 in @@ -66,6 +67,12 @@ log "BUILD CURL = ${BUILD_CURL}" log "CMakeLists.txt = ${SCRIPT_DIR}" log "CMake output = ${SCRIPT_DIR}/../../Int/CMake/libHttpClient.Linux" +# Verify that required submodules are present +if [ ! -f "$SCRIPT_DIR/../../External/curl/configure.ac" ] || [ ! -f "$SCRIPT_DIR/../../External/openssl/Configure" ]; then + echo "Required submodules are missing. Please run 'git submodule update --init --recursive'." + exit 1 +fi + # make libcrypto and libssl if [ "$BUILD_SSL" = true ]; then log "Building SSL" diff --git a/Build/libHttpClient.Linux/openssl_Linux.bash b/Build/libHttpClient.Linux/openssl_Linux.bash index fafce0e9..8e0a377d 100644 --- a/Build/libHttpClient.Linux/openssl_Linux.bash +++ b/Build/libHttpClient.Linux/openssl_Linux.bash @@ -22,7 +22,10 @@ while [[ $# -gt 0 ]]; do esac done -sudo hwclock --hctosys +# Skip hwclock if not available +if command -v hwclock >/dev/null 2>&1; then + sudo hwclock --hctosys +fi sudo rm -rf /usr/local/ssl sudo mkdir /usr/local/ssl sudo mkdir /usr/local/ssl/lib @@ -50,7 +53,15 @@ else fi pushd $OPENSSL_SRC -make clean + +if [ ! -f ./Configure ]; then + echo "Missing OpenSSL sources. Please run 'git submodule update --init --recursive'." + exit 1 +fi + +if [ -f Makefile ] && make -n clean >/dev/null 2>&1; then + make clean +fi sed -i -e 's/\r$//' Configure if [ "$CONFIGURATION" = "Debug" ]; then @@ -62,7 +73,9 @@ else fi make CFLAGS="-fvisibility=hidden" CXXFLAGS="-fvisibility=hidden" -sudo make install +if make -n install >/dev/null 2>&1; then + sudo make install +fi # copies binaries to final directory mkdir -p "$SCRIPT_DIR"/../../Out/x64/"$CONFIGURATION"/libcrypto.Linux cp -R "$PWD"/libcrypto.a "$SCRIPT_DIR"/../../Out/x64/"$CONFIGURATION"/libcrypto.Linux @@ -70,5 +83,7 @@ cp -R "$PWD"/libcrypto.a "$SCRIPT_DIR"/../../Out/x64/"$CONFIGURATION"/libcrypto. mkdir -p "$SCRIPT_DIR"/../../Out/x64/"$CONFIGURATION"/libssl.Linux cp -R "$PWD"/libssl.a "$SCRIPT_DIR"/../../Out/x64/"$CONFIGURATION"/libssl.Linux -make clean +if [ -f Makefile ] && make -n clean >/dev/null 2>&1; then + make clean +fi popd diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..68de68bb --- /dev/null +++ b/Makefile @@ -0,0 +1,6 @@ +.PHONY: all clean +all: +@echo "Use build scripts under Build/ to compile" + +clean: +rm -rf Out Int