summaryrefslogtreecommitdiff
path: root/ext/systemc/INSTALL
blob: a5231d4892f15f51c843533ec3bb0db10af2c6e4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
                INSTALL NOTES FOR SystemC Release 2.3
                -------------------------------------

Contents:

        1. Installation Notes for Unix 

        2. Installation Notes for Windows

        3. SystemC Library Configuration Switches


1. Installation Notes for Unix
------------------------------


System Requirements
===================

SystemC can be installed on the following UNIX, or UNIX-like platforms:

  o Linux
    * Architectures
      - x86 (32-bit)
      - x86_64 (64-bit)
      - x86 (32-bit) application running on x86_64 (64-bit) kernel
        (../configure --host=i686-linux-gnu)
    * Compilers
      - GNU C++ compiler
      - Clang C++ compiler
      - or compatible

  o Mac OS X
    * Architectures
      - x86 (32-bit)
      - x86_64 (64-bit)
      - powerpc (32-bit)   [deprecated]
      - powerpc64 (64-bit) [deprecated]
    * Compilers
      - GNU C++ compiler
      - Clang C++ compiler
      - or compatible

  o Solaris
    * Architectures
      - SPARC (32-bit)
    * Compilers
      - GNU C++ compiler
      - Sun/Solaris Studio

  o BSD
    * Architectures
      - x86 (32-bit)
      - x86_64 (64-bit)
    * Compilers
      - GNU C++ compiler
      - Clang C++ compiler
      - or compatible

  o Windows
    * Compatibility layer
      - Cygwin
      - MinGW / MSYS
    * Architectures
      - x86 (32-bit)
      - x86_64 (64-bit)
    * Compilers
      - GNU C++ compiler
      - or compatible

Note: Not all combinations are equally well-tested and some combinations
      may not work as expected.  Please report your findings by following
      the instructions in the README file.

The README file contains a list of detailed platforms, architectures,
and compiler versions that have been used for testing this release.


Sources for Compilers and Related Tools
=======================================

To build, install, and use SystemC on UNIX platforms, you need
the following tools:

  1. GNU C++ compiler, version 3.4 or later
     or
     Clang C++ compiler version 3.0 or later

  2. GNU Make (gmake)

GCC, Clang, and gmake are free software that you can
obtain from the following sources:

  GCC           http://www.gnu.org/software/gcc/gcc.html

  Clang         http://clang.llvm.org/

  gmake         http://www.gnu.org/software/make/make.html


Basic SystemC Installation
==========================

