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
torestrict_var
– it is a keyword now.
- OSX builds
- Use MacPort to install GCC:
sudo port install gcc5 sudo port select --set gcc mp-gcc5
- 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. Install MinGW-W64 in Ubuntu as follows:
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 defaultsbrk
. - 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
inbwd_com.c
needsCloseHandle
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 ontimeSetEvent
function that requires-lwinmm
at linking.
Compiling for Linux or OSX
- 32-bit SIS for Linux or OSX:
./configure CFLAGS=-m32 make
- 64-bit SIS for Linux or OSX:
./configure CFLAGS=-m64 make
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
Copyright © 2014-2024 workcraft.org