#!/bin/sh set -ex if [ -z "$MAKE" ]; then set +x echo "Error: you need to set \$MAKE before invoking, e.g. MAKE=make" exit 1 fi osmo-clean-workspace.sh verify_value_string_arrays_are_terminated.py # Validate enum fields in header are added to tlv_definition in source file (SYS#5891): verify_gsm0808_tlv_definition() { set +x; enums=$(grep "GSM0808_IE_" include/osmocom/gsm/protocol/gsm_08_08.h | grep "=" | awk '{ print $1 }') counted_enums=$(for f in $enums; do printf "%-60s %s\n" "$f" "$(grep -c "\[$f\]" src/gsm/gsm0808.c)"; done) missing_enums=$(echo "$counted_enums" | grep -v GSM0808_IE_RESERVED | grep "0$" || true) if [ "x$missing_enums" != "x" ]; then echo "Missing IEs in src/gsm/gsm0808.c!" echo "$missing_enums" exit 1 fi set -x; } verify_gsm0808_tlv_definition verify_gsm_08_05_tlv_definition() { set +x; enums=$(grep "RSL_IE_" include/osmocom/gsm/protocol/gsm_08_58.h | grep -e "=" -e ",$" | awk '{ print $1 }' | tr -d ',') counted_enums=$(for f in $enums; do printf "%-60s %s\n" "$f" "$(grep -c "\[$f\]" src/gsm/rsl.c)"; done) # TODO: Add RSL_IE_SIEMENS_* to the tlv struct definitions. missing_enums=$(echo "$counted_enums" | grep -v RSL_IE_SIEMENS |grep "0$" || true) if [ "x$missing_enums" != "x" ]; then echo "Missing IEs in src/gsm/rsl.c!" echo "$missing_enums" exit 1 fi set -x; } verify_gsm_08_05_tlv_definition # Verify config.h is included before any osmocom header or HAVE_*/LIBOSMOCORE_* # guard in src/core/*.c (required for LIBOSMOCORE_NO_LOGGING and feature guards). verify_config_h_order() { set +x; rc=0 for f in src/core/*.c; do case "$(basename "$f")" in crc*gen.c) continue ;; # generated files esac config_line=$(grep -n '#include "config.h"\|#include "\.\./config.h"' "$f" | head -1 | cut -d: -f1) dep_line=$(grep -n -E \ '^#[[:space:]]*(ifdef|ifndef)[[:space:]]+(HAVE_|LIBOSMOCORE_)|^#[[:space:]]*if[[:space:]].*(HAVE_|LIBOSMOCORE_)|^#include[[:space:]]+