Skip to content

Commit 9c41da6

Browse files
committed
Add Windows fixes so abc compiles natively with GCC.
1 parent 1a18c9a commit 9c41da6

File tree

4 files changed

+23
-6
lines changed

4 files changed

+23
-6
lines changed

Makefile

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,11 @@ $(info $(MSG_PREFIX)Using AR=$(AR))
1414
$(info $(MSG_PREFIX)Using LD=$(LD))
1515

1616
PROG := abc
17+
1718
OS := $(shell uname -s)
19+
ifneq ($(filter MINGW%,$(OS)),)
20+
OS := MINGW
21+
endif
1822

1923
MODULES := \
2024
$(wildcard src/ext*) \
@@ -142,10 +146,15 @@ ifneq ($(OS), $(filter $(OS), FreeBSD OpenBSD NetBSD))
142146
LIBS += -ldl
143147
endif
144148

145-
ifneq ($(OS), $(filter $(OS), FreeBSD OpenBSD NetBSD Darwin))
149+
ifneq ($(OS), $(filter $(OS), FreeBSD OpenBSD NetBSD Darwin MINGW))
146150
LIBS += -lrt
147151
endif
148152

153+
# For PathMatchSpecA.
154+
ifeq ($(OS), MINGW)
155+
LIBS = -lshlwapi
156+
endif
157+
149158
ifdef ABC_USE_LIBSTDCXX
150159
LIBS += -lstdc++
151160
$(info $(MSG_PREFIX)Using explicit -lstdc++)
@@ -155,7 +164,7 @@ $(info $(MSG_PREFIX)Using CFLAGS=$(CFLAGS))
155164
CXXFLAGS += $(CFLAGS) -std=c++17 -fno-exceptions
156165

157166
SRC :=
158-
GARBAGE := core core.* *.stackdump ./tags $(PROG) arch_flags
167+
GARBAGE := core core.* *.stackdump ./tags $(PROG) arch_flags $(PROG).in
159168

160169
.PHONY: all default tags clean docs cmake_info
161170

@@ -221,9 +230,17 @@ clean:
221230
tags:
222231
etags `find . -type f -regex '.*\.\(c\|h\)'`
223232

233+
ifeq ($(OS), MINGW)
234+
$(PROG): $(OBJ)
235+
@echo "$(MSG_PREFIX)\`\` Constructing Response File:" $(notdir @$@.in)
236+
$(file >$@.in,$^ $(LDFLAGS) $(LIBS))
237+
@echo "$(MSG_PREFIX)\`\` Building binary:" $(notdir $@)
238+
$(VERBOSE)$(LD) -o $@ @$@.in
239+
else
224240
$(PROG): $(OBJ)
225241
@echo "$(MSG_PREFIX)\`\` Building binary:" $(notdir $@)
226242
$(VERBOSE)$(LD) -o $@ $^ $(LDFLAGS) $(LIBS)
243+
endif
227244

228245
lib$(PROG).a: $(LIBOBJ)
229246
@echo "$(MSG_PREFIX)\`\` Linking:" $(notdir $@)

src/sat/cadical/cadical_congruence.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5981,7 +5981,7 @@ void Closure::rewrite_ite_gate (Gate *g, int dst, int src) {
59815981
#endif
59825982
} else {
59835983
CADICAL_assert (false);
5984-
#ifdef WIN32
5984+
#ifdef _MSC_VER
59855985
__assume(false);
59865986
#else
59875987
__builtin_unreachable ();

src/sat/cadical/cadical_vivify.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1501,7 +1501,7 @@ inline std::vector<vivify_ref> &current_refs_schedule (Vivifier &vivifier) {
15011501
return vivifier.refs_schedule_irred;
15021502
break;
15031503
}
1504-
#ifdef WIN32
1504+
#ifdef _MSC_VER
15051505
__assume(false);
15061506
#else
15071507
__builtin_unreachable ();
@@ -1523,7 +1523,7 @@ inline std::vector<Clause *> &current_schedule (Vivifier &vivifier) {
15231523
return vivifier.schedule_irred;
15241524
break;
15251525
}
1526-
#ifdef WIN32
1526+
#ifdef _MSC_VER
15271527
__assume(false);
15281528
#else
15291529
__builtin_unreachable ();

src/sat/kissat/colors.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include "colors.h"
22

3-
#ifdef WIN32
3+
#ifdef _MSC_VER
44
#define isatty _isatty
55
#else
66
#include <unistd.h>

0 commit comments

Comments
 (0)