
include toc.make
# maintenance notes:
#  imported via toc:
#   $(LIBCL_CLIENT_LDADD) = flags for clients linking to $(LIBCL_LIBNAME)
#   $(LIBCL_LIBNAME)
#   $(LIBCL_VERSION)

SUBDIRS = sample

# INCLUDES += -I$(prefix)/include

SOURCES = class_loader.cpp \
	lite.cpp \
	LoadableClass.cpp \
	LoadableSubClass.cpp \
	path_finder.cpp

HEADERS = \
	cllite.hpp \
	class_loader.hpp \
	cl_debuggering_macros.hpp \
	cllite_reg.hpp \
	dll_util.hpp \
	instantiator.hpp \
	LoadableClass.hpp \
	path_finder.hpp

OBJECTS = $(addsuffix .o,class_loader path_finder)


DISTCLEAN_FILES += cl_config.hpp

DIST_FILES += $(SOURCES) $(HEADERS) cl_config.hpp.at

LIBCL_VERSION = $(PACKAGE_VERSION)
LIBCL_LIBNAME = $(PACKAGE_NAME)

LIBCL = $(LIBCL_LIBNAME)
SHARED_LIBS = $(LIBCL) LoadableSubClass
$(LIBCL).so: $(OBJECTS)
$(LIBCL)_so_OBJECTS = $(OBJECTS)
$(LIBCL)_so_VERSION = $(LIBCL_VERSION)
LoadableSubClass_so_OBJECTS = LoadableSubClass.o
LoadableSubClass_so_LDADD = $(LIBCL_CLIENT_LDADD)
include $(TOC_MAKESDIR)/SHARED_LIBS.make
# STATIC_LIBS = $(LIBCL)
# $(LIBCL)_a_OBJECTS = $(OBJECTS)
# include $(TOC_MAKESDIR)/STATIC_LIBS.make

BIN_PROGRAMS = lite
lite_bin_OBJECTS = lite.o LoadableClass.o
lite_bin_LDADD = -L. -ls11n_class_loader $(LDADD_DL)
#ff_bin_LDADD = -rdynamic
#ff_bin_OBJECTS = ff.o -ldl
include $(TOC_MAKESDIR)/BIN_PROGRAMS.make


INSTALL_LIBEXECS := $(filter-out Loadable%,$(INSTALL_LIBEXECS))
# ^^^ re-set the list to remove Loadable*.*, which are automatically added by SHARED_LIBS

INSTALL_PACKAGE_HEADERS = $(filter-out Loadable%,$(HEADERS)) cl_config.hpp

#SYMLINK_HEADERS += $(INSTALL_PACKAGE_HEADERS)
#SYMLINK_HEADERS_DEST = $(top_srcdir)/include/$(PACKAGE_NAMESPACE)
#include $(TOC_MAKESDIR)/symlink_headers.make


all: $(OBJECTS) SHARED_LIBS BIN_PROGRAMS subdirs
	@echo "When running the test binary be sure to set your LD_LIBRARY_PATH to include $(shell pwd)!"
	@echo "Running the 'test' target does this for you."

RUNTEST = LD_LIBRARY_PATH=$(top_srcdir)/src:${LD_LIBRARY_PATH} ./lite
test:
	$(RUNTEST)

# demonstrate a failed lookup for a DLL:
faildll:
	mv LoadableSubClass.so tmp.foo
	-$(RUNTEST)
	mv tmp.foo LoadableSubClass.so

