Skip to content

Commit ee10177

Browse files
DilumAluthgempastell
authored andcommitted
If compilation fails with the -fopenmp flag, retry without the -fopenmp flag. Fixes #39 (#40)
* If compilation fails with -fopenmp flag, try again without that flag * Add "deps/build.log" to .gitignore
1 parent 2d8be89 commit ee10177

File tree

3 files changed

+37
-6
lines changed

3 files changed

+37
-6
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@
22
*.so.2
33
*.o
44
test*.jl
5+
6+
deps/build.log

deps/libsvm-3.22/Makefile

+27-5
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,47 @@
11
CXX ?= g++
2-
CFLAGS = -Wall -Wconversion -O3 -fPIC -fopenmp
2+
CFLAGS_normal = -Wall -Wconversion -O3 -fPIC -DENABLEOPENMP -fopenmp
3+
CFLAGS_fallback = -Wall -Wconversion -O3 -DDISABLEOPENMP -fPIC
34
SHVER = 2
45
OS = $(shell uname)
56

67
all: svm-train svm-predict svm-scale
78

8-
lib: svm.o
9+
lib:
10+
$(MAKE) lib_normal || $(MAKE) lib_fallback
11+
12+
lib_normal: svm.o
13+
if [ "$(OS)" = "Darwin" ]; then \
14+
SHARED_LIB_FLAG="-dynamiclib -Wl,-install_name,libsvm.so.$(SHVER)"; \
15+
else \
16+
SHARED_LIB_FLAG="-shared -Wl,-soname,libsvm.so.$(SHVER)"; \
17+
fi; \
18+
$(CXX) $${SHARED_LIB_FLAG} -DENABLEOPENMP -fopenmp svm.o -o libsvm.so.$(SHVER)
19+
20+
lib_fallback: svm.o
921
if [ "$(OS)" = "Darwin" ]; then \
1022
SHARED_LIB_FLAG="-dynamiclib -Wl,-install_name,libsvm.so.$(SHVER)"; \
1123
else \
1224
SHARED_LIB_FLAG="-shared -Wl,-soname,libsvm.so.$(SHVER)"; \
1325
fi; \
14-
$(CXX) $${SHARED_LIB_FLAG} -fopenmp svm.o -o libsvm.so.$(SHVER)
26+
$(CXX) $${SHARED_LIB_FLAG} -DDISABLEOPENMP svm.o -o libsvm.so.$(SHVER)
1527

1628
svm-predict: svm-predict.c svm.o
1729
$(CXX) $(CFLAGS) svm-predict.c svm.o -o svm-predict -lm
30+
1831
svm-train: svm-train.c svm.o
1932
$(CXX) $(CFLAGS) svm-train.c svm.o -o svm-train -lm
33+
2034
svm-scale: svm-scale.c
2135
$(CXX) $(CFLAGS) svm-scale.c -o svm-scale
22-
svm.o: svm.cpp svm.h
23-
$(CXX) $(CFLAGS) -c svm.cpp
36+
37+
svm.o:
38+
$(MAKE) svm.o_normal || $(MAKE) svm.o_fallback
39+
40+
svm.o_normal: svm.cpp svm.h
41+
$(CXX) $(CFLAGS_normal) -c svm.cpp
42+
43+
svm.o_fallback: svm.cpp svm.h
44+
$(CXX) $(CFLAGS_fallblack) -c svm.cpp
45+
2446
clean:
2547
rm -f *~ svm.o svm-train svm-predict svm-scale libsvm.so.$(SHVER)

deps/libsvm-3.22/svm.cpp

+8-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,14 @@
88
#include <limits.h>
99
#include <locale.h>
1010
#include "svm.h"
11-
#include "omp.h"
11+
12+
#ifdef ENABLEOPENMP
13+
#include "omp.h"
14+
#else
15+
#define omp_get_max_threads() 0
16+
#define omp_set_num_threads(num_threads) void
17+
#endif
18+
1219
int libsvm_version = LIBSVM_VERSION;
1320
typedef float Qfloat;
1421
typedef signed char schar;

0 commit comments

Comments
 (0)