To install SystemC on a UNIX system, do the following steps:

  1. Change to the top level directory (systemc-2.3.1)

  2. Create a temporary directory, e.g.,

        > mkdir objdir

  3. Change to the temporary directory, e.g.,

        > cd objdir

  4. Choose your compiler by setting the CXX environment variable
     (the configure script tries to guess the default compiler, if
      this step is omitted):

     If you use a POSIX-compatible shell (e.g. bash):

        > export CXX="<compiler>"

     e.g. for GCC compilers

        > export CXX=g++

     The Clang compiler is usually named 'clang++', thus e.g.

        > export CXX=clang++

     When using a C shell (e.g. csh/tcsh), the syntax to set the
     environment variable is different:

        > setenv CXX g++

     For the Sun/Solaris Studio compilers, use

        > setenv CXX CC

     You can also specify an absolute path to the compiler of your choice.

     See also the Section "Compilation and Linking Options" below.


  5. Configure the package for your system, e.g.,
     (The configure script is explained below.)

        > ../configure

     While the 'configure' script is running, which takes a few moments, 
     it prints messages to inform you of the features it is checking.
     It also detects the platform.
     
     Note for System V users: 
     If you are using `csh' on an older version of System V, you might 
     need to use the `sh ../configure' command instead of '../configure'.
     Otherwise, `csh' will attempt to `configure' itself.

     SystemC 2.3 includes a fixed-point package that is always built.
     When compiling your applications with fixed-point types, you still have
     to use compiler flag -DSC_INCLUDE_FX. Note that compile times increase
     significantly when using this compiler flag.

     In case you want to install the package in another place than the
     top level directory (systemc-2.3.1), configure the package e.g. as
     follows:

        > ../configure --prefix=/usr/local/systemc-2.3.1

     Note: make sure you have created the target directory before installing
           the package. Do _not_ use /usr/local as a prefix, unless you
           follow the Unix/FHS directory layouts (see below).

     A fine grained configuration of the installation directories can
     be achieved via additional options, given to the configure script.

     By default, the files are installed directly to the PREFIX directory
     root and the library is installed to PREFIX/lib-<TARGETARCH>,
     depending on the current target architecture.  This may be undesired
     in cases where the package is meant to be installed in a system-wide
     location as part of shared (default) library and include hierarchies
     (e.g. /usr/local, /usr, /opt, ...).  To follow the Unix/FHS directory
     standards, you can use the following options:

       --with-unix-layout     use Unix directory layout for installation
                              [default=no]
         when "yes", the following (fine-grained) settings will be used:

       --includedir=DIR       C++ header files      [PREFIX/include]
       --libdir=DIR           object code libraries [EPREFIX/lib]
       --docdir=DIR           documentation root    [DATAROOTDIR/doc/systemc]

     The library destination itself can be further and separately configured
     by using the following option:

       --with-arch-suffix     add suffix to library installation directory
                              [default=-<TARGETARCH>]

     With this option, one can easily follow e.g. the "multi-arch"
     conventions on some platforms:

       ../configure --with-arch-suffix=32                # lib32
       ../configure --with-arch-suffix=/x86_64-linux-gnu # lib/x86_64-linux-gnu



     Several options are available to the configure script to modify
     the compiler configuration and the selection of certain features:

       --disable-shared        do not build shared library (libsystemc.so)
       --enable-debug          include debugging symbols
       --disable-optimize      disable compiler optimization
       --disable-async-updates disable request_async_update support
       --enable-pthreads       use POSIX threads for SystemC processes
       --enable-phase-callbacks
                               enable simulation phase callbacks (experimental)


     See the section on the general usage of the configure script and
     "../configure --help" for more information.

     Note: If you change the configuration after having compiled the
           package already, you should run a "gmake clean" before
           recompiling.

  6. Compile the package.

        > gmake

     Note: The explicit gmake targets "opt" and "debug", etc. have
           been removed in this package.  Use the corresponding
           options to the configure script instead.

  7. At this point you may wish to verify the compiled package by
     testing the example suite.

        > gmake check

     This will compile and run the examples in the subdirectory
     examples.

  8. Install the package.

        > gmake install

  9. You can now remove the temporary directory, .e.g,

        > cd ..
        > rm -rf objdir

     Alternatively, you can keep the temporary directory to allow you to:

     a) Experiment with the examples.

     b) Later uninstall the package. To clean up the temporary 
        directory, enter:

            > gmake clean

        To uninstall the package, enter:

            > gmake uninstall


Running the Examples
====================

Copies of the examples reside in the temporary directory - see
instruction 7 above for details on building and running them.

In addition, a copy of the example code resides in the directory
examples at the highest level of the installation (or in the
shared documentation install directory).

Use the makefiles provided in  the 'examples' directory as templates 
for makefiles you need for compiling your own examples.


Using the Configure Script
==========================
 
The `configure' shell script tries to determine the correct values for
various system-dependent variables used during compilation. It uses
these values to create a `Makefile' in each directory of the package.
It also creates one or more `.h' files containing system-dependent
definitions if needed. Then, it creates the following files:

  config.status         A shell script that you can run at another time to
                        recreate the current configuration.

  config.cache          A file in which the configure test results are
                        saved to speed up reconfiguration.

                        Data is appended to the config.cache file. 
                        You can remove unwanted data.

  config.log            A file in which compiler output is saved.
                        This is used to debug the configure script.

If you need to use other commands to successfully compile the package
on your system, please try to determine if the configure script can be used 
for these commands. Then, send either a diff file or instructions about
the commands you used to the email address provided in the README file.
This information will be used to improve the installation process in
the next release.

The `configure.ac' file is provided in case you want to change or regenerate
the `configure' script, for example to use a newer version of `autoconf'. 
The `configure.ac' file is used by the `autoconf' program to create the
`configure' script.

Note for (key) developers:

  In case you have changed the `configure.ac' file or one of the
  `Makefile.am' files:

  - Use the `config/distclean' script to remove the generated `configure'
    script, the generated `aclocal.m4' file and the generated `Makefile.in'
    files.

  - Use the `config/bootstrap' script to generate the `configure' script
    and the necessary `Makefile.in' files. This script makes use of the
    GNU auto-tools `aclocal', `automake', and `autoconf'.


Compilation and Linking Options
===============================

Some systems require compilation or linking options that the `configure'
script does not define. You can define the initial values for these
options by setting them in your environment before running the
`configure' script.

Instead of passing the variables via the environment, it is preferred
to pass the values as options to the configure script:

  > ../configure CXX=g++-4.4 LIBS=-lposix


Specifying the System Type
==========================

Some features cannot be automatically determined by `configure' unless
it can detect the host type on which the package will run.
If it prints a message that it cannot determine the host type, 
use the `--host=TYPE' option to define it. TYPE can either be a 
short system name, such as `sun4', or a canonical name with three fields:

     CPU-COMPANY-SYSTEM

