mame/scripts/src/netlist.lua
couriersud 0c258c9d70
netlist: Fixes to address PR #9752 and issue #8590 / EMSCRIPTEN (#9773)
netlist: pointer to member function code 

- Address PR #9752 and issue #8590
- change comments in ppmf.h
- add support for function desciptors (IA64)
- sizeof(size_t) may be different on build targets
  make plib::hash use uint64 to ensure consistent static solver
  hashes across platforms (EMSCRIPTEN)
- Moved constructor and member functions outside the class declaration
  with the exception of "call" member functions.
- Updated comment on accessing RDX
- Added more test cases

* Removed execution bit on certain files
I have separated out the raw processing code into `ppmf.cpp`. I have
also taken first steps to clean the abi identification.

The code submitted now supports:

a) The unknown virtual inheritance case with specific code for MSVC for
simple (i.e. scalar, void, reference, pointer) return types using the
optimized code. This is the test case only supported under MSVC and
which should return 7. Please have a look at the code. Basically
m_vptr_offset is an index into a pointer table. It needs to be
multiplied by `sizeof(void *)`.

b) If you enable PPMF_EXPERIMENTAL complex return type member functions
for MSVC will also use the optimized code path. This is explained in
detail in the code in ppmf, including caveats and possible solutions.

c) Enabling PPMF_USE_MAME_DELEGATES will use `src/lib/util/delegate.h`
as a replacement for `ppmf.h`. This allows to run the same tests
(`nltool -c tests` from standalone build) as for the ppmf code.

d) The code now also supports `clang-cl`

e) sizeof(size_t) may be different on build targets.

Make plib::hash use uint64 to ensure consistent static solver hashes
across platforms. This fixes loading static solvers (if enabled) on
EMSCRIPTEN.
2022-05-19 19:40:00 +02:00

227 lines
10 KiB
Lua

