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.
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
#!/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"
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:
-G
)-H.
) as the source directorybuild
directory as the output directory (-Bbuild
)-DCMAKE_BUILD_TYPE=Release
)-DCMAKE_C_COMPILER=/usr/local/bin/gcc-9
)-DCMAKE_CXX_COMPILER=/usr/local/bin/g++-9
)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:
huffman.c
file using emcc-O1
)-s STANDALONE_WASM
)-s EXPORTED_FUNCTIONS
)-s EXPORT_NAME
)-o./code/xquakejs/lib/huffman.js
)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:
-L
option--log-file
)-v
)-g Quake3Arena
)options=send-empty-servers
)