# NOTE: this makefile assumes that RMr has been built using the directory .build
# at the top most repo directory (e.g. ../../.build). It can be changed
# if you need to by adding "build_path=<path>" to the make command line.
+# To use this makefile to build on a system where RMr is already installed
+# try: make build_path=/usr/local/lib
+#
+# By default we prefer the Korn shell (it's just better). If you really need
+# to build with a dfferent shell add "SHELL=path" to the command line:
+# make SHELL=/bin/bash
+#
.EXPORT_ALL_VARIABLES:
.ONESHELL:
#.SHELLFLAGS = -e # hosed on some flavours so keep it off
-SHELL = /bin/ksh
+SHELL ?= /bin/ksh
build_path ?= ../../.build
-header_path := $(shell find ../../.build -name 'rmr.h' |head -1 | sed 's!/rmr/.*!!' )
+header_path := $(shell find $(build_path) -name 'rmr.h' |head -1 | sed 's!/rmr/.*!!' )
C_INCLUDE_PATH := $(header_path)
LD_LIBRARY_PATH=$(build_path):$(build_path)/lib
LIBRARY_PATH = $(LD_LIBRARY_PATH)
# These programmes are designed to test some basic application level functions
-# from the perspective of two communicating processes.
+# from the perspective of two, or more, communicating processes.
.PHONY: all
-all: sender receiver sender_nano receiver_nano
-
-receiver_nano: receiver.c
- gcc -I $${C_INCLUDE_PATH:-.} $< -g -o $@ -lrmr -lnanomsg -lpthread -lm
+all: sender receiver caller mt_receiver
receiver: receiver.c
gcc -I $${C_INCLUDE_PATH:-.} $< -g -o $@ -lrmr_nng -lnng -lpthread -lm
-sender_nano: sender.c
- gcc -I $${C_INCLUDE_PATH:-.} $< -g -o $@ -lrmr -lnanomsg -lpthread -lm
+mt_receiver: receiver.c
+ gcc -I $${C_INCLUDE_PATH:-.} -DMTC $< -g -o $@ -lrmr_nng -lnng -lpthread -lm
+
+lreceiver: lreceiver.c
+ gcc -I $${C_INCLUDE_PATH:-.} $< -g -o $@ -lrmr_nng -lnng -lpthread -lm
sender: sender.c
gcc -I $${C_INCLUDE_PATH:-.} $< -g -o $@ -lrmr_nng -lnng -lpthread -lm
+caller: caller.c
+ gcc -I $${C_INCLUDE_PATH:-.} $< -g -o $@ -lrmr_nng -lnng -lpthread -lm
+
+lcaller: lcaller.c
+ gcc -I $${C_INCLUDE_PATH:-.} $< -g -o $@ -lrmr_nng -lnng -lpthread -lm
+
+lsender: lsender.c
+ gcc -I $${C_INCLUDE_PATH:-.} $< -g -o $@ -lrmr_nng -lnng -lpthread -lm
-.PHONY: clean
+
+# clean removes intermediates; nuke removes everything that can be built
+.PHONY: clean nuke
clean:
- rm -f sender sender_nano receiver receiver_nano *.o
+ rm -f *.o
+
+nuke: clean
+ rm -f sender receiver caller mt_receiver