See the `config.sub' file for details about the values of each field. If
the `config.sub' file is not included in the package, the package does not
need to know the host type.

If you are building compiler tools for cross-compiling, you can also
use the `--target=TYPE' option to select the type of system for which
the code is produced and the `--build=TYPE' option to select the type of
system on which you are compiling the package.


Sharing Defaults
================

You can set the default values that `configure' scripts share by
creating a site shell script called `config.site'. This file contains the
default values for variables like `CC', `cache_file', and `prefix'.
The `configure' script looks for the `config.site' file in the following 
search precedence:

  1. PREFIX/share/config.site

  2. PREFIX/etc/config.site

Alternatively, you can set the `CONFIG_SITE' environment variable to the
site script path.

Note: The `configure' script for some systems does not look for a site script.


Operation Controls
==================

The `configure' script recognizes the following additional options to control
its operation:

`--cache-file=FILE'
        Use and save the test results in FILE instead of
        `./config.cache'. Set FILE to `/dev/null' to disable caching
        when debugging `configure'.

`--help'
        Print a summary of `configure' options and exit.

`--quiet'
`--silent'
`-q'
        Do not print messages about checks being made.
        To suppress all normal output, redirect it to `/dev/null'.
        Error messages continue to print.

`--srcdir=DIR'
        Look for the package's source code in directory DIR.
        Typically `configure' determines the directory automatically.

`--version'
        Print the version of `autoconf' used to generate the `configure'
        script and exit.

Other options that are rarely used are available in the `configure' script.
Use the `--help' option to print a list.



2. Installation Notes for Windows
---------------------------------

This release has been tested on Visual C++ versions 2005 through 2013,
running on Windows 7.


Note: This section covers the installation based on Microsoft Visual C++.
      For Cygwin or MinGW-based installations, see Section 1.


