head	2.5;
access;
symbols;
locks; strict;
comment	@# @;


2.5
date	2011.04.29.08.39.13;	author cal103;	state Exp;
branches;
next	2.4;

2.4
date	2011.04.28.06.50.41;	author cal103;	state Exp;
branches;
next	2.3;

2.3
date	2010.07.30.03.54.00;	author cal103;	state Exp;
branches;
next	2.2;

2.2
date	2007.06.04.00.00.00;	author cal103;	state Exp;
branches;
next	2.1;

2.1
date	2007.06.01.00.00.00;	author cal103;	state Exp;
branches;
next	2.0;

2.0
date	2004.04.25.16.10.00;	author cal103;	state Exp;
branches;
next	;


desc
@source/lib/makefiles/generic/shared-objects
@


2.5
log
@Added needed libraries to the link list when creating gls_main.so and
kvis-multibeam.so so that they will be recorded as DT_NEEDED in the ELF
object.  Use automatic variables in the rules that create them.
@
text
@# $Id: shared-objects,v 2.4 2011/04/28 06:50:41 cal103 Exp cal103 $

LIB := shared-objects

include $(KARMAROOT)/source/lib/makefiles/GNUmakefile.h1

target_dir := $(KARMALIBPATH)/shared-objects

# Now define all the objects and flags
csource :=
ccsource :=
cflags :=
ldflags :=
dependflags :=
TARGETS :=


.PHONY: all build
all : $(target_dir) build clean

$(target_dir):
	mkdir -p $(target_dir)


# XGL start ###################################################################
ifdef XGLHOME
xgl_target := $(target_dir)/kwin_xgl.so
TARGETS += $(xgl_target)

$(xgl_target):	kwin_xgl.o kwin_xgl.c
	$(LDso) -o kwin_xgl.so kwin_xgl.o $(LDFLAGS)
	rm -f $(target_dir)/kwin_xgl.so
	cp -p kwin_xgl.so $(target_dir)
	rm kwin_xgl.so
	@@echo "$(XGLHOME)/lib" > $(target_dir)/kwin_xgl.libs
	@@echo "xgl" >> $(target_dir)/kwin_xgl.libs
	@@echo "Contents of: $(target_dir)/kwin_xgl.libs follow"
	@@cat $(target_dir)/kwin_xgl.libs

kwin_xgl.o:	kwin_xgl.c
	$(CC) $(cc_picflag) -c $(csourcedir)/kwin_xgl.c -I$(XGLHOME)/include \
	-I$(XINCLUDEPATH)

csource += kwin_xgl.c
cflags += -I$(XGLHOME)/include
dependflags += -I$(XGLHOME)/include
x11flags = -I$(XINCLUDEPATH)
endif
# XGL end #####################################################################

# GLISH start #################################################################
ifdef GLISHROOT
  GLISHINCD := -I$(GLISHROOT)/include
  GLISHLIBD := $(GLISHROOT)/$(MYOS)/lib
  GLISHLIBS := -lglish -lsos -lnpd

  lpath :=
  rpath := $(KARMALIBPATH):$(GLISHLIBD)

  ifdef MAKE_MULTIBEAMVIS
    # Put suitably modified (noDL) versions directly into libkarma for static
    # linking of MultibeamVis/View 1.7.20.
    TARGETS += ../karma/gls_main.o ../karma/kvis-multibeam.o

    ../karma/gls_main.o : gls_main_noDL.cc
	-@@ echo ""
	   $(CCpp) -c $< -o $@@ $(GLISHINCD)

    ../karma/kvis-multibeam.o : kvis-multibeam_noDL.cc
	-@@ echo ""
	   $(CCpp) -c $< -o $@@ $(GLISHINCD)
  else
    # Generate sharable objects for dynamic loading.  These may also be used
    # by kvis 1.7.25 (only available as a binary) for which they were built
    # using an older version of Glish.
    TARGETS += $(target_dir)/gls_main.so $(target_dir)/kvis-multibeam.so

    gls_main.o : gls_main.cc
	-@@ echo ""
	   $(CCpp) $(CC_picflag) -c $< -o $@@ $(GLISHINCD)

    kvis-multibeam.o : kvis-multibeam.cc
	-@@ echo ""
	   $(CCpp) $(CC_picflag) -c $< -o $@@ $(GLISHINCD)
  endif

  ifdef __disabled__
    $(target_dir)/gls_main.so : gls_main.o
	$(LDso) -o gls_main.so gls_main.o $(LDFLAGS)
	$(RM) $(target_dir)/gls_main.so
	cp -p gls_main.so $(target_dir)
	$(RM) gls_main.so
	@@echo "$(GLISHLIBD):$(CCpp_libdirs)" > $(target_dir)/gls_main.libs
	@@echo "$(CCpp_libs) npd sos glish" >> $(target_dir)/gls_main.libs
	@@echo "Contents of: $(target_dir)/gls_main.libs follow"
	@@cat $(target_dir)/gls_main.libs
  else
    GLIBS := -L$(KARMALIBPATH) -lkarma -L$(GLISHLIBD) $(GLISHLIBS)

    $(target_dir)/gls_main.so : gls_main.o
	-@@ echo ""
	   $(LDpp) -o $(@@F) $< $(LDFLAGS) -shared $(GLIBS)
	-@@ $(RM) $@@
	   cp -p $(@@F) $(@@D)
	   $(RM) $(@@F)
  endif

  # Simple linking seems to be OK here, since Glish should already be loaded.
  # Also require simple linking so that g++ does not put in its own _init
  # symbol.

  KLIBS := -L$(KARMALIBPATH) -lkarmagraphics -lkarmawidgets -lkarmaXt -lkarma 
  KLIBS += -L$(GLISHLIBD) $(GLISHLIBS) -L$(XLIBPATH) -lXt

  $(target_dir)/kvis-multibeam.so : kvis-multibeam.o
	-@@ echo ""
	   $(LDso) -o $(@@F) $< $(LDFLAGS) $(KLIBS)
	-@@ $(RM) $@@
	   cp -p $(@@F) $(@@D)
	   $(RM) $(@@F)

  ccsource    += gls_main.cc kvis-multibeam.cc
  cflags      += $(GLISHINCD)
  dependflags += $(GLISHINCD)
