User Tools

Site Tools


devel:sis

This is an old revision of the document!


Building SIS

SIS provides a logic synthesis library libsis.a that is required for Petrify. The following instructions are for SIS 1.3 Unofficial Distribution.

Generic notes

  • GCC compatibility
    • Replace restrict to restrict_var – it is a keyword now.
  • Windows builds
    • Cygwin build is smooth, but it introduces ugly dependency on cygwin1.dll for compatibility layer.
    • MinGW provides a convenient toolchain for cross-compilation and does not introduce unnecessary dependencies. To install MinGW-W64 in Ubuntu so:
      sudo apt install mingw-w64
    • Use __MINGW32__ macro to distinguish Windows builds.
    • Add -lwinmm to the linker command:
      ifneq ($(findstring mingw32, $(CC)),)
          sis_LDADD = libsis.a -lm -lwinmm
      else
          sis_LDADD = libsis.a -lm
      endif
  • The primary goal is to build libsis.a library for linking with Petrify without compatibility layer of Cygwin or MSYS2. The following changes and sacrifices had to be made for Windows build:
    • As the terminal API is not supported in Windows, all the SIS interactive functionality is excluded from Windows build.
    • Memory management is switched to malloc instead of default sbrk.
    • Host name is assigned to “unknown” as gethostname function could not be found even when linked with -lws2_32 option.
    • An alternative implementation of signal SIGSTOP in bwd_com.c needs CloseHandle function which however cannot be found at linking. It is commented out which may lead to resource leaks.
    • An alternative implementation of SIGALRM is based on timeSetEvent function that requires -lwinmm at linking.

Cross-compiling for Windows

  • 32-bit SIS for Windows:
    ./configure --host=i686-w64-mingw32
    make
  • 64-bit SIS for Windows:
    ./configure --host=x86_64-w64-mingw32
    make

Compiling for Linux

  • 32-bit SIS for Linux:
    ./configure CFLAGS=-m32
    make
  • 64-bit SIS for Linux:
    ./configure CFLAGS=-m64
    make
Copyright © 2014-2024 workcraft.org

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki