Quote:
Originally posted by orgcandman
it would be helpful if you posted the makefile
|
I cant make a simple example that shows the problem unfortunatley and the makefile contains a lot of root -
http://root.cern.ch - related stuff which may confuse matters (unfortunatly I cant manage to make a simple example to show the problem
)...anyway here is all the gore:
# --- External configuration ----------------------------------
CC = g++
CCFLAGS = -O2
LD = g++
#LDFLAGS = -g
LDFLAGS =
MFLAGS = -MM
INCLUDES =
USER_DIR = /home/hodgkinson
WORKDIR = $(USER_DIR)/EFlowAnalysis/tmp
LIBDIR = $(WORKDIR)
# -------------------------------------------------------------
# Internal configuration
PACKAGE =EFlowAnalysis
LD_LIBRARY_PATH :=$(ROOTSYS)/lib: export LD_LIBRARY_PATH
OBJDIR =$(WORKDIR)/objects
INCDIR =$(WORKDIR)/$(PACKAGE)
ROOFITCORE_DIR =$(ROOFITCORE)/$(WORKDIR)/
VPATH =$(INCDIR) $(OBJDIR)
INCLUDES = \
-I$(WORKDIR) \
-I$(ROOTSYS)/include \
ROOTSYS ?= ERROR_RootSysIsNotDefined
RDLLIST = $(filter-out $(PACKAGE)_LinkDef.rdl,$(wildcard *.rdl))
SKIPLIST =
CINTFILE = $(PACKAGE)Cint.cc
CINTOBJ = $(PACKAGE)Cint.o
LIBFILE = $(LIBDIR)/lib$(PACKAGE).a
SHLIBFILE = $(LIBDIR)/lib$(PACKAGE).so
#EXECUTABLE = $(OBJDIR)/$(PACKAGE)App.o
ROOTCFLAGS = $(shell root-config --cflags)
ROOTLIBS = $(shell root-config --libs)
ROOTGLIBS = $(shell root-config --glibs)
NGLIBS = $(ROOTGLIBS)
NGLIBS += -lMinuit
NGLIBS += -lEG
NGLIBS += -lHtml
GLIBS = $(filter-out -lNew, $(NGLIBS))
CXXFLAGS := -O -Wall -fPIC
CXXFLAGS += $(ROOTCFLAGS)
CXX := g++
default: shlib
# List of all includes files to copy from rdl
HHLIST=$(patsubst %.rdl,%.hh,$(RDLLIST))
# List of all source files to build
CCLIST=$(filter-out $(SKIPLIST),$(wildcard *.cc))
# List of all object files to build
OLIST=$(patsubst %.cc,%.o,$(CCLIST))
# List of all dependency file to make
DLIST=$(patsubst %.rdl,%.d,$(RDLLIST))
# Implicit rule making all dependency Makefiles included at the end of this makefile
$(INCDIR)/%.d: %.cc $(HHLIST)
@echo "Making $@"
@set -e; $(CC) $(MFLAGS) $(CPPFLAGS) $(INCLUDES) $< \
| sed 's/\($(notdir $*)\)\.o[ :]*/\1.o $(notdir $@) : /g' > $@; \
[ -s $@ ] || rm -f $@
# Implicit rule copying all RDL to INCDIR/HH
%.hh: %.rdl
@mkdir -p $(INCDIR)
@cp $< $(INCDIR)/$@
# Implicit rule to compile all classes
%.o : %.cc
@echo "Compiling $<"
@mkdir -p $(OBJDIR)
@$(CC) $(LDFLAGS) $(CCFLAGS) -c $< -o $(OBJDIR)/$(notdir $@) $(INCLUDES)
# Rule to make ROOTCINT output file
$(OBJDIR)/$(CINTOBJ): $(RDLLIST) $(PACKAGE)_LinkDef.hh $(INCDIR)
@mkdir -p $(INCDIR)
@mkdir -p $(OBJDIR)
# @cp *.hh $(INCDIR)
@echo "Running rootcint"
@ROOTSYS=$(ROOTSYS)
@export ROOTSYS
@cd $(INCDIR) ; $(ROOTSYS)/bin/rootcint -f $(CINTFILE) -c $(INCLUDES) $(HHLIST) $(PACKAGE)_LinkDef.hh
@echo "Compiling $(CINTFILE)"
@$(CC) $(LDFLAGS) $(CCFLAGS) -c $(INCDIR)/$(CINTFILE) -o $(OBJDIR)/$(CINTOBJ) $(INCLUDES)
# Rule to combine objects into a library
$(LIBFILE): $(OLIST) $(INCDIR)/$(CINTFILE)) $(patsubst %.cc,%.o,$(OBJDIR)/$(CINTFILE))
@echo "Making $(LIBFILE)"
@rm -f $(LIBFILE)
@ar q $(LIBFILE) $(addprefix $(OBJDIR)/,$(OLIST) $(patsubst %.cc,%.o,$(CINTFILE)))
@ranlib $(LIBFILE)
# Rule to combine objects into a shared library
$(SHLIBFILE): $(OLIST) $(patsubst %.cc,%.o,$(OBJDIR)/$(CINTFILE))
#$(patsubst %.cc,%.o,/u/br/markhod/RooFitCore/tmp/objects/RooFitCoreCint.o)
@echo "Making $(SHLIBFILE)"
@rm -f $(SHLIBFILE)
@$(CC) $(LDFLAGS) $(addprefix $(OBJDIR)/,$(OLIST) $(patsubst %.cc,%.o,$(CINTFILE))) -shared -o $(SHLIBFILE)
#$(patsubst %.cc,%.o,/u/br/markhod/RooFitCore/tmp/objects/RooFitCoreCint.o) -shared -o $(SHLIBFILE)
# Rule to make executable
.SUFFIXES: .cc
.cc.o:
$(CXX) $(CXXFLAGS) -c $<
$(EXECUTABLE): $(addprefix $(OBJDIR)/,$(OLIST)) $(addprefix $(OBJDIR)/,$(PACKAGE)_Main.o)
#$(filter-out /u/br/markhod/RooFitCore/tmp/objects/RooHtml.o,$(wildcard /u/br/markhod/RooFitCore/tmp/objects/*.o))
@echo "Making $(EXECUTABLE)"
@rm -f $(EXECUTABLE)
@$(LD) $(LDFLAGS) -o $(PACKAGE)App $(addprefix $(OBJDIR)/,$(PACKAGE)_Main.o) $(SHLIBFILE) $(GLIBS)
# Useful build targets
clean:
rm -rf $(OBJDIR)
rm -rf $(INCDIR)
rm -f $(LIBFILE)
rm -f $(SHLIBFILE)
rm -f $(EXECUTABLE)
lib: $(LIBFILE)
shlib: $(SHLIBFILE)
bin: $(EXECUTABLE)
#all: $(SHLIBFILE) $(EXECUTABLE)
.PHONY : clean shlib lib bin default
-include $(addprefix $(INCDIR)/,$(DLIST))