endif
# GLISH end ###################################################################


# Common section
CFLAGS := $(cflags) $(x11flags)
DEPENDFLAGS := $(dependflags) $(x11flags)
all_cflags := $(CFLAGS)

.PRECIOUS: $(TARGETS)

build:	$(TARGETS)


include $(KARMAROOT)/source/lib/makefiles/GNUmakefile.h2
@


2.4
log
@Build for MultibeamVis/View based on the value of MAKE_MULTIBEAMVIS.
@
text
@d1 1
a1 1
# $Id: shared-objects,v 2.3 2010/07/30 03:54:00 cal103 Exp cal103 $
d57 2
a58 3
  LGLISH := -L$(GLISHLIBD) $(GLISHLIBS)
  lpath  :=
  rpath  := $(GLISHLIBD)
d98 2
d102 4
a105 4
	   $(LDpp) -o gls_main.so gls_main.o $(LDFLAGS) -shared $(LGLISH)
	-@@ $(RM) $(target_dir)/gls_main.so
	   cp -p gls_main.so $(target_dir)
	   $(RM) gls_main.so
d111 4
d117 4
a120 4
	   $(LDso) -o kvis-multibeam.so kvis-multibeam.o $(LDFLAGS) $(LGLISH)
	-@@ $(RM) $(target_dir)/kvis-multibeam.so
	   cp -p kvis-multibeam.so $(target_dir)
	   $(RM) kvis-multibeam.so
@


2.3
log
@Use Glish environment variables instead of aips++.
@
text
@d1 1
a1 1
# $Id: shared-objects,v 2.2 2010/07/30 03:54:00 cal103 Exp $
d19 1
a19 1
all:	build clean $(target_dir)
d53 34
a86 2
GLISHLIB := $(GLISHROOT)/$(MYOS)/lib
GLISHINC := -I$(GLISHROOT)/include
d88 2
a89 23
# Generate sharable libraries for use by kvis 1.7.25 which is only available
# as a binary.  The sharable libraries provided in 1.7.25 were built using an
# older version of Glish.
TARGETS += $(target_dir)/gls_main.so $(target_dir)/kvis-multibeam.so

gls_main.o : gls_main_orig.cc
	$(CCpp) $(CC_picflag) -c $< -o $@@ $(GLISHINC) -fno-gnu-linker

kvis-multibeam.o : kvis-multibeam_orig.cc
	$(CCpp) $(CC_picflag) -c $< -o $@@ $(GLISHINC)

# MRC 2007/06/01: Also put suitably modified (noDL) versions directly into
# libkarma for static linking of MultibeamVis and MultibeamView 1.7.20.
TARGETS += ../karma/gls_main.o ../karma/kvis-multibeam.o

../karma/gls_main.o : gls_main_noDL.cc
	$(CCpp) -c $< -o $@@ $(GLISHINC) -fno-gnu-linker

