hiredis 0.5.2 → 0.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 1d1cce35760d2be25e5029aa935a2613e7cc8ee1
4
- data.tar.gz: c751c54fafa5c215e85731863f90a2de17c3d475
2
+ SHA256:
3
+ metadata.gz: 1f07127ae47561dfa27e69e75ec20141aea1ec0f25c9e0a6ebf85d28c0fd0ab5
4
+ data.tar.gz: 71b64366a9ec6eb8eaef1ca8c6dee1aaab91c1608198d2fbc0dd928d31e36cca
5
5
  SHA512:
6
- metadata.gz: 703badbbec006e2e0f2c243f0cfc8baac8f4d36f654b20d7f20b1ff8c0abcb687ea26f5c062f7c211b865cfdab4b41ac3c4949cf6c0843d927b7491ba1b80f32
7
- data.tar.gz: 3fbbc47a99d8bfba0be19ba98bc10c238034e892956844a349f862806593e59c67fcd5da1143262bab66eb92385789d75ad43c7a447b47edd1c3d0d6aa113d31
6
+ metadata.gz: e3e5d4387c7e4d625fc81349d1224ac34cc43aae5a6d49c648515462eab5404bd18bb0deae1a166ab42e0ab93f91ef7344dd1a8a0c4ea54fd040bfe97a4a983f
7
+ data.tar.gz: 59504af0292497549b26ae7f970e2495363d0a66b9e15cb8c98b1fdcc748805a11a2c7e800fc9cce41dc81a85dc08273d62558d5481f89b2625f8611bbb50019
data/Rakefile CHANGED
@@ -5,7 +5,13 @@ require "rbconfig"
5
5
  require "rake/testtask"
6
6
  require "rake/extensiontask"
7
7
 
8
- unless defined?(RUBY_ENGINE) && RUBY_ENGINE == "jruby"
8
+ if RUBY_PLATFORM =~ /java|mswin|mingw/i
9
+
10
+ task :rebuild do
11
+ # no-op
12
+ end
13
+
14
+ else
9
15
 
10
16
  Rake::ExtensionTask.new('hiredis_ext') do |task|
11
17
  # Pass --with-foo-config args to extconf.rb
@@ -34,13 +40,9 @@ unless defined?(RUBY_ENGINE) && RUBY_ENGINE == "jruby"
34
40
  # Build from scratch
35
41
  task :rebuild => [:clean, :compile]
36
42
 
37
- else
43
+ end
38
44
 
39
- task :rebuild do
40
- # no-op
41
- end
42
45
 
43
- end
44
46
 
45
47
  task :default => [:rebuild, :test]
46
48
 
@@ -27,9 +27,10 @@ static void parent_context_try_free(redisParentContext *pc) {
27
27
  }
28
28
 
