#
# MIDCOM SIMCO protocol library
#
# simco_client.c -- Header file
#
# Copyright (C) 2005, Ranch Networks, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
#
# Author : Srivatsa Chivukula <srivatsa@ranchnetworks.com>
#

CC = gcc
AR = ar
LDCONFIG = /sbin/ldconfig

# Set root directory
prefix = ./


# Set source files directory
sourcedir = $(prefix)src/

# Set include files directory
includedir = $(prefix)include/

#  Set library target directory
libdir = $(prefix)

# Set midcom include directories
INCLUDE = -I$(includedir) -I$(prefix)

# Set openSSL directory (libssl and libcrypto)
#SSL_LIB_DIR = /cygdrive/c/openssl-0.9.6m/out32dll/
SSL_LIB_DIR = 

# Set SSL include files directory (not required for system directories like /usr/include)
#SSL_INCLUDE_DIR = -I/cygdrive/c/openssl-0.9.6m/include
SSL_INCLUDE_DIR = 


# Set SSL libraries
#SSL_LIBS = $(SSL_LIB_DIR)ssleay32.lib $(SSL_LIB_DIR)libeay32.lib
SSL_LIBS = -lssl -lcrypto

# Set pthread directory
PTHREAD_LIB_DIR = -L.

# Set pthread include files directory (not required for system directories like /usr/include)
PTHREAD_INCLUDE_DIR =

# set posix pthread libraries
PTHREAD_LIBS = -lpthread

# 
INCLUDE_DIR = $(INCLUDE) $(SSL_INCLUDE_DIR) $(PTHREAD_INCLUDE_DIR)


# OS extension for executables
# if it is Windows set the variable to ".exe"
# for unix like leave it blank
#EXEC_EXTENSION = .exe

# Compilation flags
CFLAGS+=-Wall -Wstrict-prototypes -Wmissing-prototypes #-Werror
SOFLAGS = -Wl,-hlibmidcom.so.1
LDCONFIG_FLAGS+=-n

# AR flags
LDFLAGS+= 

SRC_DIR = 

DEFS = -DEXTENDED_SIMCO -DNO_SSL

STATIC_LIBRARY=libmidcom.a
DYNAMIC_LIBRARY=libmidcom.so.1.0

STATIC_OBJS = $(sourcedir)app_rand.o         \
              $(sourcedir)s_cb.o             \
              $(sourcedir)s_socket.o         \
              $(sourcedir)simco_core.o       \
              $(sourcedir)simco_core_ext.o   \
              $(sourcedir)simco_b.o          \
              $(sourcedir)simco_b_ext.o      \
              $(sourcedir)simco_nb.o         \
              $(sourcedir)simco_nb_ext.o     \
              $(sourcedir)simco_client.o     \
              $(sourcedir)simco_client_ext.o

DYNAMIC_OBJS = $(sourcedir)app_rand.lo         \
              $(sourcedir)s_cb.lo             \
              $(sourcedir)s_socket.lo         \
              $(sourcedir)simco_core.lo       \
              $(sourcedir)simco_core_ext.lo   \
              $(sourcedir)simco_b.lo          \
              $(sourcedir)simco_b_ext.lo      \
              $(sourcedir)simco_nb.lo         \
              $(sourcedir)simco_nb_ext.lo     \
              $(sourcedir)simco_client.lo     \
              $(sourcedir)simco_client_ext.lo


CONFIGURE_FILES = Makefile

all: $(STATIC_LIBRARY) $(DYNAMIC_LIBRARY) b_sample nb_sample b_sample_ext nb_sample_ext

$(STATIC_LIBRARY): $(STATIC_OBJS)
	$(AR) rcs $(STATIC_LIBRARY) $(STATIC_OBJS)
	ranlib $(STATIC_LIBRARY)

$(DYNAMIC_LIBRARY) : $(DYNAMIC_OBJS)
	$(CC) -shared $(SOFLAGS) -o $@ $(DYNAMIC_OBJS)
	$(LDCONFIG) $(LDCONFIG_FLAGS) .
	ln -sf libmidcom.so.1 libmidcom.so

b_sample: $(prefix)b_sample.o $(prefix)$(STATIC_LIBRARY)
	$(CC) $(prefix)b_sample.o  $(PTHREAD_LIB_DIR)   $(PTHREAD_LIBS) $(STATIC_LIBRARY) $(CFLAGS) -o $(prefix)b_sample $(SSL_LIBS)

b_sample_ext: $(prefix)b_sample_ext.o $(prefix)$(STATIC_LIBRARY)
	$(CC) $(prefix)b_sample_ext.o  $(PTHREAD_LIB_DIR)   $(PTHREAD_LIBS) $(STATIC_LIBRARY) $(CFLAGS) -o $(prefix)b_sample_ext $(SSL_LIBS)

nb_sample: $(prefix)nb_sample.o $(prefix)$(STATIC_LIBRARY)
	$(CC) $(prefix)nb_sample.o  $(PTHREAD_LIB_DIR)  $(PTHREAD_LIBS) $(STATIC_LIBRARY) $(CFLAGS) -o $(prefix)nb_sample $(SSL_LIBS)

nb_sample_ext: $(prefix)nb_sample_ext.o $(prefix)$(STATIC_LIBRARY)
	$(CC) $(prefix)nb_sample_ext.o  $(PTHREAD_LIB_DIR)  $(PTHREAD_LIBS) $(STATIC_LIBRARY) $(CFLAGS) -o $(prefix)nb_sample_ext $(SSL_LIBS)

%.o : %.c
	$(CC) $(CFLAGS) $(INCLUDE_DIR) $(DEFS) -o $@ -c $<

%.lo : %.c
	$(CC) -fPIC $(CFLAGS) $(INCLUDE_DIR) $(DEFS) -o $@ -c $<

clean: 
	rm -f *.o *.so *.lo *.so.1 *.so.1.0
	rm -f $(STATIC_LIBRARY) $(DYNAMIC_LIBRARY)
	rm -f $(STATIC_OBJS) $(DYNAMIC_OBJS) $(prefix)b_sample.o $(prefix)nb_sample.o $(prefix)b_sample_ext.o $(prefix)nb_sample_ext.o $(prefix)b_sample$(EXEC_EXTENSION) $(prefix)nb_sample$(EXEC_EXTENSION) $(prefix)b_sample_ext$(EXEC_EXTENSION) $(prefix)nb_sample_ext$(EXEC_EXTENSION)