-- license:BSD-3-Clause
-- copyright-holders:MAMEdev Team
---------------------------------------------------------------------------
--
-- netlist.lua
--
-- Rules for building netlist cores
--
---------------------------------------------------------------------------
project "netlist"
uuid "665ef8ac-2a4c-4c3e-a05f-fd1e5db11de9"
kind (LIBTYPE)
if _OPTIONS["targetos"]=="windows" then
configuration { "mingw* or vs*" }
defines {
"UNICODE",
"_UNICODE",
"_WIN32_WINNT=0x0501",
"WIN32_LEAN_AND_MEAN",
"NOMINMAX",
}
end
addprojectflags()
defines {
"__STDC_CONSTANT_MACROS",
"NL_USE_ACADEMIC_SOLVERS=0",
}
includedirs {
-- MAME_DIR .. "src/lib",
MAME_DIR .. "src/lib/netlist",
}
files {
MAME_DIR .. "src/lib/netlist/nl_base.cpp",
MAME_DIR .. "src/lib/netlist/nl_base.h",
MAME_DIR .. "src/lib/netlist/nl_config.h",
MAME_DIR .. "src/lib/netlist/nl_errstr.h",
MAME_DIR .. "src/lib/netlist/nl_dice_compat.h",
MAME_DIR .. "src/lib/netlist/nl_factory.cpp",
MAME_DIR .. "src/lib/netlist/nl_factory.h",
MAME_DIR .. "src/lib/netlist/nl_interface.h",
MAME_DIR .. "src/lib/netlist/nl_parser.cpp",
MAME_DIR .. "src/lib/netlist/nl_parser.h",
MAME_DIR .. "src/lib/netlist/nl_setup.cpp",
MAME_DIR .. "src/lib/netlist/nl_setup.h",
MAME_DIR .. "src/lib/netlist/nltypes.h",
MAME_DIR .. "src/lib/netlist/core/analog.h",
MAME_DIR .. "src/lib/netlist/core/base_objects.h",
MAME_DIR .. "src/lib/netlist/core/core_device.h",
MAME_DIR .. "src/lib/netlist/core/device.h",
MAME_DIR .. "src/lib/netlist/core/device_macros.h",
MAME_DIR .. "src/lib/netlist/core/devices.h",
MAME_DIR .. "src/lib/netlist/core/exec.h",
MAME_DIR .. "src/lib/netlist/core/logic_family.h",
MAME_DIR .. "src/lib/netlist/core/logic.h",
MAME_DIR .. "src/lib/netlist/core/netlist_state.h",
MAME_DIR .. "src/lib/netlist/core/nets.h",
MAME_DIR .. "src/lib/netlist/core/object_array.h",
MAME_DIR .. "src/lib/netlist/core/param.h",
MAME_DIR .. "src/lib/netlist/core/queue.h",
MAME_DIR .. "src/lib/netlist/core/setup.h",
MAME_DIR .. "src/lib/netlist/core/state_var.h",
MAME_DIR .. "src/lib/netlist/plib/gmres.h",
MAME_DIR .. "src/lib/netlist/plib/pconfig.h",
MAME_DIR .. "src/lib/netlist/plib/palloc.h",
MAME_DIR .. "src/lib/netlist/plib/parray.h",
MAME_DIR .. "src/lib/netlist/plib/pchrono.h",
MAME_DIR .. "src/lib/netlist/plib/pgsl.h",
MAME_DIR .. "src/lib/netlist/plib/penum.h",
MAME_DIR .. "src/lib/netlist/plib/pexception.cpp",
MAME_DIR .. "src/lib/netlist/plib/pexception.h",
MAME_DIR .. "src/lib/netlist/plib/pfunction.cpp",
MAME_DIR .. "src/lib/netlist/plib/pfunction.h",
MAME_DIR .. "src/lib/netlist/plib/pfmtlog.cpp",
MAME_DIR .. "src/lib/netlist/plib/pfmtlog.h",
MAME_DIR .. "src/lib/netlist/plib/plists.h",
MAME_DIR .. "src/lib/netlist/plib/pdynlib.cpp",
MAME_DIR .. "src/lib/netlist/plib/pdynlib.h",
MAME_DIR .. "src/lib/netlist/plib/pmain.cpp",
MAME_DIR .. "src/lib/netlist/plib/pmain.h",
MAME_DIR .. "src/lib/netlist/plib/pmath.h",
MAME_DIR .. "src/lib/netlist/plib/pmatrix2d.h",
MAME_DIR .. "src/lib/netlist/plib/pmatrix_cr.h",
MAME_DIR .. "src/lib/netlist/plib/pmempool.h",
MAME_DIR .. "src/lib/netlist/plib/pmulti_threading.h",
MAME_DIR .. "src/lib/netlist/plib/pomp.h",
MAME_DIR .. "src/lib/netlist/plib/poptions.cpp",
MAME_DIR .. "src/lib/netlist/plib/poptions.h",
MAME_DIR .. "src/lib/netlist/plib/ppmf.cpp",
MAME_DIR .. "src/lib/netlist/plib/ppmf.h",
MAME_DIR .. "src/lib/netlist/plib/ppreprocessor.cpp",
MAME_DIR .. "src/lib/netlist/plib/ppreprocessor.h",
MAME_DIR .. "src/lib/netlist/plib/prandom.h",
MAME_DIR .. "src/lib/netlist/plib/psource.h",
MAME_DIR .. "src/lib/netlist/plib/pstate.h",
MAME_DIR .. "src/lib/netlist/plib/pstonum.h",
MAME_DIR .. "src/lib/netlist/plib/pstring.cpp",
MAME_DIR .. "src/lib/netlist/plib/pstring.h",
MAME_DIR .. "src/lib/netlist/plib/pstrutil.h",
MAME_DIR .. "src/lib/netlist/plib/pstream.h",
MAME_DIR .. "src/lib/netlist/plib/ptests.h",
MAME_DIR .. "src/lib/netlist/plib/ptime.h",
MAME_DIR .. "src/lib/netlist/plib/ptimed_queue.h",
MAME_DIR .. "src/lib/netlist/plib/ptokenizer.cpp",
MAME_DIR .. "src/lib/netlist/plib/ptokenizer.h",
MAME_DIR .. "src/lib/netlist/plib/ptypes.h",
MAME_DIR .. "src/lib/netlist/plib/putil.cpp",
MAME_DIR .. "src/lib/netlist/plib/putil.h",
MAME_DIR .. "src/lib/netlist/plib/vector_ops.h",
MAME_DIR .. "src/lib/netlist/tools/nl_convert.cpp",
MAME_DIR .. "src/lib/netlist/tools/nl_convert.h",
MAME_DIR .. "src/lib/netlist/analog/nld_bjt.cpp",
MAME_DIR .. "src/lib/netlist/analog/nld_generic_models.h",
MAME_DIR .. "src/lib/netlist/analog/nld_mosfet.cpp",
MAME_DIR .. "src/lib/netlist/analog/nlid_fourterm.cpp",
MAME_DIR .. "src/lib/netlist/analog/nlid_fourterm.h",
MAME_DIR .. "src/lib/netlist/analog/nld_switches.cpp",
MAME_DIR .. "src/lib/netlist/analog/nlid_twoterm.cpp",
MAME_DIR .. "src/lib/netlist/analog/nlid_twoterm.h",
MAME_DIR .. "src/lib/netlist/analog/nld_opamps.cpp",
MAME_DIR .. "src/lib/netlist/solver/nld_solver.cpp",
MAME_DIR .. "src/lib/netlist/solver/nld_solver.h",
MAME_DIR .. "src/lib/netlist/solver/nld_matrix_solver.cpp",
MAME_DIR .. "src/lib/netlist/solver/nld_matrix_solver_ext.h",
MAME_DIR .. "src/lib/netlist/solver/nld_matrix_solver.h",
MAME_DIR .. "src/lib/netlist/solver/nld_ms_direct.h",
MAME_DIR .. "src/lib/netlist/solver/nld_ms_direct1.h",
MAME_DIR .. "src/lib/netlist/solver/nld_ms_direct2.h",
MAME_DIR .. "src/lib/netlist/solver/nld_ms_gcr.h",
MAME_DIR .. "src/lib/netlist/solver/nld_ms_sor.h",
MAME_DIR .. "src/lib/netlist/solver/nld_ms_sor_mat.h",
MAME_DIR .. "src/lib/netlist/solver/nld_ms_gmres.h",
MAME_DIR .. "src/lib/netlist/solver/nld_ms_sm.h",
MAME_DIR .. "src/lib/netlist/solver/nld_ms_w.h",
MAME_DIR .. "src/lib/netlist/solver/nld_ms_direct_lu.h",
MAME_DIR .. "src/lib/netlist/devices/net_lib.cpp",
MAME_DIR .. "src/lib/netlist/devices/net_lib.h",
MAME_DIR .. "src/lib/netlist/devices/nld_9316_base.hxx",
MAME_DIR .. "src/lib/netlist/devices/nld_2102a.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_tms4800.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_4006.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_4013.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_4017.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_4020.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_4029.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_4042.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_4053.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_4066.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_4076.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_4316.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_7448.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_7450.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_7473.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_7474.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_7475.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_7483.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_7485.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_7490.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_7492.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_7493.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_7497.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_74107.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_74113.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_74123.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_74125.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_74153.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_74161.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_74163.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_74164.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_74165.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_74166.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_74174.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_74175.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_74192.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_74193.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_74194.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_74377.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_74393.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_74365.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_74ls629.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_82s16.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_82s115.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_8277.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_9310.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_9316.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_9321.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_9322.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_am2847.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_dm9314.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_dm9334.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_ne555.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_mm5837.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_r2r_dac.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_tristate.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_schmitt.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_legacy.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_log.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_roms.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_system.cpp",
MAME_DIR .. "src/lib/netlist/devices/nlid_truthtable.cpp",
MAME_DIR .. "src/lib/netlist/devices/nlid_truthtable.h",
MAME_DIR .. "src/lib/netlist/devices/nlid_system.h",
MAME_DIR .. "src/lib/netlist/devices/nlid_proxy.cpp",
MAME_DIR .. "src/lib/netlist/devices/nlid_proxy.h",
MAME_DIR .. "src/lib/netlist/macro/nlm_base_lib.cpp",
MAME_DIR .. "src/lib/netlist/macro/nlm_ttl74xx_lib.cpp",
MAME_DIR .. "src/lib/netlist/macro/nlm_cd4xxx_lib.cpp",
MAME_DIR .. "src/lib/netlist/macro/nlm_opamp_lib.cpp",
MAME_DIR .. "src/lib/netlist/macro/nlm_otheric_lib.cpp",
MAME_DIR .. "src/lib/netlist/macro/nlm_roms_lib.cpp",
MAME_DIR .. "src/lib/netlist/macro/modules/nlmod_rtest.cpp",
MAME_DIR .. "src/lib/netlist/macro/modules/nlmod_ne556_dip.cpp",
MAME_DIR .. "src/lib/netlist/macro/modules/nlmod_icl8038_dip.cpp",
MAME_DIR .. "src/lib/netlist/generated/static_solvers.cpp",
MAME_DIR .. "src/lib/netlist/generated/nld_devinc.h",
MAME_DIR .. "src/lib/netlist/generated/lib_entries.hxx",
MAME_DIR .. "src/lib/netlist/generated/nlm_modules_lib.cpp",
}