29
29
  static void parent_context_mark(redisParentContext *pc) {
30
- VALUE root;
30
+ // volatile until rb_gc_mark
31
+ volatile VALUE root;
31
32
  if (pc->context && pc->context->reader) {
32
- root = (VALUE)redisReplyReaderGetObject(pc->context->reader);
33
+ root = (VALUE)redisReaderGetObject(pc->context->reader);
33
34
  if (root != 0 && TYPE(root) == T_ARRAY) {
34
35
  rb_gc_mark(root);
35
36
  }
@@ -448,7 +449,7 @@ static int __get_reply(redisParentContext *pc, VALUE *reply) {
448
449
 
449
450
  static VALUE connection_read(VALUE self) {
450
451
  redisParentContext *pc;
451
- VALUE reply;
452
+ volatile VALUE reply;
452
453
 
453
454
  Data_Get_Struct(self,redisParentContext,pc);
454
455
  if (!pc->context)
@@ -1,5 +1,12 @@
1
1
  require 'mkmf'
2
2
 
3
+ build_hiredis = true
4
+ unless have_header('sys/socket.h')
5
+ puts "Could not find <sys/socket.h> (Likely Windows)."
6
+ puts "Skipping building hiredis. The slower, pure-ruby implementation will be used instead."
7
+ build_hiredis = false
8
+ end
9
+
3
10
  RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC']
4
11
 
5
12
  hiredis_dir = File.join(File.dirname(__FILE__), %w{.. .. vendor hiredis})
@@ -19,15 +26,23 @@ else
19
26
  'make'
20
27
  end
21
28
 
22
- # Make sure hiredis is built...
23
- Dir.chdir(hiredis_dir) do
24
- success = system("#{make_program} static")
25
- raise "Building hiredis failed" if !success
26
- end
29
+ if build_hiredis
30
+ # Make sure hiredis is built...
31
+ Dir.chdir(hiredis_dir) do
32
+ success = system("#{make_program} static")
33
+ raise "Building hiredis failed" if !success
34
+ end
27
35
 
28
- # Statically link to hiredis (mkmf can't do this for us)
29
- $CFLAGS << " -I#{hiredis_dir}"
30
- $LDFLAGS << " #{hiredis_dir}/libhiredis.a"
36
+ # Statically link to hiredis (mkmf can't do this for us)
37
+ $CFLAGS << " -I#{hiredis_dir}"
38
+ $LDFLAGS << " #{hiredis_dir}/libhiredis.a"
31
39
 
32
- have_func("rb_thread_fd_select")
33
- create_makefile('hiredis/ext/hiredis_ext')
40
+ have_func("rb_thread_fd_select")
41
+ create_makefile('hiredis/ext/hiredis_ext')
42
+ else
43
+ File.open("Makefile", "wb") do |f|
44
+ dummy_makefile(".").each do |line|
45
+ f.puts(line)
46
+ end
47
+ end
48
+ end
@@ -10,7 +10,7 @@ static ID str_force_encoding = 0;
10
10
  * Note that the parent should always be of type T_ARRAY. */
11
11
  static void *tryParentize(const redisReadTask *task, VALUE v) {
12
12
  if (task && task->parent != NULL) {
13
- VALUE parent = (VALUE)task->parent->obj;
13
+ volatile VALUE parent = (VALUE)task->parent->obj;
14
14
  assert(TYPE(parent) == T_ARRAY);
15
15
  rb_ary_store(parent,task->idx,v);
16
16
  }
@@ -18,7 +18,7 @@ static void *tryParentize(const redisReadTask *task, VALUE v) {
18
18
  }
19
19
 
20
20
  static void *createStringObject(const redisReadTask *task, char *str, size_t len) {
21
- VALUE v, enc;
21
+ volatile VALUE v, enc;
22
22
  v = rb_str_new(str,len);
23
23
 
24
24
  /* Force default external encoding if possible. */
@@ -35,12 +35,12 @@ static void *createStringObject(const redisReadTask *task, char *str, size_t len
35
35
  }
36
36
 
37
37
  static void *createArrayObject(const redisReadTask *task, int elements) {
38
- VALUE v = rb_ary_new2(elements);
38
+ volatile VALUE v = rb_ary_new2(elements);
39
39
  return tryParentize(task,v);
40
40
  }
41
41
 
42
42
  static void *createIntegerObject(const redisReadTask *task, long long value) {
43
- VALUE v = LL2NUM(value);
43
+ volatile VALUE v = LL2NUM(value);
44
44
  return tryParentize(task,v);
45
45
  }
46
46
 
@@ -62,7 +62,13 @@ redisReplyObjectFunctions redisExtReplyObjectFunctions = {
62
62
  };
63
63
 
64
64
  static void reader_mark(redisReader *reader) {
65
- VALUE root = (VALUE)reader->reply;
65
+ // volatile until rb_gc_mark
66
+ volatile VALUE root = (VALUE)reader->reply;
67
+ // FIXME - PCO - checking root for 0 is checkign to see if the value is
68
+ // Qfalse. I suspect that is not what is intended here. Checking the
69
+ // redisReader code might clarify. It would be unfortunate if the reply, a
70
+ // void* was using NULL to indicate not set but that may be the nature of
71
+ // the redisReader library. It is worth checking anyway.
66
72
  if (root != 0 && TYPE(root) == T_ARRAY) rb_gc_mark(root);
67
73
  }
68
74
 
@@ -85,7 +91,7 @@ static VALUE reader_feed(VALUE klass, VALUE str) {
85
91
 
86
92
  static VALUE reader_gets(VALUE klass) {
87
93
  redisReader *reader;
88
- VALUE reply;
94
+ volatile VALUE reply;
89
95
 
90
96
  Data_Get_Struct(klass, redisReader, reader);
91
97
  if (redisReaderGetReply(reader,(void**)&reply) != REDIS_OK)
@@ -1,3 +1,3 @@
1
1
  module Hiredis
2
- VERSION = "0.5.2"
2
+ VERSION = "0.6.3"
3
3
  end
@@ -3,24 +3,50 @@
3
3
  # Copyright (C) 2010-2011 Pieter Noordhuis <pcnoordhuis at gmail dot com>
4
4
  # This file is released under the BSD license, see the COPYING file
5
5
 
6
- OBJ=net.o hiredis.o sds.o async.o
7
- BINS=hiredis-example hiredis-test
6
+ OBJ=net.o hiredis.o sds.o async.o read.o
7
+ EXAMPLES=hiredis-example hiredis-example-libevent hiredis-example-libev hiredis-example-glib
8
+ TESTS=hiredis-test
8
9
  LIBNAME=libhiredis
10
+ PKGCONFNAME=hiredis.pc
9
11
 
10
- HIREDIS_MAJOR=0
11
- HIREDIS_MINOR=10
12
+ HIREDIS_MAJOR=$(shell grep HIREDIS_MAJOR hiredis.h | awk '{print $$3}')
13
+ HIREDIS_MINOR=$(shell grep HIREDIS_MINOR hiredis.h | awk '{print $$3}')
14
+ HIREDIS_PATCH=$(shell grep HIREDIS_PATCH hiredis.h | awk '{print $$3}')
15
+ HIREDIS_SONAME=$(shell grep HIREDIS_SONAME hiredis.h | awk '{print $$3}')
16
+
17
+ # Installation related variables and target
18
+ PREFIX?=/usr/local
19
+ INCLUDE_PATH?=include/hiredis
20
+ LIBRARY_PATH?=lib
21
+ PKGCONF_PATH?=pkgconfig
22
+ INSTALL_INCLUDE_PATH= $(DESTDIR)$(PREFIX)/$(INCLUDE_PATH)
23
+ INSTALL_LIBRARY_PATH= $(DESTDIR)$(PREFIX)/$(LIBRARY_PATH)
24
+ INSTALL_PKGCONF_PATH= $(INSTALL_LIBRARY_PATH)/$(PKGCONF_PATH)
25
+
26
+ # redis-server configuration used for testing
27
+ REDIS_PORT=56379
28
+ REDIS_SERVER=redis-server
29
+ define REDIS_TEST_CONFIG
30
+ daemonize yes
31
+ pidfile /tmp/hiredis-test-redis.pid
32
+ port $(REDIS_PORT)
33
+ bind 127.0.0.1
34
+ unixsocket /tmp/hiredis-test-redis.sock
35
+ endef
36
+ export REDIS_TEST_CONFIG
12
37
 
13
38
  # Fallback to gcc when $CC is not in $PATH.
14
- CC:=$(shell sh -c 'type $(CC) >/dev/null 2>/dev/null && echo $(CC) || echo gcc')
39
+ CC:=$(shell sh -c 'type $${CC%% *} >/dev/null 2>/dev/null && echo $(CC) || echo gcc')
40
+ CXX:=$(shell sh -c 'type $${CXX%% *} >/dev/null 2>/dev/null && echo $(CXX) || echo g++')
15
41
  OPTIMIZATION?=-O3
16
42
  WARNINGS=-Wall -W -Wstrict-prototypes -Wwrite-strings
17
- DEBUG?= -g -ggdb
18
- REAL_CFLAGS=$(OPTIMIZATION) -fPIC $(CFLAGS) $(WARNINGS) $(DEBUG) $(ARCH)
19
- REAL_LDFLAGS=$(LDFLAGS) $(ARCH)
43
+ DEBUG_FLAGS?= -g -ggdb
44
+ REAL_CFLAGS=$(OPTIMIZATION) -fPIC $(CFLAGS) $(WARNINGS) $(DEBUG_FLAGS)
45
+ REAL_LDFLAGS=$(LDFLAGS)
20
46
 
21
47
  DYLIBSUFFIX=so
22
48
  STLIBSUFFIX=a
23
- DYLIB_MINOR_NAME=$(LIBNAME).$(DYLIBSUFFIX).$(HIREDIS_MAJOR).$(HIREDIS_MINOR)
49
+ DYLIB_MINOR_NAME=$(LIBNAME).$(DYLIBSUFFIX).$(HIREDIS_SONAME)
24
50
  DYLIB_MAJOR_NAME=$(LIBNAME).$(DYLIBSUFFIX).$(HIREDIS_MAJOR)
25
51
  DYLIBNAME=$(LIBNAME).$(DYLIBSUFFIX)
26
52
  DYLIB_MAKE_CMD=$(CC) -shared -Wl,-soname,$(DYLIB_MINOR_NAME) -o $(DYLIBNAME) $(LDFLAGS)
@@ -32,24 +58,23 @@ uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
32
58
  ifeq ($(uname_S),SunOS)
33
59
  REAL_LDFLAGS+= -ldl -lnsl -lsocket
34
60
  DYLIB_MAKE_CMD=$(CC) -G -o $(DYLIBNAME) -h $(DYLIB_MINOR_NAME) $(LDFLAGS)
35
- INSTALL= cp -r
36
61
  endif
37
62
  ifeq ($(uname_S),Darwin)
38
63
  DYLIBSUFFIX=dylib
39
- DYLIB_MINOR_NAME=$(LIBNAME).$(HIREDIS_MAJOR).$(HIREDIS_MINOR).$(DYLIBSUFFIX)
40
- DYLIB_MAJOR_NAME=$(LIBNAME).$(HIREDIS_MAJOR).$(DYLIBSUFFIX)
41
- DYLIB_MAKE_CMD=$(CC) -shared -Wl,-install_name,$(DYLIB_MINOR_NAME) -o $(DYLIBNAME) $(LDFLAGS)
64
+ DYLIB_MINOR_NAME=$(LIBNAME).$(HIREDIS_SONAME).$(DYLIBSUFFIX)
65
+ DYLIB_MAKE_CMD=$(CC) -dynamiclib -Wl,-install_name,$(PREFIX)/$(LIBRARY_PATH)/$(DYLIB_MINOR_NAME) -o $(DYLIBNAME) $(LDFLAGS)
42
66
  endif
43
67
 
44
- all: $(DYLIBNAME) $(BINS)
68
+ all: $(DYLIBNAME) $(STLIBNAME) hiredis-test $(PKGCONFNAME)
45
69
 
46
70
  # Deps (use make dep to generate this)
47
- net.o: net.c fmacros.h net.h hiredis.h
48
- async.o: async.c async.h hiredis.h sds.h dict.c dict.h
49
- example.o: example.c hiredis.h
50
- hiredis.o: hiredis.c fmacros.h hiredis.h net.h sds.h
71
+ async.o: async.c fmacros.h async.h hiredis.h read.h sds.h net.h dict.c dict.h
72
+ dict.o: dict.c fmacros.h dict.h
73
+ hiredis.o: hiredis.c fmacros.h hiredis.h read.h sds.h net.h
74
+ net.o: net.c fmacros.h net.h hiredis.h read.h sds.h
75
+ read.o: read.c fmacros.h read.h sds.h
51
76
  sds.o: sds.c sds.h
52
- test.o: test.c hiredis.h
77
+ test.o: test.c fmacros.h hiredis.h read.h sds.h
53
78
 
54
79
  $(DYLIBNAME): $(OBJ)
55
80
  $(DYLIB_MAKE_CMD) $(OBJ)
@@ -61,36 +86,68 @@ dynamic: $(DYLIBNAME)
61
86
  static: $(STLIBNAME)
62
87
 
63
88
  # Binaries:
64
- hiredis-example-libevent: example-libevent.c adapters/libevent.h $(STLIBNAME)
65
- $(CC) -o $@ $(REAL_CFLAGS) $(REAL_LDFLAGS) -levent example-libevent.c $(STLIBNAME)
89
+ hiredis-example-libevent: examples/example-libevent.c adapters/libevent.h $(STLIBNAME)
90
+ $(CC) -o examples/$@ $(REAL_CFLAGS) $(REAL_LDFLAGS) -I. $< -levent $(STLIBNAME)
91
+
92
+ hiredis-example-libev: examples/example-libev.c adapters/libev.h $(STLIBNAME)
93
+ $(CC) -o examples/$@ $(REAL_CFLAGS) $(REAL_LDFLAGS) -I. $< -lev $(STLIBNAME)
94
+
95
+ hiredis-example-glib: examples/example-glib.c adapters/glib.h $(STLIBNAME)
96
+ $(CC) -o examples/$@ $(REAL_CFLAGS) $(REAL_LDFLAGS) -I. $< $(shell pkg-config --cflags --libs glib-2.0) $(STLIBNAME)
97
+
98
+ hiredis-example-ivykis: examples/example-ivykis.c adapters/ivykis.h $(STLIBNAME)
99
+ $(CC) -o examples/$@ $(REAL_CFLAGS) $(REAL_LDFLAGS) -I. $< -livykis $(STLIBNAME)
66
100
 
67
- hiredis-example-libev: example-libev.c adapters/libev.h $(STLIBNAME)
68
- $(CC) -o $@ $(REAL_CFLAGS) $(REAL_LDFLAGS) -lev example-libev.c $(STLIBNAME)
101
+ hiredis-example-macosx: examples/example-macosx.c adapters/macosx.h $(STLIBNAME)
102
+ $(CC) -o examples/$@ $(REAL_CFLAGS) $(REAL_LDFLAGS) -I. $< -framework CoreFoundation $(STLIBNAME)
69
103
 
70
104
  ifndef AE_DIR
71
105
  hiredis-example-ae:
72
106
  @echo "Please specify AE_DIR (e.g. <redis repository>/src)"
73
107
  @false
74
108
  else
75
- hiredis-example-ae: example-ae.c adapters/ae.h $(STLIBNAME)
76
- $(CC) -o $@ $(REAL_CFLAGS) $(REAL_LDFLAGS) -I$(AE_DIR) $(AE_DIR)/ae.o $(AE_DIR)/zmalloc.o example-ae.c $(STLIBNAME)
109
+ hiredis-example-ae: examples/example-ae.c adapters/ae.h $(STLIBNAME)
110
+ $(CC) -o examples/$@ $(REAL_CFLAGS) $(REAL_LDFLAGS) -I. -I$(AE_DIR) $< $(AE_DIR)/ae.o $(AE_DIR)/zmalloc.o $(AE_DIR)/../deps/jemalloc/lib/libjemalloc.a -pthread $(STLIBNAME)
77
111
  endif
78
112
 
113
+ ifndef LIBUV_DIR
114
+ hiredis-example-libuv:
115
+ @echo "Please specify LIBUV_DIR (e.g. ../libuv/)"
116
+ @false
117
+ else
118
+ hiredis-example-libuv: examples/example-libuv.c adapters/libuv.h $(STLIBNAME)
119
+ $(CC) -o examples/$@ $(REAL_CFLAGS) $(REAL_LDFLAGS) -I. -I$(LIBUV_DIR)/include $< $(LIBUV_DIR)/.libs/libuv.a -lpthread -lrt $(STLIBNAME)
120
+ endif
121
+
122
+ ifeq ($(and $(QT_MOC),$(QT_INCLUDE_DIR),$(QT_LIBRARY_DIR)),)
123
+ hiredis-example-qt:
124
+ @echo "Please specify QT_MOC, QT_INCLUDE_DIR AND QT_LIBRARY_DIR"
125
+ @false
126
+ else
127
+ hiredis-example-qt: examples/example-qt.cpp adapters/qt.h $(STLIBNAME)
128
+ $(QT_MOC) adapters/qt.h -I. -I$(QT_INCLUDE_DIR) -I$(QT_INCLUDE_DIR)/QtCore | \
129
+ $(CXX) -x c++ -o qt-adapter-moc.o -c - $(REAL_CFLAGS) -I. -I$(QT_INCLUDE_DIR) -I$(QT_INCLUDE_DIR)/QtCore
130
+ $(QT_MOC) examples/example-qt.h -I. -I$(QT_INCLUDE_DIR) -I$(QT_INCLUDE_DIR)/QtCore | \
131
+ $(CXX) -x c++ -o qt-example-moc.o -c - $(REAL_CFLAGS) -I. -I$(QT_INCLUDE_DIR) -I$(QT_INCLUDE_DIR)/QtCore
132
+ $(CXX) -o examples/$@ $(REAL_CFLAGS) $(REAL_LDFLAGS) -I. -I$(QT_INCLUDE_DIR) -I$(QT_INCLUDE_DIR)/QtCore -L$(QT_LIBRARY_DIR) qt-adapter-moc.o qt-example-moc.o $< -pthread $(STLIBNAME) -lQtCore
133
+ endif
134
+
135
+ hiredis-example: examples/example.c $(STLIBNAME)
136
+ $(CC) -o examples/$@ $(REAL_CFLAGS) $(REAL_LDFLAGS) -I. $< $(STLIBNAME)
137
+
138
+ examples: $(EXAMPLES)
139
+
140
+ hiredis-test: test.o $(STLIBNAME)
141
+
79
142
  hiredis-%: %.o $(STLIBNAME)
80
- $(CC) -o $@ $(REAL_LDFLAGS) $< $(STLIBNAME)
143
+ $(CC) $(REAL_CFLAGS) -o $@ $(REAL_LDFLAGS) $< $(STLIBNAME)
81
144
 
82
145
  test: hiredis-test
83
146
  ./hiredis-test
84
147
 
85
148
  check: hiredis-test
86
- echo \
87
- "daemonize yes\n" \
88
- "pidfile /tmp/hiredis-test-redis.pid\n" \
89
- "port 56379\n" \
90
- "bind 127.0.0.1\n" \
91
- "unixsocket /tmp/hiredis-test-redis.sock" \
92
- | redis-server -
93
- ./hiredis-test -h 127.0.0.1 -p 56379 -s /tmp/hiredis-test-redis.sock || \
149
+ @echo "$$REDIS_TEST_CONFIG" | $(REDIS_SERVER) -
150
+ $(PRE) ./hiredis-test -h 127.0.0.1 -p $(REDIS_PORT) -s /tmp/hiredis-test-redis.sock || \
94
151
  ( kill `cat /tmp/hiredis-test-redis.pid` && false )
95
152
  kill `cat /tmp/hiredis-test-redis.pid`
96
153
 
@@ -98,31 +155,35 @@ check: hiredis-test
98
155
  $(CC) -std=c99 -pedantic -c $(REAL_CFLAGS) $<
99
156
 
100
157
  clean:
101
- rm -rf $(DYLIBNAME) $(STLIBNAME) $(BINS) hiredis-example* *.o *.gcda *.gcno *.gcov
158
+ rm -rf $(DYLIBNAME) $(STLIBNAME) $(TESTS) $(PKGCONFNAME) examples/hiredis-example* *.o *.gcda *.gcno *.gcov
102
159
 
103
160
  dep:
104
161
  $(CC) -MM *.c
105
162
 
106
- # Installation related variables and target
107
- PREFIX?=/usr/local
108
- INCLUDE_PATH?=include/hiredis
109
- LIBRARY_PATH?=lib
110
- INSTALL_INCLUDE_PATH= $(PREFIX)/$(INCLUDE_PATH)
111
- INSTALL_LIBRARY_PATH= $(PREFIX)/$(LIBRARY_PATH)
112
-
113
- ifeq ($(uname_S),SunOS)
114
- INSTALL?= cp -r
115
- endif
116
-
117
- INSTALL?= cp -a
118
-
119
- install: $(DYLIBNAME) $(STLIBNAME)
120
- mkdir -p $(INSTALL_INCLUDE_PATH) $(INSTALL_LIBRARY_PATH)
121
- $(INSTALL) hiredis.h async.h adapters $(INSTALL_INCLUDE_PATH)
163
+ INSTALL?= cp -pPR
164
+
165
+ $(PKGCONFNAME): hiredis.h
166
+ @echo "Generating $@ for pkgconfig..."
167
+ @echo prefix=$(PREFIX) > $@
168
+ @echo exec_prefix=\$${prefix} >> $@
169
+ @echo libdir=$(PREFIX)/$(LIBRARY_PATH) >> $@
170
+ @echo includedir=$(PREFIX)/$(INCLUDE_PATH) >> $@
171
+ @echo >> $@
172
+ @echo Name: hiredis >> $@
173
+ @echo Description: Minimalistic C client library for Redis. >> $@
174
+ @echo Version: $(HIREDIS_MAJOR).$(HIREDIS_MINOR).$(HIREDIS_PATCH) >> $@
175
+ @echo Libs: -L\$${libdir} -lhiredis >> $@
176
+ @echo Cflags: -I\$${includedir} -D_FILE_OFFSET_BITS=64 >> $@
177
+
178
+ install: $(DYLIBNAME) $(STLIBNAME) $(PKGCONFNAME)
179
+ mkdir -p $(INSTALL_INCLUDE_PATH) $(INSTALL_INCLUDE_PATH)/adapters $(INSTALL_LIBRARY_PATH)
180
+ $(INSTALL) hiredis.h async.h read.h sds.h $(INSTALL_INCLUDE_PATH)
181
+ $(INSTALL) adapters/*.h $(INSTALL_INCLUDE_PATH)/adapters
122
182
  $(INSTALL) $(DYLIBNAME) $(INSTALL_LIBRARY_PATH)/$(DYLIB_MINOR_NAME)
123
- cd $(INSTALL_LIBRARY_PATH) && ln -sf $(DYLIB_MINOR_NAME) $(DYLIB_MAJOR_NAME)
124
- cd $(INSTALL_LIBRARY_PATH) && ln -sf $(DYLIB_MAJOR_NAME) $(DYLIBNAME)
183
+ cd $(INSTALL_LIBRARY_PATH) && ln -sf $(DYLIB_MINOR_NAME) $(DYLIBNAME)
125
184
  $(INSTALL) $(STLIBNAME) $(INSTALL_LIBRARY_PATH)
185
+ mkdir -p $(INSTALL_PKGCONF_PATH)
186
+ $(INSTALL) $(PKGCONFNAME) $(INSTALL_PKGCONF_PATH)
126
187
 
127
188
  32bit:
128
189
  @echo ""
@@ -130,6 +191,10 @@ install: $(DYLIBNAME) $(STLIBNAME)
130
191
  @echo ""
131
192
  $(MAKE) CFLAGS="-m32" LDFLAGS="-m32"
132
193
 
194
+ 32bit-vars:
195
+ $(eval CFLAGS=-m32)
196
+ $(eval LDFLAGS=-m32)
197
+
133
198
  gprof:
134
199
  $(MAKE) CFLAGS="-pg" LDFLAGS="-pg"
135
200
 
@@ -145,4 +210,4 @@ coverage: gcov
145
210
  noopt:
146
211
  $(MAKE) OPTIMIZATION=""
147
212
 
148
- .PHONY: all test check clean dep install 32bit gprof gcov noopt
213
+ .PHONY: all test check clean dep install 32bit 32bit-vars gprof gcov noopt