# Makefile for astron32.so, astron64.so, etc.

# B. Knapp, 1999-06-25, 2001-01-02, 2001-04-20 (wmm2000),
#           2001-04-25 (32-bit, 64-bit), 2006-03-27 (wmm2005)
# C. Jeppesen, 2007 (64-bit Linux)
#
# To build:
# make astron32.so
#  OR
# make astron64.so
#
# To clean:
# make clean32
#  OR
# make clean64
#
# Make sure to clean before switching bits and rebuilding

#
# RCS DATA
#    
# $Header$
#     
# $Log$
#

LIB="$(BASENAME).dll" 
FC=g77 
CC=gcc 
JC=javac 
LDFLAGS="-Wl,--output-def=lib$(BASENAME).def \
 	-Wl,--out-implib=lib$(BASENAME).a \
 	-Wl,--traditional-format \
 	-Wl,--export-dynamic \
 	-Wl,--demangle \
 	-Wl,--export-all-symbols \
 	-Wl,--kill-at " 
LDLIBS="-lg2c -lm -ljAstronomy " 
CFLAGS="-DBUILDING_DLL=1 \
	-shared -Bdynamic \
 	-O2 -I$(WIN_JINC) -I$(WIN_JINC)\win32 " 
FFLAGSGNU = -c -ext_names=plain -fno-second-underscore -fPIC
FFLAGSWIN = -mno-cygwin $(FFLAGSGNU)
FFLAGS32 = -m32 $(FFLAGSGNU)
FFLAGS64 = -m64 $(FFLAGSGNU)
JFLAGS="" 


# Library paths
BGKLIB_PATH = ${bgkroot}/lib/
LIB_PATH32 = /lib/
LIB_PATH64 = /opt/SUNWspro/lib/v9/

# Compiler flags
#FFLAGS32 = -xtypemap=integer:32 -pic -G #-xld
#FFLAGS64 = -xarch=v9 -xtypemap=integer:64 -PIC -G #-xld

# Linker flags
LFLAGS32 = -m32
LFLAGS64 = -m64

# Object files
OBJS = \
	aberrat.o \
	aberrat_xyz.o \
	acosd.o \
	angdst.o \
	asind.o \
	atan2d.o \
	carr2ut.o \
	carr2ut_arg.o \
	const1875.o \
	constellation.o \
	constellation_arg.o \
	cosd.o \
	dahav.o \
	deg2dms.o \
	deltat.o \
	dhav.o \
	dms2deg.o \
	dms2rad.o \
	dyd.o \
	elong.o \
	ephem.o \
	ephem_arg.o \
	equecl.o \
	equecl_jd.o \
	fk5.o \
	galactic.o \
        geodetic.o \
        geodetic_arg.o \
	get_tle_subset.o \
	get_tle_subset_arg.o \
	hcpvd.o \
	helios.o \
	helios_arg.o \
	jd2yd.o \
	latlon.o \
	magfld.o \
	magfld_arg.o \
	manage_lun.o \
	meansd.o \
	moonpv.o \
	neighbor_consistency.o \
	nexttle.o \
	nutate.o \
	nutate_matrix.o \
	obliq.o \
	pair_difference.o \
	pluto.o \
	pnmatrix_j2000.o \
        precess.o \
	precess_matrix.o \
	pv_from_elts.o \
	rad2dms.o \
	ran1.o \
	remove_set.o \
	rise_set.o \
	sez2eci.o \
	sgp4.o \
	sgp4_arg.o \
	sidtim.o \
        sidtim_arg.o \
	sind.o \
	solarecl.o \
	spacecraft_pv.o \
	spacecraft_pv_arg.o \
	sphxyz.o \
	star_j2000.o \
	tand.o \
	td2ut.o \
        td2ut_arg.o \
	tlechk.o \
	tle_filter.o \
	tle_subset.o \
        ut2carr.o \
        ut2carr_arg.o \
	ut2td.o \
        ut2td_arg.o \
	version.o \
	vsop87.o \
	wmm2000.o \
	wmm2005.o \
	yd2.o \
	yd2jd.o \
	yd2ymd.o \
	ymd2jd.o \
	ymd2yd.o \
	zenith_angle.o \
	zenith_dist.o

