#  
# Makefile for Brutus test/sample client code.
# Copyright (C) 2004-2007 OMC Denmark ApS.
# 
# 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, either version 3 of the License, or
# (at your option) any later version.
# 
# 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, see <http://www.gnu.org/licenses/>.


LOCAL_MAKE_ROOT := $(shell pwd)/..

ifndef TOP_INVOKED
    # ACE/TAO settings
    ifndef ACE_ROOT
        $(message ACE_ROOT not defined, assuming system wide installation)
        ORB_INCLUDE := -I/usr/include/
        ORB_LDFLAGS := -L/usr/lib
        TAO_IDL := /usr/bin/tao_idl
    else
        $(message ACE_ROOT defined, assuming local ACE/TAO source installation)
        ifndef TAO_ROOT
            TAO_ROOT := $(ACE_ROOT)/TAO
        endif
        ORB_INCLUDE := -I$(ACE_ROOT) -I$(TAO_ROOT) 
        ORB_LDFLAGS := -L$(ACE_ROOT)/lib
        TAO_IDL := $(ACE_ROOT)/bin/tao_idl
    endif

    # Compiler settings
    CC := gcc
    OPT = -Os
    DEBUG := -g -O0 -fno-inline
    CFLAGS := -Wall $(DEBUG) 
    LDFLAGS := $(ORB_LDFLAGS)
    LIBS := -lTAO_PortableServer -lTAO -lACE

    # Directories
    IDL_OUTPUT_DIR := $(shell pwd)/../idl_output
    INCLUDE := $(ORB_INCLUDE) -I$(LOCAL_MAKE_ROOT)
endif

LIBS += -lstdc++
PROG := ./brutus_client

# files
SOURCE := main.cpp
OBJS   := main.o

# Helper class object files. Each helper class has
# its own Makefile that produce the object files
CLASS_OBJS := $(LOCAL_MAKE_ROOT)/bresult/bresult.o \
              $(LOCAL_MAKE_ROOT)/proptags/proptag.o \
              $(LOCAL_MAKE_ROOT)/brutus_utils/brutus_utils.o \
              $(LOCAL_MAKE_ROOT)/config/config.o \
              $(LOCAL_MAKE_ROOT)/init_orb/init_orb.o 

STUB_OBJS := $(wildcard $(IDL_OUTPUT_DIR)/*C.o) \
             $(wildcard $(LOCAL_MAKE_ROOT)/servant_impl/*.o)

all : $(OBJS)
	$(CC) $(CFLAGS) $(LDFLAGS) $(INCLUDE) $(CLASS_OBJS) $(STUB_OBJS) $(OBJS) $(LIBS) -o $(PROG)


$(OBJS) : $(SOURCE) 
	$(CC) $(CFLAGS) $(INCLUDE) -c $^ -o $@

clean:
	-rm $(OBJS) *~ $(PROG)


.PHONY: all clean

