#
# $Id: Makefile,v 1.29 2007/05/11 20:10:59 cnepveu Exp $
#
# Copyright (c) 2007 Hexago Inc. All rights reserved.
#
# LICENSE NOTICE: You may use and modify this source code only if you
# have executed a valid license agreement with Hexago Inc. granting
# you the right to do so, the said license agreement governing such
# use and modifications. Copyright or other intellectual property
# notices are not to be removed from the source code.
#
# Author: Charles Nepveu
#
OBJ_DIR=objects
BIN_DIR=bin
LIB_DIR=lib
INC_DIR=gw6cmessaging
C_COMPILER=gcc -c -O2 -DNDEBUG
COMPILER=g++ -c -O2 -DNDEBUG
LINKER=g++ -O2
C_LINKER=gcc -O2
RANLIB=ranlib
ARCHIVER=ar
CPP_FLAGS=-I. -Wall $(ADDITIONAL_CPPFLAGS) $(HAP6_DEFINES)
C_FLAGS=-I. -Wall $(HAP6_DEFINES)
TEST_IPCLAYER=$(BIN_DIR)/test_ipclayer
TEST_MESSAGING=$(BIN_DIR)/test_messaging
TEST_GW6CEMUL8OR=$(BIN_DIR)/test_gw6cemulator
TARGET=$(LIB_DIR)/libgw6cmessaging.a
LD_FLAGS=-L$(LIB_DIR) -lgw6cmessaging $(ADDITIONAL_LDFLAGS)
WIN_ADDITIONAL_OBJS=$(OBJ_DIR)/pipeserver.o \
$(OBJ_DIR)/pipeclient.o \
$(OBJ_DIR)/pipeio.o \
$(OBJ_DIR)/threadwrapper.o \
$(OBJ_DIR)/semaphore.o
.PHONY=all export clean
#
# GNU make - BSD make workaround
# Here, we're specifying additional switches for WINDOWS targets.
# The reason it's made this way is because BSD and GNU make don't agree
# on conditional makefile instructions(e.g.: "ifdef", ".ifdef").
#
all:
@if [ "$(target)" = "windows" ]; then \
$(MAKE) target=$(target) ADDITIONAL_CPPFLAGS=-DWIN32 ADDITIONAL_OBJS="$(WIN_ADDITIONAL_OBJS)" all-real ;\
else \
$(MAKE) target=$(target) ADDITIONAL_LDFLAGS="-lrt -lpthread" all-real ;\
fi
all-real: $(TARGET) $(BIN_DIR) $(TEST_IPCLAYER) $(TEST_MESSAGING) $(TEST_GW6CEMUL8OR)
export:
@if [ "$(target)" = "windows" ]; then \
$(MAKE) target=$(target) ADDITIONAL_CPPFLAGS=-DWIN32 ADDITIONAL_OBJS="$(WIN_ADDITIONAL_OBJS)" export-real ;\
else \
$(MAKE) target=$(target) ADDITIONAL_LDFLAGS="-lrt -lpthread" export-real ;\
fi
export-real: $(TARGET)
@if [ -z "$(exportdir)" -o ! -d "$(exportdir)" ]; then \
echo ""; \
echo "You must specify an export directory(i.e.: exportdir=the_export_dir) in which the"\
"Gateway6 Client messaging library will be installed."; \
echo ""; \
exit 1; \
fi
mkdir -p $(exportdir)/gw6cmessaging
cp $(TARGET) $(exportdir)/gw6cmessaging
cp $(INC_DIR)/*.h $(exportdir)/gw6cmessaging
$(OBJ_DIR):
mkdir -p $(OBJ_DIR)
$(BIN_DIR):
mkdir -p $(BIN_DIR)
$(LIB_DIR):
mkdir -p $(LIB_DIR)
OBJS=$(ADDITIONAL_OBJS) \
$(OBJ_DIR)/ipcserver.o \
$(OBJ_DIR)/ipcclient.o \
$(OBJ_DIR)/servent.o \
$(OBJ_DIR)/message.o \
$(OBJ_DIR)/messagesender.o \
$(OBJ_DIR)/communicationsmgr.o \
$(OBJ_DIR)/clientmsgtranslator.o \
$(OBJ_DIR)/clientmsgsender.o \
$(OBJ_DIR)/servermsgtranslator.o \
$(OBJ_DIR)/servermsgsender.o \
$(OBJ_DIR)/clientmessengerimpl.o \
$(OBJ_DIR)/guimessengerimpl.o \
$(OBJ_DIR)/gw6c_c_wrapper.o \
$(OBJ_DIR)/gw6cuistrings.o
$(OBJ_DIR)/ipcserver.o: src/ipcserver.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/ipcserver.o src/ipcserver.cc
$(OBJ_DIR)/ipcclient.o: src/ipcclient.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/ipcclient.o src/ipcclient.cc
$(OBJ_DIR)/pipeserver.o: src/$(target)/pipeserver.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/pipeserver.o src/$(target)/pipeserver.cc
$(OBJ_DIR)/pipeclient.o: src/$(target)/pipeclient.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/pipeclient.o src/$(target)/pipeclient.cc
$(OBJ_DIR)/pipeio.o: src/$(target)/pipeio.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/pipeio.o src/$(target)/pipeio.cc
$(OBJ_DIR)/servent.o: src/servent.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/servent.o src/servent.cc
$(OBJ_DIR)/threadwrapper.o: src/$(target)/threadwrapper.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/threadwrapper.o src/$(target)/threadwrapper.cc
$(OBJ_DIR)/semaphore.o: src/$(target)/semaphore.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/semaphore.o src/$(target)/semaphore.cc
$(OBJ_DIR)/message.o: src/message.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/message.o src/message.cc
$(OBJ_DIR)/messagesender.o: src/messagesender.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/messagesender.o src/messagesender.cc
$(OBJ_DIR)/communicationsmgr.o: src/communicationsmgr.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/communicationsmgr.o src/communicationsmgr.cc
$(OBJ_DIR)/clientmsgtranslator.o: src/clientmsgtranslator.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/clientmsgtranslator.o src/clientmsgtranslator.cc
$(OBJ_DIR)/clientmsgsender.o: src/clientmsgsender.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/clientmsgsender.o src/clientmsgsender.cc
$(OBJ_DIR)/servermsgtranslator.o: src/servermsgtranslator.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/servermsgtranslator.o src/servermsgtranslator.cc
$(OBJ_DIR)/servermsgsender.o: src/servermsgsender.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/servermsgsender.o src/servermsgsender.cc
$(OBJ_DIR)/clientmessengerimpl.o: src/clientmessengerimpl.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/clientmessengerimpl.o src/clientmessengerimpl.cc
$(OBJ_DIR)/guimessengerimpl.o: src/guimessengerimpl.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/guimessengerimpl.o src/guimessengerimpl.cc
$(OBJ_DIR)/gw6c_c_wrapper.o: src/gw6c_c_wrapper.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/gw6c_c_wrapper.o src/gw6c_c_wrapper.cc
$(OBJ_DIR)/gw6cuistrings.o: src/gw6cuistrings.c
$(C_COMPILER) $(C_FLAGS) -o $(OBJ_DIR)/gw6cuistrings.o src/gw6cuistrings.c
$(OBJ_DIR)/test_ipclayer.o: src/test_ipclayer.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/test_ipclayer.o src/test_ipclayer.cc
$(OBJ_DIR)/test_messaginglayer.o: src/test_messaginglayer.cc
$(COMPILER) $(CPP_FLAGS) -o $(OBJ_DIR)/test_messaginglayer.o src/test_messaginglayer.cc
$(OBJ_DIR)/test_gw6cemulator.o: src/test_gw6cemulator.c
$(C_COMPILER) $(C_FLAGS) -o $(OBJ_DIR)/test_gw6cemulator.o src/test_gw6cemulator.c
$(TARGET): $(OBJ_DIR) $(OBJS) $(LIB_DIR)
$(ARCHIVER) cru $(TARGET) $(OBJS)
$(RANLIB) $(TARGET)
$(TEST_IPCLAYER): $(TARGET) $(OBJ_DIR)/test_ipclayer.o
$(LINKER) -o $(TEST_IPCLAYER) $(OBJ_DIR)/test_ipclayer.o $(LD_FLAGS)
$(TEST_MESSAGING): $(TARGET) $(OBJ_DIR)/test_messaginglayer.o
$(LINKER) -o $(TEST_MESSAGING) $(OBJ_DIR)/test_messaginglayer.o $(LD_FLAGS)
$(TEST_GW6CEMUL8OR): $(TARGET) $(OBJ_DIR)/test_gw6cemulator.o
$(LINKER) -o $(TEST_GW6CEMUL8OR) $(OBJ_DIR)/test_gw6cemulator.o $(LD_FLAGS)
clean:
@echo -n "Cleaning up workspace... "
@rm -f $(OBJS) $(TARGET)
@rm -rf $(OBJ_DIR) $(BIN_DIR) $(LIB_DIR)
@echo "done."
syntax highlighted by Code2HTML, v. 0.9.1