OBJS32 = ${OBJS:.o=.o32}
OBJS64 = ${OBJS:.o=.o64}

# Dependency rules
%.o: %.f
	$(FC) $(FFLAGSWIN) -o $@ $<

%.o32: %.f
	$(FC) $(FFLAGS32) -o $@ $<

%.o64: %.f
	$(FC) $(FFLAGS64) -o $@ $<

# Targets


# The targets make_vsop87 and vsop87.f should not be used if the
# file vsop87.f is to be placed under configuration control (it
# should be created once and then these two targets should be
# commented out).

make_vsop87: make_vsop87.f
	$(FC)  -o make_vsop87 make_vsop87.f

vsop87.f: make_vsop87 *d.dat Makefile
	./make_vsop87
	cat vsop87.head vsop87.tail > vsop87.f
	rm -f vsop87.head vsop87.tail

astron.dll: $(OBJS) Makefile
	$(FC) -mno-cygwin -shared -Bdynamic $(LFLAGS32) -o $@ $(OBJS) 

astron32.so: $(OBJS32) Makefile
	$(FC) -m32        -shared -Bdynamic $(LFLAGS32) -o $@ $(OBJS32) 

astron64.so: $(OBJS64) Makefile
	$(FC) -m64        -shared -Bdynamic $(LFLAGS64) -o $@ $(OBJS64) 

