// @BAKE gcc $@ -o $*.out $(pkg-config --cflags --libs tcl tk) #include #include #include #include #include // our button callback static int Tcl_baah(ClientData clientData, Tcl_Interp * interp, int argc, const char * * argv) { puts("BAAAAAAAH"); return TCL_OK; } static void tcl_run(void) { Tcl_Interp * interp = Tcl_CreateInterp(); Tcl_Init(interp); Tk_Init(interp); Tcl_CreateCommand(interp, "baah", Tcl_baah, (ClientData)NULL, (void (*)())NULL); /* if only it were past 2023 we could have #embed! * oh wait... */ int result = Tcl_EvalFile(interp, "button_help.tcl"); if (result == TCL_ERROR) { fprintf(stderr, "Tcl script execution failed: %s\n", Tcl_GetStringResult(interp)); exit(1); } Tk_MainLoop(); } signed main() { pthread_t tcl_thread; pthread_create(&tcl_thread, NULL, (void *(*)(void*))tcl_run, (void*)NULL); // whatever you want while (1) { ; } }