diff --git a/magicbuild.sh b/magicbuild.sh index 137b612..77f7ce4 100755 --- a/magicbuild.sh +++ b/magicbuild.sh @@ -202,7 +202,7 @@ function build_arch() { upx "${ARCH_BUILD_DIR}/${EXECUTABLE_NAME}" mkdir -p "${OUTPUT_DIR}/${ARCH}" - cp "${ARCH_BUILD_DIR}/${EXECUTABLE_NAME}" "${OUTPUT_DIR}/${ARCH}/${EXECUTABLE_NAME}" + cp "${ARCH_BUILD_DIR}/${EXECUTABLE_NAME}" "${OUTPUT_DIR}/${EXECUTABLE_NAME}.${ARCH}" cd "${PREVDIR}" || exit 1 } @@ -221,7 +221,13 @@ function build() { exit 1 fi + # remove trailing slash from SOURCE_DIR SOURCE_DIR="$1" + SOURCE_DIR=$(echo "$SOURCE_DIR" | sed 's:/*$::') + + # make SOURCE_DIR absolute + SOURCE_DIR=$(realpath "$SOURCE_DIR") + BUILD_DIR="${SOURCE_DIR}/build" OUTPUT_DIR="${SOURCE_DIR}/output" diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 6693d32..a59bab8 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,8 +1,12 @@ cmake_minimum_required(VERSION 3.10) project(ipdemo VERSION 1.0.0 LANGUAGES CXX) -# Static build settings +# Force static linking globally set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static") +set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") +set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libraries" FORCE) +set(CMAKE_POSITION_INDEPENDENT_CODE OFF) +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static") set(ZLIB_USE_STATIC_LIBS "ON") @@ -10,6 +14,7 @@ set(CMAKE_CXX_STANDARD 23) set(CMAKE_C_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) +# Set default build type to Release if not specified if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build (Debug or Release)" FORCE) endif() @@ -34,7 +39,6 @@ configure_file( @ONLY ) - # Set CMAKE_MODULE_PATH to include our custom find modules set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) @@ -42,8 +46,16 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) file(GLOB_RECURSE SOURCES "src/*.cpp") file(GLOB_RECURSE HEADERS "src/*.hpp") +# Add custom target to run cmake_prebuild.sh at the start of the build process +add_custom_target(run_prebuild_script ALL + COMMAND ${CMAKE_COMMAND} -E echo "Running cmake_prebuild.sh..." + COMMAND ${CMAKE_COMMAND} -E env bash ${CMAKE_CURRENT_SOURCE_DIR}/cmake_prebuild.sh + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +) + # Add executable add_executable(ipdemo ${SOURCES}) +add_dependencies(ipdemo run_prebuild_script) # Set include directories # build dir goes first so that we can use the generated version.hpp @@ -88,3 +100,9 @@ target_link_libraries(ipdemo PRIVATE set_target_properties(ipdemo PROPERTIES LINK_FLAGS "-static" ) + +# Install targets +install(TARGETS ipdemo + RUNTIME DESTINATION $ENV{HOME}/.local/bin +) + diff --git a/test/cmake_prebuild.sh b/test/cmake_prebuild.sh new file mode 100644 index 0000000..62b287c --- /dev/null +++ b/test/cmake_prebuild.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +echo "cmake_prebuild.sh complete." diff --git a/test/src/main.cpp b/test/src/main.cpp index 1eb4759..e32ddf1 100644 --- a/test/src/main.cpp +++ b/test/src/main.cpp @@ -3,8 +3,8 @@ #include #include -#include "httplib.h" -#include "autogen/version.hpp" +#include "httplib.hpp" +#include "version.hpp" int main() { std::cout << "Retrieving IP address..." << std::endl;