newmoons32: newmoons.o32 Makefile
	f77 $(LFLAGS32) -o $@ newmoons.o32 \
		$(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm newmoons.o32

newmoons64: newmoons.o64 Makefile
	f77 $(LFLAGS64) -o $@ newmoons.o64 \
		$(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm newmoons.o64

venus_earth32: venus_earth.o32 Makefile
	f77 $(LFLAGS32) -o $@ venus_earth.o32 \
		$(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm venus_earth.o32

venus_earth64: venus_earth.o64 Makefile
	f77 $(LFLAGS64) -o $@ venus_earth.o64 \
		$(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm venus_earth.o64

xcarr2ut32: xcarr2ut.o32 Makefile
	f77 $(LFLAGS32) -o $@ xcarr2ut.o32 \
		$(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm xcarr2ut.o32

xcarr2ut64: xcarr2ut.o64 Makefile
	f77 $(LFLAGS64) -o $@ xcarr2ut.o64 \
		$(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm xcarr2ut.o64

xconstellation32: xconstellation.o32 ran1.o32 Makefile
	f77 $(LFLAGS32) -o $@ xconstellation.o32 ran1.o32 \
		$(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm xconstellation.o32

xconstellation64: xconstellation.o64 ran1.o64 Makefile
	f77 $(LFLAGS64) -o $@ xconstellation.o64 ran1.o64 \
		$(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm xconstellation.o64

xdeg2dms32: xdeg2dms.o32 Makefile
	f77 $(LFLAGS32) -o $@ xdeg2dms.o32 \
		$(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm xdeg2dms.o32

xdeg2dms64: xdeg2dms.o64 Makefile
	f77 $(LFLAGS64) -o $@ xdeg2dms.o64 \
		$(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm xdeg2dms.o64

xelong32: xelong.o32 Makefile
	f77 $(LFLAGS32) -o $@ xelong.o32 \
		$(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm xelong.o32

xelong64: xelong.o64 Makefile
	f77 $(LFLAGS64) -o $@ xelong.o64 \
		$(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm xelong.o64

xephem32: xephem.o32 Makefile
	f77 $(LFLAGS32) -o $@ xephem.o32 \
		$(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm xephem.o32

xephem64: xephem.o64 Makefile
	f77 $(LFLAGS64) -o $@ xephem.o64 \
		$(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm xephem.o64

xgeodetic32: xgeodetic.o32 Makefile
	f77 $(LFLAGS32) -o $@ xgeodetic.o32 \
		$(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm xgeodetic.o32

xgeodetic64: xgeodetic.o64 Makefile
	f77 $(LFLAGS64) -o $@ xgeodetic.o64 \
		$(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm xgeodetic.o64

xget_tle_subset32: xget_tle_subset.o32 Makefile
	f77 $(LFLAGS32) -o $@ xget_tle_subset.o32 \
                $(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm xget_tle_subset.o32

xget_tle_subset64: xget_tle_subset.o64 Makefile
	f77 $(LFLAGS32) -o $@ xget_tle_subset.o64 \
                $(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm xget_tle_subset.o64

xhcpvd32: xhcpvd.o32 Makefile
	f77 $(LFLAGS32) -o $@ xhcpvd.o32 \
		$(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm xhcpvd.o32

xhcpvd64: xhcpvd.o64 Makefile
	f77 $(LFLAGS64) -o $@ xhcpvd.o64 \
		$(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm xhcpvd.o64

xhelios32: xhelios.o32 Makefile
	f77 $(LFLAGS32) -o $@ xhelios.o32 \
		$(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm xhelios.o32

xhelios64: xhelios.o64 Makefile
	f77 $(LFLAGS64) -o $@ xhelios.o64 \
		$(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm xhelios.o64

xmagfld32: xmagfld.o32 Makefile
	f77 $(LFLAGS32) -o $@ xmagfld.o32 \
		$(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm xmagfld.o32

xmagfld64: xmagfld.o64 Makefile
	f77 $(LFLAGS64) -o $@ xmagfld.o64 \
		$(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm xmagfld.o64

xmoonpv32: xmoonpv.o32 Makefile
	f77 $(LFLAGS32) -o $@ xmoonpv.o32 \
		$(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm xmoonpv.o32

xmoonpv64: xmoonpv.o64 Makefile
	f77 $(LFLAGS64) -o $@ xmoonpv.o64 \
		$(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm xmoonpv.o64

xnutate32: xnutate.o32 Makefile
	f77 $(LFLAGS32) -o $@ xnutate.o32 \
		$(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm xnutate.o32

xnutate64: xnutate.o64 Makefile
	f77 $(LFLAGS64) -o $@ xnutate.o64 \
		$(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm xnutate.o64

xrad2dms32: xrad2dms.o32 Makefile
	f77 $(LFLAGS32) -o $@ xrad2dms.o32 \
		$(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm xrad2dms.o32

xrad2dms64: xrad2dms.o64 Makefile
	f77 $(LFLAGS64) -o $@ xrad2dms.o64 \
		$(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm xrad2dms.o64

xrise_set32: xrise_set.o32 Makefile
	f77 $(LFLAGS32) -o $@ xrise_set.o32 \
		$(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm xrise_set.o32

xrise_set64: xrise_set.o64 Makefile
	f77 $(LFLAGS64) -o $@ xrise_set.o64 \
		$(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm xrise_set.o64

xsidtim32: xsidtim.o32 Makefile
	f77 $(LFLAGS32) -o $@ xsidtim.o32 \
		$(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm xsidtim.o32

xsidtim64: xsidtim.o64 Makefile
	f77 $(LFLAGS64) -o $@ xsidtim.o64 \
		$(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm xsidtim.o64

xsolarecl32: xsolarecl.o32 Makefile
	f77 $(LFLAGS32) -o $@ xsolarecl.o32 \
		$(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm xsolarecl.o32

xsolarecl64: xsolarecl.o64 Makefile
	f77 $(LFLAGS64) -o $@ xsolarecl.o64 \
		$(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm xsolarecl.o64

xstar_j200032: xstar_j2000.o32 Makefile
	f77 $(LFLAGS32) -o $@ xstar_j2000.o32 \
		$(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm xstar_j2000.o32

xstar_j200064: xstar_j2000.o64 Makefile
	f77 $(LFLAGS64) -o $@ xstar_j2000.o64 \
		$(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm xstar_j2000.o64

xzenith_angle32: xzenith_angle.o32 Makefile
	f77 $(LFLAGS32) -o $@ xzenith_angle.o32 \
		$(BGKLIB_PATH)astron32.so \
		-R $(LIB_PATH32):$(BGKLIB_PATH)
	rm xzenith_angle.o32

xzenith_angle64: xzenith_angle.o64 Makefile
	f77 $(LFLAGS64) -o $@ xzenith_angle.o64 \
		$(BGKLIB_PATH)astron64.so \
		-R $(LIB_PATH64):$(BGKLIB_PATH)
	rm xzenith_angle.o64

clean32:
	rm -f core *.o *.o32 make_vsop87 astron32.so

clean64:
	rm -f core *.o *.o64 make_vsop87 astron64.so
