Fix Cygwin build and document needed packages
authorMiodrag Milanovic <mmicko@gmail.com>
Wed, 19 Sep 2018 08:16:53 +0000 (10:16 +0200)
committerJim Lawson <ucbjrl@berkeley.edu>
Mon, 8 Oct 2018 18:38:10 +0000 (11:38 -0700)
Makefile
README.md
kernel/yosys.cc

index 7698047ecac4a044c6f29412cba92e289c345700..365b92ea4947acb5584379c2401d101439a585c6 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -175,6 +175,12 @@ LD = gcc-4.8
 CXXFLAGS += -std=c++11 -Os
 ABCMKARGS += ARCHFLAGS="-DABC_USE_STDINT_H"
 
+else ifeq ($(CONFIG),cygwin)
+CXX = gcc
+LD = gcc
+CXXFLAGS += -std=gnu++11 -Os
+ABCMKARGS += ARCHFLAGS="-DABC_USE_STDINT_H"
+
 else ifeq ($(CONFIG),emcc)
 CXX = emcc
 LD = emcc
@@ -729,6 +735,9 @@ config-msys2: clean
 config-msys2-64: clean
        echo 'CONFIG := msys2-64' > Makefile.conf
 
+config-cygwin: clean
+       echo 'CONFIG := cygwin' > Makefile.conf
+
 config-gcov: clean
        echo 'CONFIG := gcc' > Makefile.conf
        echo 'ENABLE_GCOV := 1' >> Makefile.conf
index 424d9bbf2f9cf70dae3fa144a5ed4670a1c57e99..41ae4ac18d9cc353681677025733abe8e49af0c4 100644 (file)
--- a/README.md
+++ b/README.md
@@ -69,6 +69,10 @@ On FreeBSD use the following command to install all prerequisites:
 On FreeBSD system use gmake instead of make. To run tests use:
     % MAKE=gmake CC=cc gmake test
 
+For Cygwin use the following command to install all prerequisites, or select these additional packages:
+
+       setup-x86_64.exe -q --packages=bison,flex,gcc-core,gcc-g++,git,libffi-devel,libreadline-devel,make,pkg-config,python3,tcl-devel
+
 There are also pre-compiled Yosys binary packages for Ubuntu and Win32 as well
 as a source distribution for Visual Studio. Visit the Yosys download page for
 more information: http://www.clifford.at/yosys/download.html
index 264b1f63d0c41e6747b67389887068a80e1ab58a..ad032899c1df30826cbba3c9adca7af0ebc1701e 100644 (file)
@@ -166,7 +166,7 @@ std::string vstringf(const char *fmt, va_list ap)
        std::string string;
        char *str = NULL;
 
-#ifdef _WIN32
+#if defined(_WIN32 )|| defined(__CYGWIN__) 
        int sz = 64, rc;
        while (1) {
                va_list apc;