Index: .fossil-settings/ignore-glob ================================================================== --- .fossil-settings/ignore-glob +++ .fossil-settings/ignore-glob @@ -1,5 +1,6 @@ tuapi.so libtuapi.a tuapi.o tuapi.tcl.h pkgIndex.tcl +compile_commands.json Index: build-dyn.sh ================================================================== --- build-dyn.sh +++ build-dyn.sh @@ -1,6 +1,19 @@ -# /bin/bash +#! /usr/bin/env bash + +bashArrayToJSON() ( + args=("$@") + + jq -M -r -n -c --args '$ARGS.positional' --args -- "${args[@]}" +) + +bashStringToJSON() ( + string="$1" + + eval "tmpArray=($string)" + bashArrayToJSON "${tmpArray[@]}" +) # Perform common build options . ./build-common.sh # Compile using the same options as Tcl @@ -9,8 +22,34 @@ fi . "${TCLCONFIGSH}" echo "${TCL_CC} -ggdb3 -fPIC -DPIC -Wall -DUSE_TCL_STUBS=1 ${TCL_DEFS} ${TCL_INCLUDE_SPEC} -shared -rdynamic -o tuapi.so tuapi.c ${TCL_STUB_LIB_SPEC}" -eval ${TCL_CC} -ggdb3 -fPIC -DPIC -Wall -DUSE_TCL_STUBS=1 ${TCL_DEFS} ${TCL_INCLUDE_SPEC} -shared -rdynamic -o tuapi.so tuapi.c ${TCL_STUB_LIB_SPEC} + +cat << _EOF_ > compile_commands.json.new +[ + { + "directory": "$(pwd)", + "file": "tuapi.c", + "arguments": [ + "$(echo "${TCL_CC}" | sed 's@ @", "@g')", + "-ggdb3", + "-fPIC", + "-DPIC", + "-Wall", + "-DUSE_TCL_STUBS=1", + $(bashStringToJSON "${TCL_DEFS}" | sed 's@^\[@@;s@\]$@@'), + $(bashStringToJSON "${TCL_INCLUDE_SPEC}" | sed 's@^\[@@;s@\]$@@'), + "-shared", + "-rdynamic", + "-o", + "tuapi.so", + "tuapi.c" + ] + } +] +_EOF_ + +eval ${TCL_CC} -ggdb3 -fPIC -DPIC -Wall -DUSE_TCL_STUBS=1 ${TCL_DEFS} ${TCL_INCLUDE_SPEC} -shared -rdynamic -o tuapi.so tuapi.c ${TCL_STUB_LIB_SPEC} || exit 1 +mv compile_commands.json.new compile_commands.json echo 'package ifneeded tuapi '"${tuapi_version}"' [list load [file join $dir tuapi.so]]' > pkgIndex.tcl