blob: 35e65de30a79c728dbddb7f5a6c487e0ef48d404 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
PERHAPS64 := $(shell uname -m | perl -ne "print /64/ ? '64' : '';")
LIB = /lib$(PERHAPS64)
ifeq ($(PERHAPS64), "64")
FPIC=
else
FPIC=-fPIC
endif
ifndef PREFIX
PREFIX=/opt/rosx
endif
PCREINC = `pcre-config --cflags`
PCRELIB = `pcre-config --libs`
CASESENSITIVE = "yes"
ifeq ($(CASESENSITIVE), "no")
PCRE_OPT=PCRE_CASELESS
REGCOMP_OPT=REG_ICASE
else
PCRE_OPT=0
REGCOMP_OPT=REG_EXTENDED
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
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
OMPLIBTOOL =gar q
OMPCFLAGS = -g -Wall $(FPIC) -fopenmp -DOPENMP=1
OMPLIB = -lgomp -lpthread
LIBTOOL=ar q # linux and solaris
CFLAGS = -g -Wall $(FPIC)
CC=gcc
CPP=g++
#CC = $(OMPCC)
#CPP = $(OMPCPP)
#LIBTOOL = $(OMPLIBTOOL)
#CFLAGS = $(OMPCFLAGS)
# ------------------------------------------------------------------------------------------
.c.o:
$(CC) $(CFLAGS) -c $*.c
.cpp.o:
$(CPP) $(CFLAGS) -c $*.cpp
all: static-libs tools # shared-libs
libomp: libivy_omp.a
omp: libomp
@(cd $(TOOLS_DIR) && $(MAKE) -f Makefile.osx omp)
static-libs: libivy.a
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
test -d $(DESTDIR)$(PREFIX)$(LIB) || mkdir -p $(DESTDIR)$(PREFIX)$(LIB)
install -m644 libivy.a $(DESTDIR)$(PREFIX)$(LIB)
install -m644 libivy.dylib $(DESTDIR)$(PREFIX)$(LIB)
@(cd $(TOOLS_DIR) && $(MAKE) -f Makefile.osx install)
includes:
test -d $(DESTDIR)$(PREFIX)/include/Ivy || mkdir -p $(DESTDIR)$(PREFIX)/include/Ivy
install -m644 ivy.h $(DESTDIR)$(PREFIX)/include/Ivy/
install -m644 ivybind.h $(DESTDIR)$(PREFIX)/include/Ivy/
install -m644 ivybuffer.h $(DESTDIR)$(PREFIX)/include/Ivy/
install -m644 ivychannel.h $(DESTDIR)$(PREFIX)/include/Ivy/
install -m644 ivydebug.h $(DESTDIR)$(PREFIX)/include/Ivy/
install -m644 ivyloop.h $(DESTDIR)$(PREFIX)/include/Ivy/
install -m644 ivysocket.h $(DESTDIR)$(PREFIX)/include/Ivy/
install -m644 list.h $(DESTDIR)$(PREFIX)/include/Ivy/
install -m644 timer.h $(DESTDIR)$(PREFIX)/include/Ivy/
install -m644 version.h $(DESTDIR)$(PREFIX)/include/Ivy/
installbins: commands
test -d $(DESTDIR)$(PREFIX)/bin || mkdir -p $(DESTDIR)$(PREFIX)/bin
install -m755 ivyprobe $(DESTDIR)$(PREFIX)/bin
install -m755 ivyperf $(DESTDIR)$(PREFIX)/bin
tools: static-libs
@(cd $(TOOLS_DIR) && $(MAKE) -f Makefile.osx)
install: installlibs installbins includes
# ------------------------------------------------------------------------------------------
clean:
-rm -f *.o *.a *.dylib *.dylib.* *~
@(cd $(TOOLS_DIR) && $(MAKE) -f Makefile.osx clean)
|