Jump to content
trev

error when compiling with clang

Recommended Posts

Hello,

compiling systemc-ams-2.1  with clang version 7.0.0

using systemc-2.3.3 

yields the following error :

make[5]: Entering directory '/home/tools/src/sysc/build/src/scams/impl/core'
  CXX      sca_globals.lo
  CXX      sca_interface.lo
  CXX      sca_implementation_info.lo
  CXX      sca_max_time.lo
  CXX      sca_module.lo
In file included from ../../../../../systemc-ams-2.1/src/scams/impl/core/sca_module.cpp:40:
In file included from ../../../../../systemc-ams-2.1/src/systemc-ams:180:
../../../../../systemc-ams-2.1/src/scams/predefined_moc/tdf/sca_tdf_sc_out.h:549:27: error: 'pobj' is a private member of 'sca_tdf::sca_implementation::sca_port_attributes'
                 str << "for port: " << pobj->sca_name();
                                        ^
../../../../../systemc-ams-2.1/src/scams/impl/predefined_moc/tdf/sca_tdf_port_attributes.h:154:47: note: declared private here
        sca_core::sca_implementation::sca_port_base* pobj;
                                                     ^
1 error generated.
make[5]: *** [Makefile:496: sca_module.lo] Error 1
make[5]: Leaving directory '/home/tools/src/sysc/build/src/scams/impl/core'
make[4]: *** [Makefile:400: all-recursive] Error 1
make[4]: Leaving directory '/home/tools/src/sysc/build/src/scams/impl'
make[3]: *** [Makefile:597: all-recursive] Error 1
make[3]: Leaving directory '/home/tools/src/sysc/build/src/scams'
make[2]: *** [Makefile:423: all-recursive] Error 1
make[2]: Leaving directory '/home/tools/src/sysc/build/src'
make[1]: *** [Makefile:361: all] Error 2
make[1]: Leaving directory '/home/tools/src/sysc/build/src'
make: *** [Makefile:430: all-recursive] Error 1

moving 

 

   sca_core::sca_implementation::sca_port_base* pobj; 

in the file

systemc-ams-2.1/src/scams/impl/predefined_moc/tdf/sca_tdf_port_attributes.h

from private to protected fixes the issue.

Any ideas ? Is this a compiler issue ? Not really that confident about changing from private to protected.

(I tried gcc just as a sanity check and it doesn't give this error or warning).

apart from that, the fix for memcpy() and memset() and a few warnings  about

warning: 'register' storage class specifier is deprecated and incompatible with C++17 [-Wdeprecated-register]

it compiles fine.

Thanks in advance and thanks for the code !

Best Regards

Trevor

Share this post


Link to post
Share on other sites

Thanks for reporting these compilation issues! These will need to get addressed by the COSEDA Technologies GmbH with a new SystemC AMS release. In the meantime, you can fix the compilation issue by replacing:

pobj->sca_name()

with

this->name()

The calls to memcpy() and memset() need to get prefixed with the std:: namespace prefix. The "register" storage class specifiers can be safely removed. If I see it correctly, they are only remaining in file scams/impl/analysis/ac/sca_ac_domain_entity.cpp.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×