diff --git a/CREDITS.md b/CREDITS.md index a6d83790..f78a587c 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -1709,5 +1709,6 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ### Template License License Here diff --git a/build_linux.sh b/build_linux.sh deleted file mode 100644 index 8cefd3c4..00000000 --- a/build_linux.sh +++ /dev/null @@ -1,695 +0,0 @@ -#!/usr/bin/env bash - -### make sure to cd to the emu src dir -required_files=( - "dll/dll.cpp" - "dll/steam_client.cpp" - "controller/gamepad.c" - "sdk/steam/isteamclient.h" -) - -for emu_file in "${required_files[@]}"; do - if [ ! -f "$emu_file" ]; then - echo "[X] Invalid emu directory, change directory to emu's src dir (missing file '$emu_file')" >&2 - exit 1 - fi -done - -BUILD_LIB32=0 -BUILD_LIB64=0 -BUILD_EXP_LIB32=0 -BUILD_EXP_LIB64=0 - -BUILD_CLIENT32=0 -BUILD_CLIENT64=0 -BUILD_EXPT_CLIENT32=0 -BUILD_EXPT_CLIENT64=0 -BUILD_TOOL_CLIENT_LDR=0 - -BUILD_TOOL_FIND_ITFS32=0 -BUILD_TOOL_FIND_ITFS64=0 -BUILD_TOOL_LOBBY32=0 -BUILD_TOOL_LOBBY64=0 - -BUILD_LIB_NET_SOCKETS_32=0 -BUILD_LIB_NET_SOCKETS_64=0 - -# < 0: deduce, > 1: force -PARALLEL_THREADS_OVERRIDE=-1 - -CMD_BUILD_STR='' - -# 0 = release, 1 = debug, otherwise error -BUILD_TYPE=-1 - -CLEAN_BUILD=0 - -VERBOSE=0 - -for (( i=1; i<=$#; i++ )); do - var="${!i}" - if [[ "$var" = "-j" ]]; then - i=$((i+1)) - PARALLEL_THREADS_OVERRIDE="${!i}" - [[ "$PARALLEL_THREADS_OVERRIDE" =~ ^[0-9]+$ ]] || { - echo "[X] Invalid arg after -j, expected a number" >&2; - exit 1; - } - #echo "[?] Overriding parralel build jobs count with $PARALLEL_THREADS_OVERRIDE" - elif [[ "$var" = "+build_str" ]]; then - i=$((i+1)) - CMD_BUILD_STR="${!i}" - [[ -z "$CMD_BUILD_STR" ]] && { - echo "[X] Expected a build string" >&2; - exit 1; - } - elif [[ "$var" = "+lib-32" ]]; then - BUILD_LIB32=1 - elif [[ "$var" = "+lib-64" ]]; then - BUILD_LIB64=1 - elif [[ "$var" = "+exp-lib-32" ]]; then - BUILD_EXP_LIB32=1 - elif [[ "$var" = "+exp-lib-64" ]]; then - BUILD_EXP_LIB64=1 - elif [[ "$var" = "+client-32" ]]; then - BUILD_CLIENT32=1 - elif [[ "$var" = "+client-64" ]]; then - BUILD_CLIENT64=1 - elif [[ "$var" = "+exp-client-32" ]]; then - BUILD_EXPT_CLIENT32=1 - elif [[ "$var" = "+exp-client-64" ]]; then - BUILD_EXPT_CLIENT64=1 - elif [[ "$var" = "+tool-clientldr" ]]; then - BUILD_TOOL_CLIENT_LDR=1 - elif [[ "$var" = "+tool-itf-32" ]]; then - BUILD_TOOL_FIND_ITFS32=1 - elif [[ "$var" = "+tool-itf-64" ]]; then - BUILD_TOOL_FIND_ITFS64=1 - elif [[ "$var" = "+tool-lobby-32" ]]; then - BUILD_TOOL_LOBBY32=1 - elif [[ "$var" = "+tool-lobby-64" ]]; then - BUILD_TOOL_LOBBY64=1 - elif [[ "$var" = "+lib-netsockets-32" ]]; then - BUILD_LIB_NET_SOCKETS_32=1 - elif [[ "$var" = "+lib-netsockets-64" ]]; then - BUILD_LIB_NET_SOCKETS_64=1 - elif [[ "$var" = "-verbose" ]]; then - VERBOSE=1 - elif [[ "$var" = "clean" ]]; then - CLEAN_BUILD=1 - elif [[ "$var" = "release" ]]; then - BUILD_TYPE=0 - elif [[ "$var" = "debug" ]]; then - BUILD_TYPE=1 - else - echo "[X] Invalid arg: $var" >&2 - exit 1 - fi -done - -# use 70% -build_threads="$(( $(getconf _NPROCESSORS_ONLN 2>/dev/null || echo 0) * 70 / 100 ))" -[[ $PARALLEL_THREADS_OVERRIDE -gt 0 ]] && build_threads="$PARALLEL_THREADS_OVERRIDE" -[[ $build_threads -lt 1 ]] && build_threads=1 - -# build type -optimize_level="" -dbg_level="" -dbg_defs="" -linker_strip_dbg_symbols='' -build_folder="" -if [[ "$BUILD_TYPE" = "0" ]]; then - optimize_level="-O2" - dbg_level="-g0" - dbg_defs="-DEMU_RELEASE_BUILD -DNDEBUG" - linker_strip_dbg_symbols='-Wl,-S' - build_folder="release" -elif [[ "$BUILD_TYPE" = "1" ]]; then - optimize_level="-Og" - dbg_level="-g3" - dbg_defs="" - linker_strip_dbg_symbols="" - build_folder="debug" -else - echo "[X] You must specify any of: [release debug]" >&2 - exit 1 -fi - -build_root_dir="build/linux/$build_folder" -build_root_32="$build_root_dir/x32" -build_root_64="$build_root_dir/x64" -build_root_experimental="$build_root_dir/experimental" -build_root_tools="$build_root_dir/tools" - -# common stuff -deps_dir="build/deps/linux" -libs_dir="libs" -tools_dir='tools' -build_temp_dir="build/tmp/linux" -protoc_out_dir="dll/proto_gen/linux" -third_party_dir="third-party" -third_party_build_dir="$third_party_dir/build/linux" - -protoc_exe_32="$deps_dir/protobuf/install32/bin/protoc" -protoc_exe_64="$deps_dir/protobuf/install64/bin/protoc" - -parallel_exe="$third_party_build_dir/rush/rush" - -# https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html -common_compiler_args="-std=c++17 -fvisibility=hidden -fexceptions -fno-jump-tables -fno-char8_t" - -# third party dependencies (include folder + folder containing .a file) -ssq_inc="$deps_dir/libssq/include" -ssq_lib32="$deps_dir/libssq/build32" -ssq_lib64="$deps_dir/libssq/build64" - -curl_inc32="$deps_dir/curl/install32/include" -curl_inc64="$deps_dir/curl/install64/include" -curl_lib32="$deps_dir/curl/install32/lib" -curl_lib64="$deps_dir/curl/install64/lib" - -protob_inc32="$deps_dir/protobuf/install32/include" -protob_inc64="$deps_dir/protobuf/install64/include" -protob_lib32="$deps_dir/protobuf/install32/lib" -protob_lib64="$deps_dir/protobuf/install64/lib" - -zlib_inc32="$deps_dir/zlib/install32/include" -zlib_inc64="$deps_dir/zlib/install64/include" -zlib_lib32="$deps_dir/zlib/install32/lib" -zlib_lib64="$deps_dir/zlib/install64/lib" - -mbedtls_inc32="$deps_dir/mbedtls/install32/include" -mbedtls_inc64="$deps_dir/mbedtls/install64/include" -mbedtls_lib32="$deps_dir/mbedtls/install32/lib" -mbedtls_lib64="$deps_dir/mbedtls/install64/lib" - -overlay_inc32="$deps_dir/ingame_overlay/install32/include" -overlay_inc64="$deps_dir/ingame_overlay/install64/include" -overlay_lib32="$deps_dir/ingame_overlay/install32/lib" -overlay_sys_lib32="$deps_dir/ingame_overlay/deps/System/install32/lib" -overlay_detour_lib32="$deps_dir/ingame_overlay/deps/mini_detour/install32/lib" -overlay_lib64="$deps_dir/ingame_overlay/install64/lib" -overlay_sys_lib64="$deps_dir/ingame_overlay/deps/System/install64/lib" -overlay_detour_lib64="$deps_dir/ingame_overlay/deps/mini_detour/install64/lib" - -# directories to use for #include -release_incs_both=( - "$ssq_inc" - "$libs_dir" - "$protoc_out_dir" - "$libs_dir/utfcpp" - "controller" - "dll" - "sdk" - "overlay_experimental" - "crash_printer" - "helpers" -) -release_incs32=( - "${release_incs_both[@]}" - "$curl_inc32" - "$protob_inc32" - "$zlib_inc32" - "$mbedtls_inc32" -) -release_incs64=( - "${release_incs_both[@]}" - "$curl_inc64" - "$protob_inc64" - "$zlib_inc64" - "$mbedtls_inc64" -) - -# directories where libraries (.a or .so) will be looked up -release_libs_dir32=( - "$ssq_lib32" - "$curl_lib32" - "$protob_lib32" - "$zlib_lib32" - "$mbedtls_lib32" - - "$overlay_lib32" - "$overlay_sys_lib32" - "$overlay_detour_lib32" -) -release_libs_dir64=( - "$ssq_lib64" - "$curl_lib64" - "$protob_lib64" - "$zlib_lib64" - "$mbedtls_lib64" - - "$overlay_lib64" - "$overlay_sys_lib64" - "$overlay_detour_lib64" -) - -# libraries to link with, either static ".a" or dynamic ".so" (name only) -# if it's called libXYZ.a, then only write "XYZ" -# for static libs make sure to build a PIC lib -# each will be prefixed with -l, ex: -lpthread -release_libs=( - "pthread" - "dl" - "ssq" - "z" # libz library - "curl" - "protobuf-lite" - "mbedcrypto" -) - -# common source files used everywhere, just for convinience, you still have to provide a complete list later -release_src=( - "dll/*.cpp" - "$protoc_out_dir/*.cc" - "crash_printer/linux.cpp" - "helpers/common_helpers.cpp" -) - -emu_build_string="$CMD_BUILD_STR" -[[ -z "$emu_build_string" ]] && { - emu_build_string="$(date +'%m%d%Y-%H%M')" -} - -# https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html -# additional #defines -common_defs="-DGNUC -DUTF_CPP_CPLUSPLUS=201703L -DCURL_STATICLIB -D'EMU_BUILD_STRING=$emu_build_string'" -release_defs="$dbg_defs $common_defs" - -# errors to ignore during build -release_ignore_warn="-Wno-switch" - -[ ! -d "$deps_dir" ] && { - echo "[X] Dependencies dir \"$deps_dir\" was not found" >&2; - exit 1; -} - -[ ! -f "$protoc_exe_32" ] && { - echo "[X] protobuff compiler wasn't found - 32" >&2; - exit 1; -} - -[ ! -f "$protoc_exe_64" ] && { - echo "[X] protobuff compiler wasn't found - 64" >&2; - exit 1; -} - -[ ! -f "$parallel_exe" ] && { - echo "[X] tool to run parallel compilation jobs '$parallel_exe' wasn't found" >&2; - exit 1; -} - -chmod 777 "$parallel_exe" - -echo "[?] All build operations will use $build_threads parallel jobs" - -last_code=0 - -empty_arr=() - -function build_for () { - - local is_32_build=$( [[ "$1" != 0 ]] && { echo 1; } || { echo 0; } ) - local is_exe=$( [[ "$2" != 0 ]] && { echo 1; } || { echo 0; } ) - local out_filepath="${3:?'missing output filepath'}" - local -n all_src=$4 - local -n extra_inc_dirs=$5 - local extra_defs="$6" - local -n extra_libs=$7 - - [[ "${#all_src[@]}" = "0" ]] && { - echo [X] "No source files specified" >&2; - return 1; - } - - # https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html - local cpiler_m32='' - [[ $is_32_build = 1 ]] && cpiler_m32='-m32' - - # https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html - local cpiler_pic_pie='-fPIC' - [[ $is_exe = 1 ]] && cpiler_pic_pie='-fPIE' - - # https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html - # https://www.baeldung.com/linux/library-convert-static-to-shared - local linker_pic_pie='-shared' - [[ $is_exe = 1 ]] && linker_pic_pie='-pie' - - local tmp_work_dir="${out_filepath##*/}" - tmp_work_dir="$build_temp_dir/${tmp_work_dir%.*}_$is_32_build" - echo " -- Cleaning compilation directory '$tmp_work_dir/'" - rm -f -r "$tmp_work_dir" - mkdir -p "$tmp_work_dir" || { - echo [X] "Failed to create compilation directory" >&2; - return 1; - } - - local build_cmds=() - local -A objs_dirs=() - for src_file in $( echo "${all_src[@]}" ); do - [[ -f "$src_file" ]] || { - echo "[X] source file "$src_file" wasn't found" >&2; - return 1; - } - - # https://stackoverflow.com/a/9559024 - local obj_dir=$( [[ -d "${src_file%/*}" ]] && echo "${src_file%/*}" || echo '.' ) - obj_dir="$tmp_work_dir/$obj_dir" - - local obj_name="${src_file##*/}" - obj_name="${obj_name%.*}.o" - - build_cmds+=("$src_file<>$obj_dir/$obj_name") - objs_dirs["$obj_dir"]="$obj_dir" - - mkdir -p "$obj_dir" - done - - [[ "${#build_cmds[@]}" = "0" ]] && { - echo [X] "No valid source files were found" >&2; - return 1; - } - - local target_incs=() - local target_libs_dirs=() - if [[ $is_32_build = 1 ]]; then - target_incs=("${release_incs32[@]}") - target_libs_dirs=("${release_libs_dir32[@]}") - else - target_incs=("${release_incs64[@]}") - target_libs_dirs=("${release_libs_dir64[@]}") - fi - target_incs=( - "${target_incs[@]}" - "${extra_inc_dirs[@]}" - ) - # wrap each -ImyIncDir with single quotes -> '-ImyIncDir' - target_incs=("${target_incs[@]/#/\'-I}") - target_incs=("${target_incs[@]/%/\'}") - - echo " -- Compiling object files with $build_threads parallel jobs inside directory '$tmp_work_dir/'" - local build_cmd="clang++ -c -x c++ $common_compiler_args $cpiler_pic_pie $cpiler_m32 $optimize_level $dbg_level $release_ignore_warn $release_defs $extra_defs ${target_incs[@]} '{1}' '-o{2}'" - - if [[ $VERBOSE = 1 ]]; then - printf '%s\n' "${build_cmds[@]}" | "$parallel_exe" --dry-run -j$build_threads -d '<>' -k "$build_cmd" - echo; - fi - - printf '%s\n' "${build_cmds[@]}" | "$parallel_exe" -j$build_threads -d '<>' -k "$build_cmd" - exit_code=$? - echo " -- Exit code = $exit_code" - echo; echo; - sleep 1 - [[ $exit_code = 0 ]] || { - rm -f -r "$tmp_work_dir"; - sleep 1 - return $exit_code; - } - - echo " -- Linking all object files from '$tmp_work_dir/' to produce '$out_filepath'" - local obj_files=() - for obj_file in $(echo "${objs_dirs[@]/%//*.o}" ); do - [[ -f "$obj_file" ]] && obj_files+=("$obj_file") - done - # if no files were added - [[ "${#obj_files[@]}" -gt 0 ]] || { - echo "[X] No files to link" >&2; - return 1; - } - - local out_dir="${out_filepath%/*}" - [[ "$out_dir" = "$out_filepath" ]] && out_dir='.' - mkdir -p "$out_dir" - - local target_libs=( - "${release_libs[@]}" - "${extra_libs[@]}" - ) - - # https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/developer_guide/gcc-using-libraries#gcc-using-libraries_using-both-static-dynamic-library-gcc - # https://linux.die.net/man/1/ld - if [[ $VERBOSE = 1 ]]; then - echo "clang++ $common_compiler_args $cpiler_pic_pie $cpiler_m32 $optimize_level $dbg_level $linker_pic_pie $linker_strip_dbg_symbols -o" "$out_filepath" "${obj_files[@]}" "${target_libs_dirs[@]/#/-L}" "-Wl,--whole-archive -Wl,-Bstatic" "${target_libs[@]/#/-l}" "-Wl,-Bdynamic -Wl,--no-whole-archive -Wl,--exclude-libs,ALL" - echo; - fi - - clang++ $common_compiler_args $cpiler_pic_pie $cpiler_m32 $optimize_level $dbg_level $linker_pic_pie $linker_strip_dbg_symbols -o "$out_filepath" "${obj_files[@]}" "${target_libs_dirs[@]/#/-L}" -Wl,--whole-archive -Wl,-Bstatic "${target_libs[@]/#/-l}" -Wl,-Bdynamic -Wl,--no-whole-archive -Wl,--exclude-libs,ALL - exit_code=$? - echo " -- Exit code = $exit_code" - echo; echo; - rm -f -r "$tmp_work_dir" - sleep 1 - return $exit_code - -} - -function cleanup () { - rm -f -r "$build_temp_dir" -} - -if [[ "$CLEAN_BUILD" = "1" ]]; then - echo // cleaning previous build - [[ -d "$build_root_dir" ]] && rm -f -r "$build_root_dir" - echo; echo; -fi - - -## tools -if [[ "$BUILD_TOOL_CLIENT_LDR" = "1" ]]; then - [[ -d "$build_root_tools/steamclient_loader/" ]] || mkdir -p "$build_root_tools/steamclient_loader/" - cp -f "$tools_dir"/steamclient_loader/linux/* "$build_root_tools/steamclient_loader/" - echo; echo; -fi - - -### x32 build -cleanup - -echo // invoking protobuf compiler - 32 -rm -f -r "$protoc_out_dir" -mkdir -p "$protoc_out_dir" -"$protoc_exe_32" ./dll/*.proto -I./dll/ --cpp_out="$protoc_out_dir/" -last_code=$((last_code + $?)) -echo; echo; - - -if [[ "$BUILD_LIB32" = "1" ]]; then - echo // building shared lib libsteam_api.so - 32 - all_src_files=( - "${release_src[@]}" - "controller/*.c" - ) - build_for 1 0 "$build_root_32/libsteam_api.so" all_src_files empty_arr '-DCONTROLLER_SUPPORT' empty_arr - last_code=$((last_code + $?)) -fi - -if [[ "$BUILD_CLIENT32" = "1" ]]; then - echo // building shared lib steamclient.so - 32 - all_src_files=( - "${release_src[@]}" - "controller/*.c" - ) - build_for 1 0 "$build_root_32/steamclient.so" all_src_files empty_arr '-DCONTROLLER_SUPPORT -DSTEAMCLIENT_DLL' empty_arr - last_code=$((last_code + $?)) -fi - -if [[ "$BUILD_EXP_LIB32" = "1" ]]; then - echo // building shared lib experimental libsteam_api.so - 32 - all_src_files=( - "${release_src[@]}" - "controller/*.c" - "overlay_experimental/*.cpp" - ) - extra_incs=( - "$overlay_inc32" - ) - extra_link_libs=( - "ingame_overlay" - "system" # ingame_overlay dependency - "mini_detour" # ingame_overlay dependency - ) - build_for 1 0 "$build_root_experimental/x32/libsteam_api.so" all_src_files extra_incs '-DCONTROLLER_SUPPORT -DEMU_OVERLAY -DImTextureID=ImU64' extra_link_libs - last_code=$((last_code + $?)) -fi - -if [[ "$BUILD_EXPT_CLIENT32" = "1" ]]; then - echo // building shared lib experimental steamclient.so - 32 - all_src_files=( - "${release_src[@]}" - "controller/*.c" - "overlay_experimental/*.cpp" - ) - extra_incs=( - "$overlay_inc32" - ) - extra_link_libs=( - "ingame_overlay" - "system" # ingame_overlay dependency - "mini_detour" # ingame_overlay dependency - ) - build_for 1 0 "$build_root_experimental/x32/steamclient.so" all_src_files extra_incs '-DCONTROLLER_SUPPORT -DSTEAMCLIENT_DLL -DEMU_OVERLAY -DImTextureID=ImU64' extra_link_libs - last_code=$((last_code + $?)) -fi - -if [[ "$BUILD_TOOL_LOBBY32" = "1" ]]; then - echo // building executable lobby_connect_x32 - 32 - all_src_files=( - "${release_src[@]}" - "$tools_dir/lobby_connect/lobby_connect.cpp" - ) - build_for 1 1 "$build_root_tools/lobby_connect/lobby_connect_x32" all_src_files empty_arr '-DNO_DISK_WRITES -DLOBBY_CONNECT' empty_arr - last_code=$((last_code + $?)) -fi - -if [[ "$BUILD_TOOL_FIND_ITFS32" = "1" ]]; then - echo // building executable generate_interfaces_file_x32 - 32 - all_src_files=( - "$tools_dir/generate_interfaces/generate_interfaces.cpp" - ) - build_for 1 1 "$build_root_tools/find_interfaces/generate_interfaces_file_x32" all_src_files empty_arr '' empty_arr - last_code=$((last_code + $?)) -fi - -if [[ "$BUILD_LIB_NET_SOCKETS_32" = "1" ]]; then - echo // building shared lib steamnetworkingsockets.so - 32 - all_src_files=( - "networking_sockets_lib/steamnetworkingsockets.cpp" - ) - build_for 1 0 "$build_root_dir/networking_sockets_lib/steamnetworkingsockets.so" all_src_files empty_arr '' empty_arr - last_code=$((last_code + $?)) -fi - - -### x64 build -cleanup - -echo // invoking protobuf compiler - 64 -rm -f -r "$protoc_out_dir" -mkdir -p "$protoc_out_dir" -"$protoc_exe_64" ./dll/*.proto -I./dll/ --cpp_out="$protoc_out_dir/" -last_code=$((last_code + $?)) -echo; echo; - -if [[ "$BUILD_LIB64" = "1" ]]; then - echo // building shared lib libsteam_api.so - 64 - all_src_files=( - "${release_src[@]}" - "controller/*.c" - ) - build_for 0 0 "$build_root_64/libsteam_api.so" all_src_files empty_arr '-DCONTROLLER_SUPPORT' empty_arr - last_code=$((last_code + $?)) -fi - -if [[ "$BUILD_CLIENT64" = "1" ]]; then - echo // building shared lib steamclient.so - 64 - all_src_files=( - "${release_src[@]}" - "controller/*.c" - ) - build_for 0 0 "$build_root_64/steamclient.so" all_src_files empty_arr '-DCONTROLLER_SUPPORT -DSTEAMCLIENT_DLL' empty_arr - last_code=$((last_code + $?)) -fi - -if [[ "$BUILD_EXP_LIB64" = "1" ]]; then - echo // building shared lib experimental libsteam_api.so - 64 - all_src_files=( - "${release_src[@]}" - "controller/*.c" - "overlay_experimental/*.cpp" - ) - extra_incs=( - "$overlay_inc64" - ) - extra_link_libs=( - "ingame_overlay" - "system" # ingame_overlay dependency - "mini_detour" # ingame_overlay dependency - ) - build_for 0 0 "$build_root_experimental/x64/libsteam_api.so" all_src_files extra_incs '-DCONTROLLER_SUPPORT -DEMU_OVERLAY -DImTextureID=ImU64' extra_link_libs - last_code=$((last_code + $?)) -fi - -if [[ "$BUILD_EXPT_CLIENT64" = "1" ]]; then - echo // building shared lib experimental steamclient.so - 64 - all_src_files=( - "${release_src[@]}" - "controller/*.c" - "overlay_experimental/*.cpp" - ) - extra_incs=( - "$overlay_inc64" - ) - extra_link_libs=( - "ingame_overlay" - "system" # ingame_overlay dependency - "mini_detour" # ingame_overlay dependency - ) - build_for 0 0 "$build_root_experimental/x64/steamclient.so" all_src_files extra_incs '-DCONTROLLER_SUPPORT -DSTEAMCLIENT_DLL -DEMU_OVERLAY -DImTextureID=ImU64' extra_link_libs - last_code=$((last_code + $?)) -fi - -if [[ "$BUILD_TOOL_LOBBY64" = "1" ]]; then - echo // building executable lobby_connect_x64 - 64 - all_src_files=( - "${release_src[@]}" - "$tools_dir/lobby_connect/lobby_connect.cpp" - ) - build_for 0 1 "$build_root_tools/lobby_connect/lobby_connect_x64" all_src_files empty_arr '-DNO_DISK_WRITES -DLOBBY_CONNECT' empty_arr - last_code=$((last_code + $?)) -fi - -if [[ "$BUILD_TOOL_FIND_ITFS64" = "1" ]]; then - echo // building executable generate_interfaces_file_x64 - 64 - all_src_files=( - "$tools_dir/generate_interfaces/generate_interfaces.cpp" - ) - build_for 0 1 "$build_root_tools/find_interfaces/generate_interfaces_file_x64" all_src_files empty_arr '' empty_arr - last_code=$((last_code + $?)) -fi - -if [[ "$BUILD_LIB_NET_SOCKETS_64" = "1" ]]; then - echo // building shared lib steamnetworkingsockets64.so - 64 - all_src_files=( - "networking_sockets_lib/steamnetworkingsockets.cpp" - ) - build_for 0 0 "$build_root_dir/networking_sockets_lib/steamnetworkingsockets64.so" all_src_files empty_arr '' empty_arr - last_code=$((last_code + $?)) -fi - - -# cleanup -cleanup - - -# copy configs + examples -if [[ $last_code = 0 ]]; then - echo "// copying readmes + files examples" - mkdir -p "$build_root_dir/" - cp -f -r "post_build/steam_settings.EXAMPLE/" "$build_root_dir/" - cp -f "post_build/README.release.md" "$build_root_dir/" - cp -f "CHANGELOG.md" "$build_root_dir/" - if [[ $BUILD_TYPE = 1 ]]; then - cp -f "post_build/README.debug.md" "$build_root_dir/" - fi - if [[ -d "$build_root_tools/find_interfaces" ]]; then - mkdir -p "$build_root_tools/find_interfaces/" - cp -f "post_build/README.find_interfaces.md" "$build_root_tools/find_interfaces/" - fi - if [[ -d "$build_root_tools/lobby_connect" ]]; then - mkdir -p "$build_root_tools/lobby_connect/" - cp -f "post_build/README.lobby_connect.md" "$build_root_tools/lobby_connect/" - fi -else - echo "[X] Not copying readmes or files examples due to previous errors" >&2 -fi -echo; echo; - - -echo; -if [[ $last_code = 0 ]]; then - echo "[GG] no failures" -else - echo "[XX] general failure" >&2 -fi - -exit $last_code diff --git a/pre_make_more.lua b/pre_make_more.lua deleted file mode 100644 index 51afe10b..00000000 --- a/pre_make_more.lua +++ /dev/null @@ -1,302 +0,0 @@ --- Project SteamClient -project "SteamClient" - cppdialect("c++17") - kind "SharedLib" - language "C++" - targetdir "bin/SteamClient/%{cfg.buildcfg}_%{cfg.platform}" - location "GBE_Build/SteamClient" - staticruntime "on" - - optimize "On" - symbols "Off" - - -- BASIC FOR WINDOWS - filter "options:os=windows" - buildoptions { - "/permissive-", "/MP", "/DYNAMICBASE", - "/utf-8", "/Zc:char8_t-", "/EHsc", "/GL-" - } - linkoptions { - "/NOLOGO", "/emittoolversioninfo:no" - } - defines { "STEAMCLIENT_DLL","EMU_EXPERIMENTAL_BUILD" } - - -- BASIC FOR LINUX - filter "options:os=linux" - files { - default_files, - predefined_libs, - crash_linux, - "controller/**" - } - buildoptions { - "-fvisibility=hidden", "-fexceptions", "-fno-jump-tables", "-fno-char8_t" - } - links { - linux_link, - overlay_link_linux - } - defines { - "UTF_CPP_CPLUSPLUS=201703L", "CURL_STATICLIB", "GNUC", "NDEBUG", - "CONTROLLER_SUPPORT", "ImTextureID=ImU64", "STEAMCLIENT_DLL" - } - - filter { "*Debug", "options:os=linux"} - defines { - "UTF_CPP_CPLUSPLUS=201703L", "CURL_STATICLIB", "GNUC", "DEBUG", - "EMU_RELEASE_BUILD", "CONTROLLER_SUPPORT", "ImTextureID=ImU64", "STEAMCLIENT_DLL" - } - - -- SET ARCH - filter "platforms:x32" - targetname "steamclient" - architecture "x86" - - filter "platforms:x64" - targetname "steamclient64" - architecture "x86_64" - - -- WIN 32 DEFAULTS - filter { "platforms:x32", "options:os=windows" } - files { - "steamclient/**", - "resources/win/client/32/resources.rc" - } - - -- WIN 64 DEFAULTS - filter { "platforms:x64", "options:os=windows" } - files { - "steamclient/**", - "resources/win/client/64/resources.rc" - } - - -- WIN X32 EXP - filter { "Experimental**", "options:os=windows", "platforms:x32" } - files { - default_files, - "libs/**", - crash_win, - "controller/**", - "overlay_experimental/**", - "resources/win/client/32/resources.rc" - } - links { - win_link, - default_link, - overlay_link_windows - } - libdirs { - basic_dir_win .. "libssq/build32/Release", - basic_dir_win .. "curl/install32/lib", - basic_dir_win .. "protobuf/install32/lib", - basic_dir_win .. "zlib/install32/lib", - basic_dir_win .. "mbedtls/install32/lib", - basic_dir_win .. "ingame_overlay/install32/lib", - basic_dir_win .. "ingame_overlay/deps/System/install32/lib", - basic_dir_win .. "ingame_overlay/deps/mini_detour/install32/lib" - } - includedirs { - default_include, - "dll/proto_gen/win", - basic_dir_win .. "libssq/include", - basic_dir_win .. "curl/install32/include", - basic_dir_win .. "protobuf/install32/include", - basic_dir_win .. "zlib/install32/include", - basic_dir_win .. "mbedtls/install32/include", - basic_dir_win .. "ingame_overlay/install32/include", - basic_dir_win .. "ingame_overlay/deps/System/install32/include", - basic_dir_win .. "ingame_overlay/deps/mini_detour/install32/include" - } - removefiles { "steamclient/**" } - removefiles { "libs/detours/uimports.cc" } - - -- WIN X64 EXP - filter { "Experimental**", "options:os=windows", "platforms:x64" } - files { - default_files, - "libs/**", - crash_win, - "controller/**", - "overlay_experimental/**", - "resources/win/client/64/resources.rc" - } - links { - win_link, - default_link, - overlay_link_windows - } - libdirs { - basic_dir_win .. "libssq/build64/Release", - basic_dir_win .. "curl/install64/lib", - basic_dir_win .. "protobuf/install64/lib", - basic_dir_win .. "zlib/install64/lib", - basic_dir_win .. "mbedtls/install64/lib", - basic_dir_win .. "ingame_overlay/install64/lib", - basic_dir_win .. "ingame_overlay/deps/System/install64/lib", - basic_dir_win .. "ingame_overlay/deps/mini_detour/install64/lib" - } - includedirs { - default_include, - "dll/proto_gen/win", - basic_dir_win .. "libssq/include", - basic_dir_win .. "curl/install64/include", - basic_dir_win .. "protobuf/install64/include", - basic_dir_win .. "zlib/install64/include", - basic_dir_win .. "mbedtls/install64/include", - basic_dir_win .. "ingame_overlay/install64/include", - basic_dir_win .. "ingame_overlay/deps/System/install64/include", - basic_dir_win .. "ingame_overlay/deps/mini_detour/install64/include" - } - removefiles { "steamclient/**" } - removefiles { "libs/detours/uimports.cc" } - - -- ExperimentalDebug WINDOWS - filter { "ExperimentalDebug", "options:os=windows" } - defines { - "DEBUG", "EMU_EXPERIMENTAL_BUILD", "CONTROLLER_SUPPORT", "EMU_OVERLAY", "ImTextureID=ImU64", - "UTF_CPP_CPLUSPLUS=201703L", "CURL_STATICLIB", "UNICODE", "_UNICODE", "_CRT_SECURE_NO_WARNINGS", "STEAMCLIENT_DLL" - } - - -- ExperimentalRelease WINDOWS - filter { "ExperimentalRelease", "options:os=windows" } - defines { - "NDEBUG", "EMU_RELEASE_BUILD", "EMU_EXPERIMENTAL_BUILD", "CONTROLLER_SUPPORT", "EMU_OVERLAY", "ImTextureID=ImU64", - "UTF_CPP_CPLUSPLUS=201703L", "CURL_STATICLIB", "UNICODE", "_UNICODE", "_CRT_SECURE_NO_WARNINGS", "STEAMCLIENT_DLL" - } - - -- ExperimentalDebug LINUX - filter { "ExperimentalDebug", "options:os=linux" } - files { - default_files, - predefined_libs, - crash_linux, - "controller/**", - "overlay_experimental/**" - } - defines { - "UTF_CPP_CPLUSPLUS=201703L", "CURL_STATICLIB", "GNUC", "DEBUG", "EMU_RELEASE_BUILD", - "CONTROLLER_SUPPORT", "EMU_OVERLAY", "ImTextureID=ImU64", "STEAMCLIENT_DLL" - } - - - -- ExperimentalRelease LINUX - filter { "ExperimentalRelease", "options:os=linux" } - files { - default_files, - predefined_libs, - crash_linux, - "controller/**", - "overlay_experimental/**" - } - defines { - "UTF_CPP_CPLUSPLUS=201703L", "CURL_STATICLIB", "GNUC", "NDEBUG", "EMU_RELEASE_BUILD", - "CONTROLLER_SUPPORT", "EMU_OVERLAY", "ImTextureID=ImU64", "STEAMCLIENT_DLL" - } - --- SteamClientExtra -if os.target() == "windows" then -project "SteamClientExtra" - cppdialect("c++17") - kind "SharedLib" - language "C++" - targetdir "bin/SteamClientExtra/%{cfg.buildcfg}_%{cfg.platform}" - location "GBE_Build/SteamClientExtra" - staticruntime "on" - - optimize "On" - symbols "Off" - - buildoptions { - "/permissive-", "/MP4", "/DYNAMICBASE", "/utf-8", "/Zc:char8_t-", "/EHsc", "/GL-" - } - linkoptions { - "/emittoolversioninfo:no" - } - - links { - win_link, - "user32.lib" - } - - -- SET ARCH - filter "platforms:x32" - targetname "steamclient" - architecture "x86" - - filter "platforms:x64" - targetname "steamclient64" - architecture "x86_64" - - includedirs { - "helpers", - "libs", - "tools/steamclient_loader/win/extra_protection" - } - -- WIN 32 DEFAULTS - filter { "platforms:x32", "options:os=windows" } - files { - "helpers/**", - "libs/detours/**", - "resources/win/client/32/resources.rc", - "tools/steamclient_loader/win/**" - } - removefiles { "libs/detours/uimports.cc" } - - -- WIN 64 DEFAULTS - filter { "platforms:x64", "options:os=windows" } - files { - "helpers/**", - "libs/detours/**", - "resources/win/client/64/resources.rc", - "tools/steamclient_loader/win/**" - } - removefiles { "libs/detours/uimports.cc" } - -end --- End SteamClient + SteamClientExtra --- Project LobbyConnect -project "LobbyConnect" - cppdialect("c++17") - kind "ConsoleApp" - language "C++" - targetdir "bin/LobbyConnect/%{cfg.buildcfg}_%{cfg.platform}" - location "GBE_Build/LobbyConnect" - staticruntime "on" - --- TODO LOBBYCONNECT - - optimize "On" - symbols "Off" --- End LobbyConnect - --- Project GenerateInterfaces -project "GenerateInterfaces" - cppdialect("c++17") - kind "ConsoleApp" - language "C++" - targetdir "bin/GenerateInterfaces/%{cfg.buildcfg}_%{cfg.platform}" - location "GBE_Build/GenerateInterfaces" - targetname "GenerateInterfaces" - optimize "On" - symbols "Off" - - files { - "tools/generate_interfaces/**" - } --- End LobbyConnect - --- Project steamnetworkingsockets -project "steamnetworkingsockets" - cppdialect("c++17") - kind "ConsoleApp" - language "C++" - targetdir "bin/steamnetworkingsockets/%{cfg.buildcfg}_%{cfg.platform}" - location "GBE_Build/steamnetworkingsockets" - targetname "steamnetworkingsockets" - optimize "On" - symbols "Off" - - files { - "networking_sockets_lib/**" - } --- End LobbyConnect \ No newline at end of file