summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Makefile.osx28
-rw-r--r--tools/Makefile.osx15
2 files changed, 37 insertions, 6 deletions
diff --git a/src/Makefile.osx b/src/Makefile.osx
index 1a0e42f..c95cf90 100644
--- a/src/Makefile.osx
+++ b/src/Makefile.osx
@@ -23,10 +23,21 @@ endif
REGEXP= -DUSE_PCRE_REGEX -DPCRE_OPT=$(PCRE_OPT)
OBJ = ivyloop.o timer.o ivysocket.o ivy.o ivybuffer.o ivyfifo.o ivybind.o intervalRegexp.o
+OMPOBJ = ivyloop.o timer.o ivysocket_omp.o ivy_omp.o ivybuffer.o ivyfifo.o ivybind.o intervalRegexp.o
+
CC=gcc
LIBTOOL=ar q # linux and solaris
CFLAGS = -g -Wall $(FPIC)
TOOLS_DIR = ../tools
+
+# you should first install gcc version >= 4.3
+# gcc (g++) 4.3 is the first gcc version which support openmp under macosx
+# using macport greatly simplify gcc install : port install gcc43
+OMPCC = gcc-mp-4.3
+OMPCPP = g++-mp-4.3
+OMPCFLAGS = $(CFLAGS) -fopenmp -DOPENMP=1
+OMPLIB = -lgomp -lpthread
+
# ------------------------------------------------------------------------------------------
.c.o:
@@ -37,6 +48,9 @@ TOOLS_DIR = ../tools
all: static-libs shared-libs tools
+libomp: libivy_omp.a
+omp: libomp
+ @(cd $(TOOLS_DIR) && $(MAKE) -f Makefile.osx omp)
static-libs: libivy.a
@@ -45,13 +59,27 @@ shared-libs: libivy.dylib
ivybind.o: ivybind.c
$(CC) -c $(CFLAGS) $(REGEXP) $(PCREINC) ivybind.c
+ivy_omp.o: ivy.c
+ $(OMPCC) -c $(OMPCFLAGS) -o ivy_omp.o ivy.c
+
+ivysocket_omp.o: ivysocket.c
+ $(OMPCC) -c $(OMPCFLAGS) -o ivysocket_omp.o ivysocket.c
+
+
libivy.a: $(OBJ)
rm -f $@
$(LIBTOOL) $@ $(OBJ)
+libivy_omp.a: $(OMPOBJ)
+ rm -f $@
+ $(LIBTOOL) $@ $(OMPOBJ)
+
libivy.dylib: $(OBJ)
$(CC) -dynamiclib -o $@ $(OBJ) $(PCRELIB)
+libivy_omp.dylib: $(OMPOBJ)
+ $(OMPCC) -dynamiclib -o $@ $(OMPOBJ) $(PCRELIB) $(OMPLIB)
+
# ------------------------------------------------------------------------------------------
installlibs: static-libs shared-libs
diff --git a/tools/Makefile.osx b/tools/Makefile.osx
index 4591e8e..580a44c 100644
--- a/tools/Makefile.osx
+++ b/tools/Makefile.osx
@@ -8,6 +8,9 @@ GLUTLIB = -L. -lglut -lGLU -lGL -lX11 -lXmu
TARGETS = ivyprobe ivythroughput ivyperf #ivyprobe_efence
OMP_TARGET= ivyprobe_omp ivythroughput_omp
+OMPLIB = -lgomp -lpthread
+OMPCC = gcc-mp-4.3
+OMPCPP = g++-mp-4.3
PCRELIB = `pcre-config --libs`
PCREINCL = `pcre-config --cflags`
@@ -26,27 +29,27 @@ all: $(TARGETS)
omp: $(OMP_TARGET)
ivyprobe: ivyprobe.o ../src/libivy.a
- $(CC) $(CFLAGS) $(EXTRAINC) -o $@ ivyprobe.o -L. -livy $(PCRELIB) $(EXTRALIB)
+ $(CC) $(CFLAGS) $(EXTRAINC) -o $@ ivyprobe.o -L../src -livy $(PCRELIB) $(EXTRALIB)
ivythroughput: ivythroughput.o ../src/libivy.a
- $(CPP) $(CFLAGS) $(EXTRAINC) -o $@ ivythroughput.o -L. -livy -lpcrecpp $(PCRELIB) $(EXTRALIB)
+ $(CPP) $(CFLAGS) $(EXTRAINC) -o $@ ivythroughput.o -L../src -livy -lpcrecpp $(PCRELIB) $(EXTRALIB)
ivyprobe_efence: ivyprobe.o ../src/libivy.a
- $(CPP) $(CFLAGS) $(EXTRAINC) -o $@ ivyprobe.o -L. -livy -lpcrecpp $(PCRELIB) $(EXTRALIB) -lefence
+ $(CPP) $(CFLAGS) $(EXTRAINC) -o $@ ivyprobe.o -L../src -livy -lpcrecpp $(PCRELIB) $(EXTRALIB) -lefence
ivyprobe_omp: ivyprobe.o ../src/libivy_omp.a
- $(CC) $(CFLAGS) $(EXTRAINC) $(PCREINCL) -o $@ ivyprobe.o -L. -livy_omp $(PCRELIB) $(EXTRALIB) $(OMPLIB)
+ $(OMPCC) $(CFLAGS) $(EXTRAINC) $(PCREINCL) -o $@ ivyprobe.o -L../src -livy_omp $(PCRELIB) $(EXTRALIB) $(OMPLIB)
ivythroughput_omp: ivythroughput.o ../src/libivy_omp.a
- $(CPP) $(CFLAGS) $(EXTRAINC) $(PCREINCL) -o $@ ivythroughput.o -L. -livy_omp -lpcrecpp $(PCRELIB) $(EXTRALIB) $(OMPLIB)
+ $(OMPCPP) $(CFLAGS) $(EXTRAINC) $(PCREINCL) -o $@ ivythroughput.o -L../src -livy_omp -lpcrecpp $(PCRELIB) $(EXTRALIB) $(OMPLIB)
ivyprobe.o : ivyprobe.c
$(CC) $(CFLAGS) $(EXTRAINC) $(REGEXP) -c ivyprobe.c -o $@
ivyperf: ivyperf.o ../src/libivy.a
- $(CC) $(CFLAGS) $(EXTRAINC) -o $@ ivyperf.o -L. -livy $(PCRELIB) $(EXTRALIB)
+ $(CC) $(CFLAGS) $(EXTRAINC) -o $@ ivyperf.o -L../src -livy $(PCRELIB) $(EXTRALIB)
installbins: $(TARGETS)