#!/usr/bin/env bash set -euo pipefail cd "$(dirname "$0")" if [[ "$#" -lt 2 || "$#" -gt 3 ]]; then echo "usage: $0 [relative-prefix]" >&2 exit 1 fi set_name=$1 append_name=$2 relative_prefix=${3:-} awk -v set_name="$set_name" -v append_name="$append_name" -v relative_prefix="$relative_prefix" ' $0 ~ "^[[:space:]]*set\\(" set_name "([[:space:]]|$)" { in_set = 1 next } in_set && /^[[:space:]]*\)/ { in_set = 0 next } $0 ~ "^[[:space:]]*list\\(APPEND " append_name "([[:space:]]|$)" { in_append = 1 next } in_append && /^[[:space:]]*\)/ { in_append = 0 next } in_set || in_append { line = $0 sub(/^[[:space:]]*/, "", line) sub(/[[:space:]]*$/, "", line) if (line == "") { next } sub(/^\$\{CMAKE_CURRENT_SOURCE_DIR\}\//, "core/", line) if (line !~ /^core\// && relative_prefix != "") { line = relative_prefix line } print line } ' core/CMakeLists.txt