Note: If you experience spurious errors about missing files in the
      downloaded archive, please make sure to either download the
      ZIP archive from accellera.org or use a reliable archive software,
      fully supporting modern tar archive versions.

      Some paths in the SystemC archive are longer than the historical
      99 character limit, and several Windows archivers (e.g. WinZip)
      have been reported to trip over this.  The open source archiver
      7-zip (http://7-zip.org) is known to work.


Microsoft Visual C++ 2005 (compiler version 8.0) or later
---------------------------------------------------------

The download directory contains two subdirectories: 'msvc80' and
'examples'.

The 'msvc80' directory contains the project and workspace files to
compile the 'systemc.lib' library. Double-click on the 'SystemC.sln'
file to launch Visual C++ 2005 with the workspace file. The workspace file
will have the proper switches set to compile for Visual C++ 2005.
Select `Build SystemC' under the Build menu or press F7 to build
`systemc.lib'.

The `examples' directory contains the project and workspace files to
compile the SystemC examples. Go to one of the examples subdirectories
and double-click on the .vcproj file to launch Visual C++ with the
workspace file. The workspace file will have the proper switches set
to compile for Visual C++ 2005. Select 'Build <example>.exe' under the
Build menu or press F7 to build the example executable.

For convenience, a combined solution file 'SystemC-examples.sln' with
all example projects can be found in the 'msvc80' directory.  A similar
solution file for the TLM examples is located in 'examples/tlm/build-msvc'.

The provided project files are prepared for both the 32-bit 'Win32' and
64-bit 'x64' configurations.  Please refer to the Microsoft Visual Studio
documentation for details about 64-bit builds.


Creating SystemC Applications
-----------------------------

1. Start Visual Studio. From the Start Page select New Project and Win32 
   Console Project. Type the project name and select a suitable location 
   then click OK.

2. Select the Application Settings page of the Win32 Application Wizard 
   and make sure the 'Empty project' box is ticked. Click 'Finish' to 
   complete the wizard.
   
3. Add new/existing C++ files to the project and edit code.

4. Display the project Property Pages by selecting 'Properties...' from 
   the Project menu. 
   
5. From the C/C++ tab, select the General properties and set 
   'Detect 64-bit Portability Issues' to No

6. From the C/C++ tab, select the Language properties and set 
   'Enable Run-Time Type Info' to Yes

7. From the C/C++ tab, select the Command Line properties and add /vmg
   to the 'Additional Options:' box.

8. From the Linker tab, select the Input properties and type 'systemc.lib' 
   in the 'Additional Dependencies' box.

9. Click OK


Also make sure that the compiler and linker can find the SystemC header 
and library files respectively. There are two ways to do this:

To update the include file and library directory search paths for all
projects:

1. Select Tools -> Options... and the Projects -> VC++ Directories tab
   
2. Select show directories for: Library files

3. Select the 'New' icon and browse to: C:\systemc-2.3.1\msvc80\systemc\debug

4. Select show directories for: Include files

5. Select the 'New' icon and browse to: C:\systemc-2.3.1\src

To add the include file and library directory search paths for the current
project only:

1. Display the project Property Pages by selecting 'Properties...' from 
   the Project menu. 

2. From the C/C++ tab, select the General properties and type the path to the 
   SystemC 'src' directory in the text entry field labeled
  'Additional include directories' (e.g. the examples use '..\..\..\src').

3. From the Linker tab, select the General properties and type the path to 
   the SystemC library:   ...\systemc-2.3.1\msvc80\systemc\debug'systemc.lib' 
   in the 'Additional Library Directories:' box.

9. Click OK




3. SystemC Library Configuration Switches
-----------------------------------------

In addition to the explicitly selectable feature given as options to
the `configure' script (see 1.), some aspects of the library
implementation can be controlled via

 - preprocessor switches given during library build
 - preprocessor switches added while building a SystemC application
 - environment variables

The currently supported switches are documented in this section.

Preprocessor switches
=====================

Additional preprocessor switches for the library build can be passed
to the configure script via the CXXFLAGS variable:

  ../configure CXXFLAGS="-DSC_OVERRIDE_DEFAULT_STACK_SIZE=0x80000"

In Visual C++, the preprocessor symbols can be added to the project
configuration via the 'C/C++' tab under the 'Preprocessor' properties
in the 'Preprocessor definitions' setting.


 * SC_DEFAULT_WRITER_POLICY=<sc_writer_policy> -
   Override default value for the signal writer policy

   This setting allows deactivating the multiple writer checks for
   sc_signals at (application) compile time.  This mechanism supersedes
   the old environment variable SC_SIGNAL_WRITE_CHECK (see below).

   Supported values:
      SC_ONE_WRITER        (default)
      SC_MANY_WRITERS      (allow multiple writers in different deltas)
      SC_UNCHECKED_WRITERS (non-standard, disable all checks)

   Note: Only effective when building an application.

   Note: This setting needs to be consistently set across all
         translation units of an application.


 * SC_DISABLE_ASYNC_UPDATES -
   Exclude the "async_request_update" support

   Note: This option is usually set by the `configure` option
     --disable-async-update, or
     --enable-async-update=no

   On non-Automake platforms (e.g. Visual C++), this preprocessor
   symbol can be used to manually build the library with this feature.

   Note: Only effective during library build.


 * SC_DISABLE_VIRTUAL_BIND - 
   Keep the "bind" function of sc_ports non-virtual

   When this symbol is defined, the "bind" function in sc_ports is
   kept non-virtual (although it is required to be 'virtual' since
   IEEE 1666-2011).

   Note: This symbol needs to be consistently defined in the library
         and any application linking against the built library.


 * SC_DISABLE_COPYRIGHT_MESSAGE -
   Do not print the copyright message when starting the application

   Note: This does not remove the copyright from the binary.
         sc_core::sc_copyright() still works as expected.
   Note: Only effective during library build.
   See : Environment variable SC_COPYRIGHT_MESSAGE


 * SC_ENABLE_IMMEDIATE_SELF_NOTIFICATIONS -
   Allow a process to trigger itself immediately

   Allow a method process to trigger itself immediately by using
      next_trigger( ev ); // or a static sensitivity
      ev.notify();

   This behaviour has been disabled by default in IEEE 1666-2011 and
   can be reenabled by this option.

   Note: Only effective during library build.


 * SC_ENABLE_EARLY_MAXTIME_CREATION -
   Allow creation of sc_time objects with a value of sc_max_time()
   before finalizing the time resolution

   In IEEE 1666-2011, it is not allowed to create sc_time objects with
   a non-SC_ZERO_TIME value before setting/changing the time resolution.

   This preprocessor switch activates an extension to allow the
   initialization of sc_time variables with sc_max_time() while
   still accepting changes to the time resolution afterwards.

     sc_time t = sc_max_time();
     sc_set_time_resolution( 1, SC_NS ); // OK, with this extension

   The time resolution will still be fixed, once you have explicitly or
   implicitly relied on the physical value (i.e. the relation to seconds)
   of any sc_time object.

   Note: Only effective during library build.


 * SC_ENABLE_SIMULATION_PHASE_CALLBACKS         (experimental)
   SC_ENABLE_SIMULATION_PHASE_CALLBACKS_TRACING (experimental) -
   Enable a generic simulation phase callback mechanism.

   Note: This option is usually set by the `configure` option
     --enable-phase-callbacks, or
     --enable-phase-callbacks=tracing

   See the RELEASENOTES for more information about this feature.

   The *_TRACING variant of this flag enables the sc_trace
   implementation use these callbacks, instead of hard-coded updates
   from the main simulator loop.

   Note: Setting tracing flag includes the generic phase callback
         infrastructure automatically.
   Note: Only effective during library build.


 * SC_INCLUDE_DYNAMIC_PROCESSES -
   Enable dynamic process support (sc_spawn, sc_bind)

   To improve compilation times, the functions for spawing dynamic
   processes are not included by default in an SystemC application.

   Define this symbol before including the SystemC header in your
   application, if you want to use dynamically spawned processes.

   Note: Can be optionally set per translation unit in an application.

   Note: Some TLM convenience sockets require this feature and define
         the symbol for you if needed.


 * SC_INCLUDE_FX -
   Enable SystemC fix-point datatypes

   To improve compilation times, the fixpoint datatypes are not enabled
   by default in an SystemC application.

   Define this symbol before including the SystemC header in your
   application, if you want to use the SystemC fixpoint types.

   Note: Is by default always defined during the library build to enable
         later use of the fixpoint datatypes in an application.

   Note: Can be optionally set per translation unit in an application.


 * SC_INCLUDE_STRSTREAM -
   Include (deprecated) <strstream> header from <systemc.h>

   Pre-standard C++ compilers had support for an old stringstream
   implementation called 'strstream'.  In the unlikely case that your
   application still relies on this deprecated class and that <systemc.h>
   includes this header for you automatically, you now need to define this
   symbol when building your application.

   Note: Only effective when building an application.


 * SC_INCLUDE_WINDOWS_H -
   Explicitly include <windows.h> header from <systemc> header

   Previous versions of SystemC always included the full <windows.h>
   header on all Windows platforms.  This adds unnecessary bloat to
   many SystemC applications, reducing compilation times.

   If you rely on the inclusion of the <windows.h> header in your
   application, you can add this symbol to the list of preprocessor
   switches for your compiler.

   Note: Only effective when building an application.


 * SC_OVERRIDE_DEFAULT_STACK_SIZE=<size> -
   Define the default stack size used for SystemC (thread) processes

   Note: Only effective during library build.


 * SC_USE_SC_STRING_OLD / SC_USE_STD_STRING -
   Define 'sc_string' symbol.

   Pre-IEEE-1666 versions of SystemC included an 'sc_string' class for
   string objects.  This class has been superseeded by 'std::string' these
   days.

   If your application still relies on 'sc_string' being available, set one
   of the two supported preprocessor switches to provide it:

   SC_USE_SC_STRING_OLD -
     Uses old implementation `sc_string_old' to provide `sc_string':
       typedef sc_string_old sc_string; 

   SC_USE_STD_STRING -
     Provide `sc_string' as an alias to `std::string':
       typedef std::string sc_string;


Influential environment variables
=================================

Currently, three environment variables are checked at library load time
and influence the SystemC library's behaviour:

 1) SC_COPYRIGHT_MESSAGE=DISABLE -
    Run-time alternative to SC_DISABLE_COPYRIGHT_MESSAGE (see above).

 2) SC_SIGNAL_WRITE_CHECK=DISABLE
    Run-time alternative to SC_DEFAULT_WRITER_POLICY=SC_UNCHECKED_WRITERS
    (see above)

 3) SC_DEPRECATION_WARNINGS=DISABLE
    Do not issue warnings about using deprecated features as of
    IEEE 1666-2011.

Usually, it is not recommended to use any of these variables in new or
on-going projects.  They have been added to simplify the transition of
legacy code.


// Taf!