quake 3 commands | Cell 13 | Cell 15 | Search

This document outlines three scripts: a CMake build script, an emcc compiler script, and a dpmaster script, which are used to build and compile various projects, including a C file and a Quake3Arena file. Each script utilizes specific flags and options to generate different output types, such as Unix Makefiles, WebAssembly code, and JavaScript files.

Cell 14

cmake -G "Unix Makefiles" -H. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/local/bin/gcc-9 -DCMAKE_CXX_COMPILER=/usr/local/bin/g++-9

./code/xquakejs/lib/emsdk/upstream/emscripten/emcc -O1 -s STANDALONE_WASM -s EXPORTED_FUNCTIONS="['_MSG_initHuffman', '_Huff_Decompress', '_Huff_Compress']" -s EXPORT_NAME="huffman" ./code/xquakejs/lib/huffman.c -o ./code/xquakejs/lib/huffman.js

./code/xquakejs/lib/emsdk/upstream/emscripten/emcc -O1 -s SAFE_HEAP=1 -s WASM=0 -s EXTRA_EXPORTED_RUNTIME_METHODS="['getValue', 'allocate']" -s EXPORTED_FUNCTIONS="['_MSG_initHuffman', '_Huff_Decompress', '_Huff_Compress', '_HuffmanGetSymbol']" -s EXPORT_NAME="huffman" ./code/xquakejs/lib/huffman.c -o ./code/xquakejs/lib/huffman.js

./dpmaster -L --log-file /Users/briancullinan/Downloads/dpmaster-2.2/dpmaster.log -v -g Quake3Arena options=send-empty-servers

What the code could have been:

#!/bin/bash

# Set up build environment
BUILD_DIR="build"
CMAKE_BUILD_TYPE="Release"
C_COMPILER="/usr/local/bin/gcc-9"
CXX_COMPILER="/usr/local/bin/g++-9"

# Create build directory and set up CMake
mkdir -p "$BUILD_DIR"
cmake \
  -G "Unix Makefiles" \
  -H. \
  -B"$BUILD_DIR" \
  -DCMAKE_BUILD_TYPE="$CMAKE_BUILD_TYPE" \
  -DCMAKE_C_COMPILER="$C_COMPILER" \
  -DCMAKE_CXX_COMPILER="$CXX_COMPILER"

# Compile and link Huffman library
HUFFMAN_LIB_OUTPUT="./code/xquakejs/lib/huffman.js"
emcc \
  -O1 \
  -s STANDALONE_WASM \
  -s EXPORTED_FUNCTIONS="['_MSG_initHuffman', '_Huff_Decompress', '_Huff_Compress']" \
  -s EXPORT_NAME="huffman" \
 ./code/xquakejs/lib/huffman.c \
  -o "$HUFFMAN_LIB_OUTPUT"

# Compile and link Huffman library with additional flags
emcc \
  -O1 \
  -s SAFE_HEAP=1 \
  -s WASM=0 \
  -s EXTRA_EXPORTED_RUNTIME_METHODS="['getValue', 'allocate']" \
  -s EXPORTED_FUNCTIONS="['_MSG_initHuffman', '_Huff_Decompress', '_Huff_Compress', '_HuffmanGetSymbol']" \
  -s EXPORT_NAME="huffman" \
 ./code/xquakejs/lib/huffman.c \
  -o "$HUFFMAN_LIB_OUTPUT"

# Run DPMaster with options
DPMASTER_LOG_FILE="/Users/briancullinan/Downloads/dpmaster-2.2/dpmaster.log"
DPMASTER_OPTIONS="--send-empty-servers"

./dpmaster -L --log-file "$DPMASTER_LOG_FILE" -v -g Quake3Arena options="$DPMASTER_OPTIONS"

CMake Build Script

The first command is a CMake build script:

cmake -G "Unix Makefiles" -H. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/local/bin/gcc-9 -DCMAKE_CXX_COMPILER=/usr/local/bin/g++-9

This command:

emcc Compiler Script

The next two commands compile a C file using the emcc compiler from the Emscripten SDK:

./code/xquakejs/lib/emsdk/upstream/emscripten/emcc -O1 -s STANDALONE_WASM -s EXPORTED_FUNCTIONS="['_MSG_initHuffman', '_Huff_Decompress', '_Huff_Compress']" -s EXPORT_NAME="huffman"./code/xquakejs/lib/huffman.c -o./code/xquakejs/lib/huffman.js

./code/xquakejs/lib/emsdk/upstream/emscripten/emcc -O1 -s SAFE_HEAP=1 -s WASM=0 -s EXTRA_EXPORTED_RUNTIME_METHODS="['getValue', 'allocate']" -s EXPORTED_FUNCTIONS="['_MSG_initHuffman', '_Huff_Decompress', '_Huff_Compress', '_HuffmanGetSymbol']" -s EXPORT_NAME="huffman"./code/xquakejs/lib/huffman.c -o./code/xquakejs/lib/huffman.js

These commands:

dpmaster Script

The final command is a dpmaster script:

./dpmaster -L --log-file /Users/briancullinan/Downloads/dpmaster-2.2/dpmaster.log -v -g Quake3Arena options=send-empty-servers

This command: