From 1a76f8946417ccd16bfcf422c7e37cd28d14cfe1 Mon Sep 17 00:00:00 2001 From: stefan schippers Date: Sun, 18 Dec 2022 13:03:38 +0100 Subject: [PATCH] added xschem_library/generators directory for future schematic/symbol generator scripts. Handle empty XSCHEM_LIBRARY_PATH (use [pwd]). --- XSchemWin/README_WIN | 3 ++- XSchemWin/XSchemWix/xschemrc | 6 +++++- scconfig/hooks.c | 5 +++++ src/save.c | 2 +- src/xinit.c | 22 +++++++++++++--------- src/xschem.tcl | 3 ++- src/xschemrc | 4 ++++ xschem_library/Makefile | 5 ++++- 8 files changed, 36 insertions(+), 14 deletions(-) diff --git a/XSchemWin/README_WIN b/XSchemWin/README_WIN index 3d0fab9c..3861c193 100644 --- a/XSchemWin/README_WIN +++ b/XSchemWin/README_WIN @@ -90,6 +90,7 @@ INSTRUCTIONS TO COMPILE XSCHEM IN VISUAL STUDIO 2022 C:/Program Files/XSchem/xschem_library/ngspice C:/Program Files/XSchem/xschem_library/logic C:/Program Files/XSchem/xschem_library/binto7seg + C:/Program Files/XSchem/xschem_library/generators C:/Program Files/XSchem/xschem_library/pcb C:/Program Files/XSchem/xschem_library/rom8k @@ -147,4 +148,4 @@ INSTRUCTIONS TO COMPILE CAIRO AND COMPILE XSCHEM WITH IT ON VISUAL STUDIO 2022 For Debug, x64 * Properties > VC++ Directories > Include: ;cairo_win\cairo\src;cairo_win\projects\cairo\src; Libraries: ;cairo_win\projects\x64\Debug;cairo_win\libs;cairo_win\freetype\objs\x64\Debug Static - * Properties > Linker > Input > Additional Dependencies: Add ;cairo.lib;pixman.lib;zlibd.lib;libpngd.lib;freetype.lib; \ No newline at end of file + * Properties > Linker > Input > Additional Dependencies: Add ;cairo.lib;pixman.lib;zlibd.lib;libpngd.lib;freetype.lib; diff --git a/XSchemWin/XSchemWix/xschemrc b/XSchemWin/XSchemWix/xschemrc index 0401c0e2..f2977006 100644 --- a/XSchemWin/XSchemWix/xschemrc +++ b/XSchemWin/XSchemWix/xschemrc @@ -21,6 +21,7 @@ #### /home/schippes/share/doc/xschem/ngspice #### /home/schippes/share/doc/xschem/logic #### /home/schippes/share/doc/xschem/xschem_simulator +#### /home/schippes/share/doc/xschem/generators #### /home/schippes/share/doc/xschem/binto7seg #### /home/schippes/share/doc/xschem/pcb #### /home/schippes/share/doc/xschem/rom8k @@ -33,6 +34,7 @@ #### ../xschem_library/ngspice #### ../xschem_library/logic #### ../xschem_library/xschem_simulator +#### ../xschem_library/generators #### ../xschem_library/binto7seg #### ../xschem_library/pcb #### ../xschem_library/rom8k @@ -48,6 +50,7 @@ # append XSCHEM_LIBRARY_PATH :${xschem_doc_dir}/rom8k # append XSCHEM_LIBRARY_PATH :${xschem_doc_dir}/logic # append XSCHEM_LIBRARY_PATH :${xschem_doc_dir}/pcb +# append XSCHEM_LIBRARY_PATH :${xschem_doc_dir}/generators # append XSCHEM_LIBRARY_PATH :${xschem_doc_dir}/binto7seg # append XSCHEM_LIBRARY_PATH :${xschem_doc_dir}/symgen # append XSCHEM_LIBRARY_PATH :${xschem_doc_dir}/xTAG @@ -65,6 +68,7 @@ # append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/rom8k" # append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/logic" # append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/pcb" +# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/generators" # append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/binto7seg" ########################################################################### @@ -398,4 +402,4 @@ set editor {notepad.exe} #### This option will not include all windows drives in xschem paths #### Instead, additional drives can be added using XSCHEM_LIBRARY_PATH #### default: 1 -# set add_all_windows_drives 0 \ No newline at end of file +# set add_all_windows_drives 0 diff --git a/scconfig/hooks.c b/scconfig/hooks.c index d8c9abc6..6b465884 100644 --- a/scconfig/hooks.c +++ b/scconfig/hooks.c @@ -138,6 +138,11 @@ int hook_postarg() append("/local/xschem/xschem-lib-path", "/"); append("/local/xschem/xschem-lib-path", "share/doc/xschem/xschem_simulator"); + append("/local/xschem/xschem-lib-path", ":"); + append("/local/xschem/xschem-lib-path", get("/local/xschem/prefix")); + append("/local/xschem/xschem-lib-path", "/"); + append("/local/xschem/xschem-lib-path", "share/doc/xschem/generators"); + append("/local/xschem/xschem-lib-path", ":"); append("/local/xschem/xschem-lib-path", get("/local/xschem/prefix")); append("/local/xschem/xschem-lib-path", "/"); diff --git a/src/save.c b/src/save.c index b6a74630..d0d285c3 100644 --- a/src/save.c +++ b/src/save.c @@ -2192,6 +2192,7 @@ void load_schematic(int load_symbols, const char *fname, int reset_undo) /* 2015 my_strncpy(xctx->current_name, rel_sym_path(filename), S(xctx->current_name)); /* local file specified and not coming from web url */ } else { + /* if name is /some/path/. remove /. at end */ my_snprintf(msg, S(msg), "regsub {/\\.$} [get_directory {%s}] {}", filename); my_strncpy(xctx->current_dirname, tcleval(msg), S(xctx->current_dirname)); /* local file name */ @@ -2199,7 +2200,6 @@ void load_schematic(int load_symbols, const char *fname, int reset_undo) /* 2015 /* local relative reference */ my_strncpy(xctx->current_name, rel_sym_path(filename), S(xctx->current_name)); } - /* if name is /some/path/. remove /. at end */ dbg(1, "load_schematic(): opening file for loading:%s, filename=%s\n", name, filename); dbg(1, "load_schematic(): sch[currsch]=%s\n", xctx->sch[xctx->currsch]); if(!name[0]) return; diff --git a/src/xinit.c b/src/xinit.c index 2e098b70..19334608 100644 --- a/src/xinit.c +++ b/src/xinit.c @@ -1976,6 +1976,9 @@ int Tcl_AppInit(Tcl_Interp *inter) my_snprintf(tmp, S(tmp), "append XSCHEM_LIBRARY_PATH : [file dirname \"%s\"]/xschem_library/xschem_simulator", pwd_dir); tcleval(tmp); + my_snprintf(tmp, S(tmp), + "append XSCHEM_LIBRARY_PATH : [file dirname \"%s\"]/xschem_library/generators", pwd_dir); + tcleval(tmp); my_snprintf(tmp, S(tmp), "append XSCHEM_LIBRARY_PATH : [file dirname \"%s\"]/xschem_library/binto7seg", pwd_dir); tcleval(tmp); @@ -1993,15 +1996,16 @@ int Tcl_AppInit(Tcl_Interp *inter) char *up_hier=NULL, *win_xschem_library_path=NULL; #define WIN_XSCHEM_LIBRARY_PATH_NUM 9 const char *WIN_XSCHEM_LIBRARY_PATH[WIN_XSCHEM_LIBRARY_PATH_NUM] = { - /*1*/ "xschem_library", - /*2*/ "xschem_library/devices", - /*3*/ "xschem_library/examples", - /*4*/ "xschem_library/ngspice", - /*5*/ "xschem_library/logic", - /*6*/ "xschem_library/xschem_simulator", - /*7*/ "xschem_library/binto7seg", - /*8*/ "xschem_library/pcb", - /*9*/ "xschem_library/rom8k" }; + /*1*/ "xschem_library", + /*2*/ "xschem_library/devices", + /*3*/ "xschem_library/examples", + /*4*/ "xschem_library/ngspice", + /*5*/ "xschem_library/logic", + /*6*/ "xschem_library/xschem_simulator", + /*7*/ "xschem_library/generators", + /*8*/ "xschem_library/binto7seg", + /*9*/ "xschem_library/pcb", + /*10*/ "xschem_library/rom8k" }; GetModuleFileNameA(NULL, install_dir, MAX_PATH); change_to_unix_fn(install_dir); size_t dir_len=strlen(install_dir); diff --git a/src/xschem.tcl b/src/xschem.tcl index 17162d96..8dfa6b78 100644 --- a/src/xschem.tcl +++ b/src/xschem.tcl @@ -6149,8 +6149,9 @@ proc set_paths {} { lappend pathlist $i } } - set myload_files1 $pathlist } + if {$pathlist eq {}} { set pathlist [pwd] } + set myload_files1 $pathlist # set INITIALLOADDIR INITIALINSTDIR INITIALPROPDIR as initial locations in load file dialog box set_initial_dirs } diff --git a/src/xschemrc b/src/xschemrc index 4032481c..fe226be3 100644 --- a/src/xschemrc +++ b/src/xschemrc @@ -21,6 +21,7 @@ #### /home/schippes/share/doc/xschem/ngspice #### /home/schippes/share/doc/xschem/logic #### /home/schippes/share/doc/xschem/xschem_simulator +#### /home/schippes/share/doc/xschem/generators #### /home/schippes/share/doc/xschem/binto7seg #### /home/schippes/share/doc/xschem/pcb #### /home/schippes/share/doc/xschem/rom8k @@ -33,6 +34,7 @@ #### ../xschem_library/ngspice #### ../xschem_library/logic #### ../xschem_library/xschem_simulator +#### ../xschem_library/generators #### ../xschem_library/binto7seg #### ../xschem_library/pcb #### ../xschem_library/rom8k @@ -48,6 +50,7 @@ # append XSCHEM_LIBRARY_PATH :${xschem_doc_dir}/rom8k # append XSCHEM_LIBRARY_PATH :${xschem_doc_dir}/logic # append XSCHEM_LIBRARY_PATH :${xschem_doc_dir}/pcb +# append XSCHEM_LIBRARY_PATH :${xschem_doc_dir}/generators # append XSCHEM_LIBRARY_PATH :${xschem_doc_dir}/binto7seg # append XSCHEM_LIBRARY_PATH :${xschem_doc_dir}/symgen # append XSCHEM_LIBRARY_PATH :${xschem_doc_dir}/xTAG @@ -64,6 +67,7 @@ # append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/rom8k" # append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/logic" # append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/pcb" +# append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/generators" # append XSCHEM_LIBRARY_PATH ";${XSCHEM_SHAREDIR}/../xschem_library/binto7seg" ########################################################################### diff --git a/xschem_library/Makefile b/xschem_library/Makefile index 17490241..789d5cb4 100644 --- a/xschem_library/Makefile +++ b/xschem_library/Makefile @@ -8,6 +8,7 @@ install: FORCE $(SCCBOX) mkdir -p "$(system_library_dir)" "$(XDOCDIR)"/examples "$(XDOCDIR)"/pcb $(SCCBOX) mkdir -p "$(XDOCDIR)"/logic "$(XDOCDIR)"/xTAG "$(XDOCDIR)"/binto7seg $(SCCBOX) mkdir -p "$(XDOCDIR)"/symgen "$(XDOCDIR)"/ngspice "$(XDOCDIR)"/rulz-r8c33 + $(SCCBOX) mkdir -p "$(XDOCDIR)"/generators $(SCCBOX) mkdir -p "$(XDOCDIR)"/rom8k "$(XDOCDIR)"/gschem_import/sym $(SCCBOX) install -f -d devices/*.sym "$(system_library_dir)" $(SCCBOX) install -f -d devices/*.sch "$(system_library_dir)" @@ -16,6 +17,7 @@ install: FORCE $(SCCBOX) install -f -d examples/stimuli.* "$(XDOCDIR)"/examples $(SCCBOX) install -f -d binto7seg/*.sym "$(XDOCDIR)"/binto7seg $(SCCBOX) install -f -d binto7seg/*.sch "$(XDOCDIR)"/binto7seg + $(SCCBOX) install -f -d generators/*.* "$(XDOCDIR)"/generators $(SCCBOX) install -f -d xTAG/*.sym* "$(XDOCDIR)"/xTAG $(SCCBOX) install -f -d xTAG/*.sch "$(XDOCDIR)"/xTAG $(SCCBOX) install -f -d logic/*.sym "$(XDOCDIR)"/logic @@ -41,7 +43,8 @@ install: FORCE uninstall: FORCE $(SCCBOX) rm -f "$(system_library_dir)"/* "$(XDOCDIR)"/examples/* "$(XDOCDIR)"/pcb/* \ "$(XDOCDIR)"/ngspice/* "$(XDOCDIR)"/symgen/* "$(XDOCDIR)"/logic/* "$(XDOCDIR)"/xTAG/* \ - "$(XDOCDIR)"/rom8k/* "$(XDOCDIR)"/xschem_simulator/ "$(XDOCDIR)"/binto7seg/* "$(XDOCDIR)"/rulz-r8c33/* \ + "$(XDOCDIR)"/rom8k/* "$(XDOCDIR)"/xschem_simulator/ "$(XDOCDIR)"/binto7seg/* \ + "$(XDOCDIR)"/rulz-r8c33/* "$(XDOCDIR)"/generators/* \ "$(XDOCDIR)"/gschem_import/*.sym \ "$(XDOCDIR)"/gschem_import/*.sch \ "$(XDOCDIR)"/gschem_import/sym/*.sym \