doc updates (xschem + open_pdks installation video)
This commit is contained in:
parent
8452c6d417
commit
07845dec57
|
|
@ -53,6 +53,7 @@
|
|||
<li><a href="tutorial_ngspice_backannotation.html">Backannotation of Ngspice simulation data into xschem</a></li>
|
||||
<li><a href="tutorial_symgen.html">Use symgen.awk to create symbols from 'djboxsym' compatible text files</a></li>
|
||||
<li><a href="https://xschem.sourceforge.io/stefan/xschem_man/video_tutorials/install_xschem_sky130_and_ngspice.mp4">[Video] Install Xschem, Xschem_sky130, skywater-pdk and ngspice: step by step instructions</a></li>
|
||||
<li><a href="https://xschem.sourceforge.io/stefan/xschem_man/video_tutorials/install_xschem_and_open_pdks.mp4">[Video] Second version, Install Xschem and open_pdks for skywater 130 design</a></li>
|
||||
<li><a href="https://xschem.sourceforge.io/stefan/xschem_man/video_tutorials/editing_and_sim.mp4">[Video] Editing commands and simulation</a></li>
|
||||
<li><a href="https://xschem.sourceforge.io/stefan/xschem_man/video_tutorials/edit_attributes.mp4">[Video] Editing component attributes</a></li>
|
||||
<li><a href="https://xschem.sourceforge.io/stefan/xschem_man/video_tutorials/copy_from_window_to_window.mp4">[Video] Copying objects across xschem windows</a></li>
|
||||
|
|
|
|||
|
|
@ -50,6 +50,11 @@ void deps_default_init(void)
|
|||
dep_add("cc/ldflags_dll", find_ldflags_dll);
|
||||
dep_add("cc/ldflags_so", find_ldflags_so);
|
||||
dep_add("cc/func_attr/unused/*", find_fattr_unused);
|
||||
dep_add("cc/func_attr/noreturn/*", find_fattr_noreturn);
|
||||
dep_add("cc/func_attr/deprecated/*", find_fattr_deprecated);
|
||||
dep_add("cc/func_attr/weak/*", find_fattr_weak);
|
||||
dep_add("cc/func_attr/visibility_hidden/*", find_fattr_visibility_hidden);
|
||||
dep_add("cc/func_attr/visibility_default/*", find_fattr_visibility_default);
|
||||
dep_add("cc/declspec/dllimport/*", find_declspec_dllimport);
|
||||
dep_add("cc/declspec/dllexport/*", find_declspec_dllexport);
|
||||
dep_add("cc/argmachine/*", find_cc_argmachine);
|
||||
|
|
|
|||
|
|
@ -11,6 +11,11 @@ int find_funcmacro(const char *name, int logdepth, int fatal);
|
|||
int find_constructor(const char *name, int logdepth, int fatal);
|
||||
int find_destructor(const char *name, int logdepth, int fatal);
|
||||
int find_fattr_unused(const char *name, int logdepth, int fatal);
|
||||
int find_fattr_noreturn(const char *name, int logdepth, int fatal);
|
||||
int find_fattr_deprecated(const char *name, int logdepth, int fatal);
|
||||
int find_fattr_weak(const char *name, int logdepth, int fatal);
|
||||
int find_fattr_visibility_hidden(const char *name, int logdepth, int fatal);
|
||||
int find_fattr_visibility_default(const char *name, int logdepth, int fatal);
|
||||
int find_declspec_dllimport(const char *name, int logdepth, int fatal);
|
||||
int find_declspec_dllexport(const char *name, int logdepth, int fatal);
|
||||
int find_rdynamic(const char *name, int logdepth, int fatal);
|
||||
|
|
|
|||
|
|
@ -399,27 +399,29 @@ int find_destructor(const char *name, int logdepth, int fatal)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static int test_fattr(const char *name, int logdepth, int fatal, const char *fattr)
|
||||
static int test_fattr(const char *name, int logdepth, int fatal,
|
||||
const char *key, const char *fattr, const char *f_spec, int call_testfunc)
|
||||
{
|
||||
char path[64];
|
||||
char test_c[256];
|
||||
char test_c[512];
|
||||
const char *test_c_tmp =
|
||||
NL "#include <stdio.h>"
|
||||
NL "static void test1() __attribute__ ((%s));"
|
||||
NL "static void test1()"
|
||||
NL "%s void test1() __attribute__ ((%s));"
|
||||
NL "%s void test1()"
|
||||
NL "{"
|
||||
NL " puts(\"OK\");"
|
||||
NL "}"
|
||||
NL "int main() {"
|
||||
NL " puts(\"OK\");"
|
||||
NL " %s;"
|
||||
NL " return 0;"
|
||||
NL "}"
|
||||
NL ;
|
||||
|
||||
require("cc/cc", logdepth, fatal);
|
||||
|
||||
sprintf(test_c, test_c_tmp, fattr);
|
||||
sprintf(path, "cc/func_attr/%s/presents", fattr);
|
||||
sprintf(test_c, test_c_tmp, f_spec, fattr, f_spec,
|
||||
(call_testfunc ? "test1()" : "puts(\"OK\")"));
|
||||
sprintf(path, "cc/func_attr/%s/presents", key);
|
||||
|
||||
report("Checking for function attribute %s... ", fattr);
|
||||
logprintf(logdepth, "test_fattr: trying to find %s...\n", fattr);
|
||||
|
|
@ -436,7 +438,34 @@ static int test_fattr(const char *name, int logdepth, int fatal, const char *fat
|
|||
|
||||
int find_fattr_unused(const char *name, int logdepth, int fatal)
|
||||
{
|
||||
return test_fattr(name, logdepth, fatal, "unused");
|
||||
return test_fattr(name, logdepth, fatal, "unused", "unused", "static", 0);
|
||||
}
|
||||
|
||||
int find_fattr_noreturn(const char *name, int logdepth, int fatal)
|
||||
{
|
||||
return test_fattr(name, logdepth, fatal, "noreturn", "noreturn", "", 1);
|
||||
}
|
||||
|
||||
int find_fattr_deprecated(const char *name, int logdepth, int fatal)
|
||||
{
|
||||
return test_fattr(name, logdepth, fatal, "deprecated", "depreated", "", 1);
|
||||
}
|
||||
|
||||
int find_fattr_weak(const char *name, int logdepth, int fatal)
|
||||
{
|
||||
return test_fattr(name, logdepth, fatal, "weak", "weak", "", 1);
|
||||
}
|
||||
|
||||
int find_fattr_visibility_hidden(const char *name, int logdepth, int fatal)
|
||||
{
|
||||
return test_fattr(name, logdepth, fatal, "visibility_hidden",
|
||||
"visibility(\"hidden\")", "", 0);
|
||||
}
|
||||
|
||||
int find_fattr_visibility_default(const char *name, int logdepth, int fatal)
|
||||
{
|
||||
return test_fattr(name, logdepth, fatal, "visibility_default",
|
||||
"visibility(\"default\")", "", 1);
|
||||
}
|
||||
|
||||
static int test_declspec(const char *name, int logdepth, int fatal, const char *dspec)
|
||||
|
|
|
|||
Loading…
Reference in New Issue