Describe the bug
When trying to build SystemC using ccmake, toggling the ENABLE_STD_THREADS causes the following make command to fail.
To Reproduce
Steps to reproduce the behavior:
- Download the SystemC source code (tested with both the accellera website and cloning the github repo)
- Create build directory cd into it then run "ccmake .."
- Set the ENABLE_STD_THREADS on
- Configure and generate.
- Run make
Logs
~/.../build make -j8
[ 6%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_event_finder.cpp.o
[ 6%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_clock.cpp.o
[ 6%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_event_queue.cpp.o
[ 6%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_export.cpp.o
[ 9%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_mutex.cpp.o
[ 9%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_port.cpp.o
[ 9%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_interface.cpp.o
[ 9%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_prim_channel.cpp.o
[ 12%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_semaphore.cpp.o
[ 12%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_signal.cpp.o
[ 12%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_signal_ports.cpp.o
[ 16%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_signal_resolved.cpp.o
[ 16%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_signal_resolved_ports.cpp.o
[ 16%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/bit/sc_bit.cpp.o
[ 19%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/bit/sc_bv_base.cpp.o
[ 19%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/bit/sc_logic.cpp.o
[ 19%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/bit/sc_lv_base.cpp.o
[ 22%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/sc_fxcast_switch.cpp.o
[ 22%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/sc_fxdefs.cpp.o
[ 25%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/sc_fxnum.cpp.o
[ 25%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/sc_fxnum_observer.cpp.o
[ 25%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/sc_fxtype_params.cpp.o
[ 29%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/sc_fxval.cpp.o
[ 29%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/sc_fxval_observer.cpp.o
[ 29%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/scfx_mant.cpp.o
[ 32%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/scfx_pow10.cpp.o
[ 32%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/scfx_rep.cpp.o
[ 32%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/scfx_utils.cpp.o
[ 35%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/int/sc_int64_io.cpp.o
[ 35%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/int/sc_int64_mask.cpp.o
[ 35%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/int/sc_int_base.cpp.o
[ 38%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/int/sc_length_param.cpp.o
[ 38%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/int/sc_nbutils.cpp.o
[ 38%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/int/sc_signed.cpp.o
[ 41%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/int/sc_uint_base.cpp.o
[ 41%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/int/sc_unsigned.cpp.o
[ 45%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/misc/sc_value_base.cpp.o
[ 45%] Building CXX object src/CMakeFiles/systemc.dir/sysc/kernel/sc_attribute.cpp.o
[ 45%] Building CXX object src/CMakeFiles/systemc.dir/sysc/kernel/sc_cor_fiber.cpp.o
[ 48%] Building CXX object src/CMakeFiles/systemc.dir/sysc/kernel/sc_cor_pthread.cpp.o
[ 48%] Building CXX object src/CMakeFiles/systemc.dir/sysc/kernel/sc_cor_qt.cpp.o
[ 48%] Building CXX object src/CMakeFiles/systemc.dir/sysc/kernel/sc_cor_std_thread.cpp.o
[ 51%] Building CXX object src/CMakeFiles/systemc.dir/sysc/kernel/sc_cthread_process.cpp.o
In file included from /home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:36:
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.h:70:10: error: ‘condition_variable’ in namespace ‘std’ does not name a type
70 | std::condition_variable m_condition; // Condition waiting for.
| ^~~~~~~~~~~~~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.h:39:1: note: ‘std::condition_variable’ is defined in header ‘<condition_variable>’; this is probably fixable by adding ‘#include <condition_variable>’
38 | #include
+++ |+#include <condition_variable>
39 |
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.h:71:10: error: ‘mutex’ in namespace ‘std’ does not name a type
71 | std::mutex m_mutex; // Mutex
| ^~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.h:39:1: note: ‘std::mutex’ is defined in header ‘’; this is probably fixable by adding ‘#include ’
38 | #include
+++ |+#include
39 |
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.h:124:10: error: ‘condition_variable’ in namespace ‘std’ does not name a type
124 | std::condition_variable m_create_cond; // Condition waiting for.
| ^~~~~~~~~~~~~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.h:124:5: note: ‘std::condition_variable’ is defined in header ‘<condition_variable>’; this is probably fixable by adding ‘#include <condition_variable>’
124 | std::condition_variable m_create_cond; // Condition waiting for.
| ^~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.h:125:10: error: ‘mutex’ in namespace ‘std’ does not name a type
125 | std::mutex m_create_mutex; // Mutex for lock.
| ^~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.h:125:5: note: ‘std::mutex’ is defined in header ‘’; this is probably fixable by adding ‘#include ’
125 | std::mutex m_create_mutex; // Mutex for lock.
| ^~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp: In static member function ‘static void sc_core::sc_cor_std_thread::invoke_thread(void*)’:
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:98:58: error: ‘class sc_core::sc_cor_pkg_std_thread’ has no member named ‘m_create_mutex’
98 | std::unique_lockstd::mutex create_lock(p->m_pkg_p->m_create_mutex, std::defer_lock);
| ^~~~~~~~~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:99:48: error: ‘class sc_core::sc_cor_std_thread’ has no member named ‘m_mutex’
99 | std::unique_lockstd::mutex child_lock(p->m_mutex, std::defer_lock);
| ^~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:103:17: error: ‘class sc_core::sc_cor_pkg_std_thread’ has no member named ‘m_create_cond’
103 | p->m_pkg_p->m_create_cond.notify_one();
| ^~~~~~~~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:107:8: error: ‘class sc_core::sc_cor_std_thread’ has no member named ‘m_condition’
107 | p->m_condition.wait(child_lock);
| ^~~~~~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp: In member function ‘virtual sc_core::sc_cor* sc_core::sc_cor_pkg_std_thread::create(std::size_t, void ()(void), void*)’:
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:196:46: error: ‘m_create_mutex’ was not declared in this scope
196 | std::unique_lockstd::mutex create_lock(m_create_mutex, std::defer_lock);
| ^~~~~~~~~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:204:5: error: ‘m_create_cond’ was not declared in this scope; did you mean ‘create_lock’?
204 | m_create_cond.wait(create_lock);
| ^~~~~~~~~~~~~
| create_lock
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp: In member function ‘virtual void sc_core::sc_cor_pkg_std_thread::yield(sc_core::sc_cor*)’:
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:235:52: error: ‘class sc_core::sc_cor_std_thread’ has no member named ‘m_mutex’
235 | std::unique_lockstd::mutex to_lock(to_p->m_mutex,std::defer_lock);
| ^~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:236:56: error: ‘class sc_core::sc_cor_std_thread’ has no member named ‘m_mutex’
236 | std::unique_lockstd::mutex from_lock(from_p->m_mutex,std::defer_lock);
| ^~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:239:15: error: ‘class sc_core::sc_cor_std_thread’ has no member named ‘m_condition’
239 | to_p->m_condition.notify_one();
| ^~~~~~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:242:17: error: ‘class sc_core::sc_cor_std_thread’ has no member named ‘m_condition’
242 | from_p->m_condition.wait(from_lock);
| ^~~~~~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp: In member function ‘virtual void sc_core::sc_cor_pkg_std_thread::abort(sc_core::sc_cor*)’:
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:260:51: error: ‘class sc_core::sc_cor_std_thread’ has no member named ‘m_mutex’
260 | std::unique_lockstd::mutex to_lock(n_p->m_mutex);
| ^~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:261:14: error: ‘class sc_core::sc_cor_std_thread’ has no member named ‘m_condition’
261 | n_p->m_condition.notify_one();
| ^~~~~~~~~~~
make[2]: *** [src/CMakeFiles/systemc.dir/build.make:650: src/CMakeFiles/systemc.dir/sysc/kernel/sc_cor_std_thread.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:776: src/CMakeFiles/systemc.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
Environment (please complete the following information)
OS: Ubuntu 24.04
Compiler: GCC 14.2.0
SystemC version: 3.0.2
Additional context
I believe, that as the compiler errors show, adding
condition_variable and mutex headers to the src/sysc/kernel/sc_cor_std_thread.h header should fix the issue.
Describe the bug
When trying to build SystemC using ccmake, toggling the ENABLE_STD_THREADS causes the following make command to fail.
To Reproduce
Steps to reproduce the behavior:
Logs
~/.../build make -j8
[ 6%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_event_finder.cpp.o
[ 6%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_clock.cpp.o
[ 6%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_event_queue.cpp.o
[ 6%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_export.cpp.o
[ 9%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_mutex.cpp.o
[ 9%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_port.cpp.o
[ 9%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_interface.cpp.o
[ 9%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_prim_channel.cpp.o
[ 12%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_semaphore.cpp.o
[ 12%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_signal.cpp.o
[ 12%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_signal_ports.cpp.o
[ 16%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_signal_resolved.cpp.o
[ 16%] Building CXX object src/CMakeFiles/systemc.dir/sysc/communication/sc_signal_resolved_ports.cpp.o
[ 16%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/bit/sc_bit.cpp.o
[ 19%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/bit/sc_bv_base.cpp.o
[ 19%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/bit/sc_logic.cpp.o
[ 19%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/bit/sc_lv_base.cpp.o
[ 22%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/sc_fxcast_switch.cpp.o
[ 22%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/sc_fxdefs.cpp.o
[ 25%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/sc_fxnum.cpp.o
[ 25%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/sc_fxnum_observer.cpp.o
[ 25%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/sc_fxtype_params.cpp.o
[ 29%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/sc_fxval.cpp.o
[ 29%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/sc_fxval_observer.cpp.o
[ 29%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/scfx_mant.cpp.o
[ 32%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/scfx_pow10.cpp.o
[ 32%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/scfx_rep.cpp.o
[ 32%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/fx/scfx_utils.cpp.o
[ 35%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/int/sc_int64_io.cpp.o
[ 35%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/int/sc_int64_mask.cpp.o
[ 35%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/int/sc_int_base.cpp.o
[ 38%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/int/sc_length_param.cpp.o
[ 38%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/int/sc_nbutils.cpp.o
[ 38%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/int/sc_signed.cpp.o
[ 41%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/int/sc_uint_base.cpp.o
[ 41%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/int/sc_unsigned.cpp.o
[ 45%] Building CXX object src/CMakeFiles/systemc.dir/sysc/datatypes/misc/sc_value_base.cpp.o
[ 45%] Building CXX object src/CMakeFiles/systemc.dir/sysc/kernel/sc_attribute.cpp.o
[ 45%] Building CXX object src/CMakeFiles/systemc.dir/sysc/kernel/sc_cor_fiber.cpp.o
[ 48%] Building CXX object src/CMakeFiles/systemc.dir/sysc/kernel/sc_cor_pthread.cpp.o
[ 48%] Building CXX object src/CMakeFiles/systemc.dir/sysc/kernel/sc_cor_qt.cpp.o
[ 48%] Building CXX object src/CMakeFiles/systemc.dir/sysc/kernel/sc_cor_std_thread.cpp.o
[ 51%] Building CXX object src/CMakeFiles/systemc.dir/sysc/kernel/sc_cthread_process.cpp.o
In file included from /home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:36:
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.h:70:10: error: ‘condition_variable’ in namespace ‘std’ does not name a type
70 | std::condition_variable m_condition; // Condition waiting for.
| ^~~~~~~~~~~~~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.h:39:1: note: ‘std::condition_variable’ is defined in header ‘<condition_variable>’; this is probably fixable by adding ‘#include <condition_variable>’
38 | #include
+++ |+#include <condition_variable>
39 |
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.h:71:10: error: ‘mutex’ in namespace ‘std’ does not name a type
71 | std::mutex m_mutex; // Mutex
| ^~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.h:39:1: note: ‘std::mutex’ is defined in header ‘’; this is probably fixable by adding ‘#include ’
38 | #include
+++ |+#include
39 |
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.h:124:10: error: ‘condition_variable’ in namespace ‘std’ does not name a type
124 | std::condition_variable m_create_cond; // Condition waiting for.
| ^~~~~~~~~~~~~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.h:124:5: note: ‘std::condition_variable’ is defined in header ‘<condition_variable>’; this is probably fixable by adding ‘#include <condition_variable>’
124 | std::condition_variable m_create_cond; // Condition waiting for.
| ^~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.h:125:10: error: ‘mutex’ in namespace ‘std’ does not name a type
125 | std::mutex m_create_mutex; // Mutex for lock.
| ^~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.h:125:5: note: ‘std::mutex’ is defined in header ‘’; this is probably fixable by adding ‘#include ’
125 | std::mutex m_create_mutex; // Mutex for lock.
| ^~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp: In static member function ‘static void sc_core::sc_cor_std_thread::invoke_thread(void*)’:
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:98:58: error: ‘class sc_core::sc_cor_pkg_std_thread’ has no member named ‘m_create_mutex’
98 | std::unique_lockstd::mutex create_lock(p->m_pkg_p->m_create_mutex, std::defer_lock);
| ^~~~~~~~~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:99:48: error: ‘class sc_core::sc_cor_std_thread’ has no member named ‘m_mutex’
99 | std::unique_lockstd::mutex child_lock(p->m_mutex, std::defer_lock);
| ^~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:103:17: error: ‘class sc_core::sc_cor_pkg_std_thread’ has no member named ‘m_create_cond’
103 | p->m_pkg_p->m_create_cond.notify_one();
| ^~~~~~~~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:107:8: error: ‘class sc_core::sc_cor_std_thread’ has no member named ‘m_condition’
107 | p->m_condition.wait(child_lock);
| ^~~~~~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp: In member function ‘virtual sc_core::sc_cor* sc_core::sc_cor_pkg_std_thread::create(std::size_t, void ()(void), void*)’:
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:196:46: error: ‘m_create_mutex’ was not declared in this scope
196 | std::unique_lockstd::mutex create_lock(m_create_mutex, std::defer_lock);
| ^~~~~~~~~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:204:5: error: ‘m_create_cond’ was not declared in this scope; did you mean ‘create_lock’?
204 | m_create_cond.wait(create_lock);
| ^~~~~~~~~~~~~
| create_lock
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp: In member function ‘virtual void sc_core::sc_cor_pkg_std_thread::yield(sc_core::sc_cor*)’:
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:235:52: error: ‘class sc_core::sc_cor_std_thread’ has no member named ‘m_mutex’
235 | std::unique_lockstd::mutex to_lock(to_p->m_mutex,std::defer_lock);
| ^~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:236:56: error: ‘class sc_core::sc_cor_std_thread’ has no member named ‘m_mutex’
236 | std::unique_lockstd::mutex from_lock(from_p->m_mutex,std::defer_lock);
| ^~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:239:15: error: ‘class sc_core::sc_cor_std_thread’ has no member named ‘m_condition’
239 | to_p->m_condition.notify_one();
| ^~~~~~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:242:17: error: ‘class sc_core::sc_cor_std_thread’ has no member named ‘m_condition’
242 | from_p->m_condition.wait(from_lock);
| ^~~~~~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp: In member function ‘virtual void sc_core::sc_cor_pkg_std_thread::abort(sc_core::sc_cor*)’:
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:260:51: error: ‘class sc_core::sc_cor_std_thread’ has no member named ‘m_mutex’
260 | std::unique_lockstd::mutex to_lock(n_p->m_mutex);
| ^~~~~~~
/home/youssef/Downloads/systemc-3.0.2/src/sysc/kernel/sc_cor_std_thread.cpp:261:14: error: ‘class sc_core::sc_cor_std_thread’ has no member named ‘m_condition’
261 | n_p->m_condition.notify_one();
| ^~~~~~~~~~~
make[2]: *** [src/CMakeFiles/systemc.dir/build.make:650: src/CMakeFiles/systemc.dir/sysc/kernel/sc_cor_std_thread.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:776: src/CMakeFiles/systemc.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
Environment (please complete the following information)
OS: Ubuntu 24.04
Compiler: GCC 14.2.0
SystemC version: 3.0.2
Additional context
I believe, that as the compiler errors show, adding
condition_variable and mutex headers to the src/sysc/kernel/sc_cor_std_thread.h header should fix the issue.