../karma/kvis-multibeam.o : kvis-multibeam_noDL.cc
	$(CCpp) -c $< -o $@@ $(GLISHINC)

ifdef __disabled__
$(target_dir)/gls_main.so:	gls_main.o
d91 1
a91 1
	rm -f $(target_dir)/gls_main.so
d93 2
a94 2
	rm gls_main.so
	@@echo "$(GLISHLIB):$(CCpp_libdirs)" > $(target_dir)/gls_main.libs
d98 22
a119 21
else
$(target_dir)/gls_main.so:	gls_main.o
	$(LDpp) -L$(GLISHLIB) \
	-shared -o gls_main.so gls_main.o $(LDFLAGS) -lglish -lsos -lnpd
	rm -f $(target_dir)/gls_main.so
	cp -p gls_main.so $(target_dir)
	rm gls_main.so
endif

# Simple linking seems to be OK here, since Glish should already be loaded.
# Also require simple linking so that g++ does not put in its own _init symbol.
$(target_dir)/kvis-multibeam.so:	kvis-multibeam.o
	$(LDso) -o kvis-multibeam.so kvis-multibeam.o \
	$(LDFLAGS)
	rm -f $(target_dir)/kvis-multibeam.so
	cp -p kvis-multibeam.so $(target_dir)
	rm kvis-multibeam.so

ccsource += gls_main.cc kvis-multibeam.cc
cflags += $(GLISHINC)
dependflags += $(GLISHINC)
@


2.2
log
@Make gls_main.so and kvis-multibeam.so as sharable objects for kvis
1.7.25, as well as putting suitably modified versions into libkarma
for static linking of MultibeamVis/View.
@
text
@d1 2
d51 8
a58 8
# AIPS++ start ################################################################
ifdef AIPSPATH
aips2root := $(word 1,$(AIPSPATH))
aips2arch := $(word 2,$(AIPSPATH))
aips2lib := $(aips2root)/$(aips2arch)/lib
aips2incsw := -I$(aips2root)/code/include -I$(aips2root)/code/aips/glish/include
aips2cflags := $(aips2incsw)

d62 1
a62 2
	$(CCpp) $(CC_picflag) -c $(csourcedir)/gls_main.cc $(aips2cflags) \
	-fno-gnu-linker
d65 1
a65 2
	$(CCpp) $(CC_picflag) -c $(csourcedir)/kvis-multibeam.cc \
	$(aips2cflags)
d72 1
a72 1
	$(CCpp) -c $< -o $@@ $(aips2cflags) -fno-gnu-linker
d75 1
a75 1
	$(CCpp) -c $< -o $@@ $(aips2cflags)
d83 1
a83 1
	@@echo "$(aips2lib):$(CCpp_libdirs)" > $(target_dir)/gls_main.libs
d89 1
a89 2
	$(LDpp) -L$(aips2lib) \
	-Wl,$(rpathswitch),$(aips2lib):$(KARMALIBPATH)/shared-objects \
d106 2
a107 2
cflags += $(aips2incsw)
dependflags += $(aips2incsw)
d109 1
a109 1
# AIPS++ end ##################################################################
@


2.1
log
@Put (suitably modified) versions of gls_main.o and kvis-multibeam.o
directly into libkarma for static linking of MultibeamVis/View 1.7.20 for
Livedata.
@
text
@d57 12
a68 1
# MRC 2007/06/01: These now go directly into libkarma.
a69 1
#TARGETS += $(target_dir)/gls_main.so $(target_dir)/kvis-multibeam.so
d71 2
a72 3
../karma/gls_main.o:	gls_main.cc
	$(CCpp) -c $(csourcedir)/gls_main.cc -o $@@ $(aips2cflags) \
	-fno-gnu-linker
d74 2
a75 2
../karma/kvis-multibeam.o:	kvis-multibeam.cc
	$(CCpp) -c $(csourcedir)/kvis-multibeam.cc -o $@@ $(aips2cflags)
@


2.0
log
@Initial revision from Karma 1.7.20.
@
text
@a55 1
TARGETS += $(target_dir)/gls_main.so $(target_dir)/kvis-multibeam.so
d57 6
a62 2
gls_main.o:	gls_main.cc
	$(CCpp) $(CC_picflag) -c $(csourcedir)/gls_main.cc $(aips2cflags) \
d65 2
a66 3
kvis-multibeam.o:	kvis-multibeam.cc
	$(CCpp) $(CC_picflag) -c $(csourcedir)/kvis-multibeam.cc \
	$(aips2cflags)
@
