diff --git a/src/aig/gia/giaKf.c b/src/aig/gia/giaKf.c index 6909851f1a..820178d36c 100644 --- a/src/aig/gia/giaKf.c +++ b/src/aig/gia/giaKf.c @@ -29,7 +29,7 @@ #ifdef ABC_USE_PTHREADS -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) #include "../lib/pthread.h" #else #include diff --git a/src/aig/gia/giaTranStoch.c b/src/aig/gia/giaTranStoch.c index f7b300c0d0..286eae98b2 100644 --- a/src/aig/gia/giaTranStoch.c +++ b/src/aig/gia/giaTranStoch.c @@ -37,7 +37,7 @@ #ifdef ABC_USE_PTHREADS -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) #include "../lib/pthread.h" #else #include diff --git a/src/base/cmd/cmdAuto.c b/src/base/cmd/cmdAuto.c index 8151c2e534..98cb6a5a2a 100644 --- a/src/base/cmd/cmdAuto.c +++ b/src/base/cmd/cmdAuto.c @@ -29,7 +29,7 @@ #ifdef ABC_USE_PTHREADS -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) #include "../lib/pthread.h" #else #include diff --git a/src/base/cmd/cmdStarter.c b/src/base/cmd/cmdStarter.c index bfbe5533d2..f0cb121b1d 100644 --- a/src/base/cmd/cmdStarter.c +++ b/src/base/cmd/cmdStarter.c @@ -27,7 +27,7 @@ #ifdef ABC_USE_PTHREADS -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) #include "../lib/pthread.h" #else #include diff --git a/src/base/wlc/wlcPth.c b/src/base/wlc/wlcPth.c index ddafab23ca..5a699e888a 100644 --- a/src/base/wlc/wlcPth.c +++ b/src/base/wlc/wlcPth.c @@ -23,7 +23,7 @@ #ifdef ABC_USE_PTHREADS -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) #include "../lib/pthread.h" #else #include diff --git a/src/map/if/ifDsd.c b/src/map/if/ifDsd.c index c25873a9f4..f72df0ac55 100644 --- a/src/map/if/ifDsd.c +++ b/src/map/if/ifDsd.c @@ -32,7 +32,7 @@ #ifdef ABC_USE_PTHREADS -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) #include "../lib/pthread.h" #else #include diff --git a/src/map/if/ifTest.c b/src/map/if/ifTest.c index fa9a644437..4b1ede06f5 100644 --- a/src/map/if/ifTest.c +++ b/src/map/if/ifTest.c @@ -23,7 +23,7 @@ #ifdef ABC_USE_PTHREADS -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) #include "../lib/pthread.h" #else #include diff --git a/src/misc/util/utilAigSim.c b/src/misc/util/utilAigSim.c index 3bbde59a88..4d89b615f7 100644 --- a/src/misc/util/utilAigSim.c +++ b/src/misc/util/utilAigSim.c @@ -30,6 +30,8 @@ #define mkstemp(p) _mktemp_s(p, strlen(p)+1) #else #include // mkstemp(), close(), unlink() +#include +#include #endif #ifdef _WIN32 @@ -333,8 +335,14 @@ static int ends_with(const char *s, const char *suf) { static int make_tmp_file(char *path, size_t cap, const char *prefix) { // Creates an existing temp file (for input) +#if defined(__wasm) + static int seq = 0; // no risk of collision since we're in a sandbox + snprintf(path, cap, "%s%08d", prefix, seq++); + int fd = open(path, O_CREAT | O_EXCL | O_RDWR, S_IREAD | S_IWRITE); +#else snprintf(path, cap, "/tmp/%sXXXXXX", prefix); int fd = mkstemp(path); +#endif if (fd < 0) return 0; close(fd); return 1; @@ -342,8 +350,14 @@ static int make_tmp_file(char *path, size_t cap, const char *prefix) { static int make_tmp_path_noexist(char *path, size_t cap, const char *prefix) { // Creates a unique temp path that does not exist (for output) +#if defined(__wasm) + static int seq = 0; // no risk of collision since we're in a sandbox + snprintf(path, cap, "%s%08d", prefix, seq++); + int fd = open(path, O_CREAT | O_EXCL | O_RDWR, S_IREAD | S_IWRITE); +#else snprintf(path, cap, "/tmp/%sXXXXXX", prefix); int fd = mkstemp(path); +#endif if (fd < 0) return 0; close(fd); unlink(path); @@ -612,7 +626,11 @@ static int SimulateCompareAigBin(const AigMan *p1, const char *bin, // Run external binary: " " remove(outFile); snprintf(cmd, sizeof(cmd), "%s %s %s", bin, inFile, outFile); +#if defined(__wasm) + int rc = -1; +#else int rc = system(cmd); +#endif if (rc != 0) { fprintf(stderr, "Error: system() failed (rc=%d): %s\n", rc, cmd); goto fail; diff --git a/src/misc/util/utilPth.c b/src/misc/util/utilPth.c index 940f7929a8..0e7194235e 100644 --- a/src/misc/util/utilPth.c +++ b/src/misc/util/utilPth.c @@ -23,7 +23,7 @@ #include #include -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) #include #include // nanosleep implementation for Windows @@ -41,7 +41,7 @@ static inline int nanosleep(const struct timespec *req, struct timespec *rem) { #ifdef ABC_USE_PTHREADS -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) #include "../lib/pthread.h" #else #include diff --git a/src/opt/ufar/UfarMgr.cpp b/src/opt/ufar/UfarMgr.cpp index 924ad0d6b4..67b5aed855 100755 --- a/src/opt/ufar/UfarMgr.cpp +++ b/src/opt/ufar/UfarMgr.cpp @@ -16,8 +16,6 @@ #ifdef _WIN32 #include -#else -#include #endif #include diff --git a/src/opt/ufar/UfarPth.cpp b/src/opt/ufar/UfarPth.cpp index f2ef593742..85bb0e178a 100755 --- a/src/opt/ufar/UfarPth.cpp +++ b/src/opt/ufar/UfarPth.cpp @@ -1,7 +1,7 @@ #include "misc/util/abc_namespaces.h" -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) #include "../lib/pthread.h" #else #include @@ -188,6 +188,10 @@ class PDRWLA : public Solver { Wlc_Par_t _Pars; }; +#if defined(__wasm) +static void pthread_exit(void *retval) __attribute__((noreturn)) { } +#endif + void KillOthers() { pthread_cond_signal( &g_cond ); ++g_nRunIds; diff --git a/src/opt/untk/NtkNtk.cpp b/src/opt/untk/NtkNtk.cpp index 62ab1e3432..0c74a47615 100755 --- a/src/opt/untk/NtkNtk.cpp +++ b/src/opt/untk/NtkNtk.cpp @@ -9,7 +9,6 @@ #include #else #include -#include #endif #include diff --git a/src/opt/util/util.cpp b/src/opt/util/util.cpp index a4b3ceba50..fa80bebd9e 100644 --- a/src/opt/util/util.cpp +++ b/src/opt/util/util.cpp @@ -6,7 +6,9 @@ */ #include +#if !defined(__wasm) #include +#endif #ifdef _WIN32 #include #else diff --git a/src/proof/abs/absPth.c b/src/proof/abs/absPth.c index f04a20d1c6..d8cb343598 100644 --- a/src/proof/abs/absPth.c +++ b/src/proof/abs/absPth.c @@ -25,7 +25,7 @@ #ifdef ABC_USE_PTHREADS -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) #include "../lib/pthread.h" #else #include diff --git a/src/proof/cec/cecProve.c b/src/proof/cec/cecProve.c index ff10e8cae1..281dc27043 100644 --- a/src/proof/cec/cecProve.c +++ b/src/proof/cec/cecProve.c @@ -30,7 +30,7 @@ #ifdef ABC_USE_PTHREADS -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) #include "../lib/pthread.h" #else #include diff --git a/src/proof/cec/cecSplit.c b/src/proof/cec/cecSplit.c index 34a635b88f..9c402a89f5 100644 --- a/src/proof/cec/cecSplit.c +++ b/src/proof/cec/cecSplit.c @@ -28,7 +28,7 @@ #ifdef ABC_USE_PTHREADS -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) #include "../lib/pthread.h" #else #include diff --git a/src/proof/ssw/sswPart.c b/src/proof/ssw/sswPart.c index 3a65f17ddc..094ffab889 100644 --- a/src/proof/ssw/sswPart.c +++ b/src/proof/ssw/sswPart.c @@ -25,7 +25,7 @@ #ifdef ABC_USE_PTHREADS -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) #include #include #include "../lib/pthread.h" diff --git a/src/sat/bmc/bmcBmcS.c b/src/sat/bmc/bmcBmcS.c index 8bfda56ba7..f43722c9e8 100644 --- a/src/sat/bmc/bmcBmcS.c +++ b/src/sat/bmc/bmcBmcS.c @@ -48,7 +48,7 @@ #ifdef ABC_USE_PTHREADS -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) #include "../lib/pthread.h" #else #include diff --git a/src/sat/cnf/cnfUtil.c b/src/sat/cnf/cnfUtil.c index 3a47ae796f..0c5791f6fe 100644 --- a/src/sat/cnf/cnfUtil.c +++ b/src/sat/cnf/cnfUtil.c @@ -29,7 +29,7 @@ #ifdef ABC_USE_PTHREADS -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__MINGW32__) #include "../lib/pthread.h" #else #include