108 lines
2.3 KiB
Makefile
108 lines
2.3 KiB
Makefile
# Makefile for CSlib = client/server messaging library
|
|
# type "make help" for options
|
|
|
|
SHELL = /bin/sh
|
|
|
|
# ----------------------------------------
|
|
# should only need to change this section
|
|
# compiler/linker settings
|
|
# ----------------------------------------
|
|
|
|
CC = g++
|
|
CCFLAGS = -g -O3 -DZMQ_$(ZMQ) -DMPI_$(MPI)
|
|
SHFLAGS = -fPIC
|
|
ARCHIVE = ar
|
|
ARCHFLAGS = -rc
|
|
SHLIBFLAGS = -shared
|
|
|
|
# files
|
|
|
|
LIB = libcsmpi.a
|
|
SHLIB = libcsmpi.so
|
|
SRC = $(wildcard *.cpp)
|
|
INC = $(wildcard *.h)
|
|
OBJ = $(SRC:.cpp=.o)
|
|
|
|
# build with ZMQ support or not
|
|
|
|
zmq = yes
|
|
ZMQ = $(shell echo $(zmq) | tr a-z A-Z)
|
|
|
|
ifeq ($(ZMQ),YES)
|
|
ZMQLIB = -lzmq
|
|
else
|
|
CCFLAGS += -I./STUBS_ZMQ
|
|
endif
|
|
|
|
# build with MPI support or not
|
|
|
|
mpi = yes
|
|
MPI = $(shell echo $(mpi) | tr a-z A-Z)
|
|
|
|
ifeq ($(MPI),YES)
|
|
CC = mpicxx
|
|
else
|
|
CCFLAGS += -I./STUBS_MPI
|
|
LIB = libcsnompi.a
|
|
SHLIB = libcsnompi.so
|
|
endif
|
|
|
|
# targets
|
|
|
|
shlib: shlib_parallel shlib_serial
|
|
|
|
lib: lib_parallel lib_serial
|
|
|
|
all: shlib lib
|
|
|
|
help:
|
|
@echo 'make default = shlib'
|
|
@echo 'make shlib build 2 shared CSlibs: parallel & serial'
|
|
@echo 'make lib build 2 static CSlibs: parallel & serial'
|
|
@echo 'make all build 4 CSlibs: shlib and lib'
|
|
@echo 'make shlib_parallel build shared parallel CSlib'
|
|
@echo 'make shlib_serial build shared serial CSlib'
|
|
@echo 'make lib_parallel build static parallel CSlib'
|
|
@echo 'make lib_serial build static serial CSlib'
|
|
@echo 'make ... zmq=no build w/out ZMQ support'
|
|
@echo 'make clean remove all *.o files'
|
|
@echo 'make clean-all remove *.o and lib files'
|
|
@echo 'make tar create a tarball, 2 levels up'
|
|
|
|
shlib_parallel:
|
|
$(MAKE) clean
|
|
$(MAKE) shared zmq=$(zmq) mpi=yes
|
|
|
|
shlib_serial:
|
|
$(MAKE) clean
|
|
$(MAKE) shared zmq=$(zmq) mpi=no
|
|
|
|
lib_parallel:
|
|
$(MAKE) clean
|
|
$(MAKE) static zmq=$(zmq) mpi=yes
|
|
|
|
lib_serial:
|
|
$(MAKE) clean
|
|
$(MAKE) static zmq=$(zmq) mpi=no
|
|
|
|
static: $(OBJ)
|
|
$(ARCHIVE) $(ARCHFLAGS) $(LIB) $(OBJ)
|
|
|
|
shared: $(OBJ)
|
|
$(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) -o $(SHLIB) $(OBJ) $(ZMQLIB)
|
|
|
|
clean:
|
|
@rm -f *.o *.pyc
|
|
|
|
clean-all:
|
|
@rm -f *.o *.pyc lib*.a lib*.so
|
|
|
|
tar:
|
|
cd ../..; tar cvf cslib.tar cslib/README cslib/LICENSE \
|
|
cslib/doc cslib/src cslib/test
|
|
|
|
# rules
|
|
|
|
%.o:%.cpp
|
|
$(CC) $(CCFLAGS) $(SHFLAGS) -c $<
|