#
# makefile.vc - builds PROJ.4 library with Visual C++
#
!INCLUDE ..\nmake.opt

azimuthal = \
	PJ_aeqd.obj PJ_gnom.obj PJ_laea.obj PJ_mod_ster.obj \
	PJ_nsper.obj PJ_nzmg.obj PJ_ortho.obj PJ_stere.obj PJ_sterea.obj \
	proj_rouss.obj

conic = \
	PJ_aea.obj PJ_bipc.obj PJ_bonne.obj PJ_eqdc.obj \
	PJ_imw_p.obj PJ_lcc.obj PJ_poly.obj \
	PJ_rpoly.obj PJ_sconics.obj PJ_lcca.obj PJ_ccon.obj

cylinder = \
	PJ_cass.obj PJ_cc.obj PJ_cea.obj PJ_eqc.obj \
	PJ_gall.obj PJ_labrd.obj PJ_lsat.obj PJ_misrsom.obj PJ_merc.obj \
	PJ_mill.obj PJ_ocea.obj PJ_omerc.obj PJ_patterson.obj PJ_somerc.obj \
	PJ_tcc.obj PJ_tcea.obj PJ_tmerc.obj PJ_geos.obj \
	PJ_gstmerc.obj proj_etmerc.obj PJ_comill.obj

misc = \
	PJ_airy.obj PJ_aitoff.obj PJ_august.obj PJ_bacon.obj \
	PJ_chamb.obj PJ_hammer.obj PJ_lagrng.obj PJ_larr.obj \
	PJ_lask.obj PJ_nocol.obj PJ_ob_tran.obj PJ_oea.obj \
	PJ_sch.obj PJ_tpeqd.obj PJ_vandg.obj PJ_vandg2.obj \
    PJ_vandg4.obj PJ_wag7.obj PJ_latlong.obj PJ_krovak.obj \
    PJ_geoc.obj pj_geocent.obj PJ_healpix.obj PJ_qsc.obj

pseudo = \
	PJ_boggs.obj PJ_collg.obj PJ_crast.obj PJ_denoy.obj \
	PJ_eck1.obj PJ_eck2.obj PJ_eck3.obj PJ_eck4.obj \
	PJ_eck5.obj PJ_fahey.obj PJ_fouc_s.obj PJ_gins8.obj \
	PJ_gn_sinu.obj PJ_goode.obj PJ_igh.obj PJ_hatano.obj PJ_loxim.obj \
	PJ_mbt_fps.obj PJ_mbtfpp.obj PJ_mbtfpq.obj PJ_moll.obj \
	PJ_nell.obj PJ_nell_h.obj PJ_putp2.obj PJ_putp3.obj \
	PJ_putp4p.obj PJ_putp5.obj PJ_putp6.obj PJ_robin.obj \
	PJ_sts.obj PJ_urm5.obj PJ_urmfps.obj PJ_wag2.obj \
	PJ_wag3.obj PJ_wink1.obj PJ_wink2.obj PJ_isea.obj \
	PJ_calcofi.obj PJ_natearth.obj PJ_natearth2.obj PJ_times.obj

support = \
	aasincos.obj adjlon.obj bch2bps.obj bchgen.obj pj_gauss.obj \
	biveval.obj dmstor.obj mk_cheby.obj pj_auth.obj \
	pj_deriv.obj pj_ell_set.obj pj_ellps.obj pj_errno.obj \
	pj_factors.obj pj_fwd.obj pj_init.obj pj_inv.obj \
	pj_list.obj pj_malloc.obj pj_mlfn.obj pj_msfn.obj \
	pj_open_lib.obj pj_param.obj pj_phi2.obj pj_pr_list.obj \
	pj_qsfn.obj pj_strerrno.obj pj_tsfn.obj pj_units.obj \
	pj_zpoly1.obj rtodms.obj vector1.obj pj_release.obj \
	geocent.obj pj_transform.obj pj_datum_set.obj pj_datums.obj \
	pj_apply_gridshift.obj pj_gc_reader.obj pj_gridcatalog.obj \
	nad_cvt.obj nad_init.obj nad_intr.obj \
	pj_utils.obj pj_gridlist.obj pj_gridinfo.obj \
	proj_mdist.obj pj_mutex.obj pj_initcache.obj \
	pj_ctx.obj pj_fileapi.obj pj_log.obj pj_apply_vgridshift.obj \
	pj_strtod.obj pj_internal.obj

pipeline = \
	proj_4D_api.obj PJ_cart.obj PJ_pipeline.obj PJ_horner.obj PJ_helmert.obj \
	PJ_vgridshift.obj PJ_hgridshift.obj PJ_unitconvert.obj PJ_molodensky.obj \
	PJ_deformation.obj PJ_axisswap.obj

geodesic = geodesic.obj

LIBOBJ	=	$(support) $(pseudo) $(azimuthal) $(conic) $(cylinder) $(misc) \
	$(geodesic) $(pipeline)
PROJEXE_OBJ	= proj.obj gen_cheb.obj p_series.obj emess.obj
CS2CSEXE_OBJ	= cs2cs.obj gen_cheb.obj p_series.obj emess.obj
GEODEXE_OBJ	= geod.obj geod_set.obj geod_interface.obj emess.obj
CCTEXE_OBJ = cct.obj proj_strtod.obj
GIEEXE_OBJ = gie.obj proj_strtod.obj

MULTISTRESSTEST_OBJ = multistresstest.obj
PROJ_DLL 	= proj$(VERSION).dll
PROJ_EXE    = proj.exe
CS2CS_EXE   = cs2cs.exe
GEOD_EXE    = geod.exe
CCT_EXE     = cct.exe
GIE_EXE     = gie.exe
NAD2BIN_EXE = nad2bin.exe
MULTISTRESSTEST_EXE = multistresstest.exe

CFLAGS	=	/nologo -I. -DPROJ_LIB=\"$(PROJ_LIB_DIR)\" \
		-DHAVE_STRERROR=1 -DHAVE_LOCALECONV=1 $(OPTFLAGS)

default:	all

all: proj.lib $(PROJ_EXE) $(CS2CS_EXE) $(GEOD_EXE) $(CCT_EXE) $(GIE_EXE) $(NAD2BIN_EXE)

proj.lib:	$(LIBOBJ)
	if exist proj.lib del proj.lib
	lib /out:proj.lib $(LIBOBJ)

$(PROJ_DLL):	proj_i.lib

proj_i.lib:	$(LIBOBJ)
	link /debug /dll /def:proj.def /out:$(PROJ_DLL) /implib:proj_i.lib \
			$(LIBOBJ)
	if exist $(PROJ_DLL).manifest mt -manifest $(PROJ_DLL).manifest -outputresource:$(PROJ_DLL);2

$(PROJ_EXE):	$(PROJEXE_OBJ) $(EXE_PROJ)
	cl $(PROJEXE_OBJ) $(EXE_PROJ) /link setargv.obj
	if exist $(PROJ_EXE).manifest mt -manifest $(PROJ_EXE).manifest -outputresource:$(PROJ_EXE);1

$(CS2CS_EXE):	$(CS2CSEXE_OBJ) $(EXE_PROJ)
	cl $(CS2CSEXE_OBJ) $(EXE_PROJ) /link setargv.obj
	if exist $(CS2CS_EXE).manifest mt -manifest $(CS2CS_EXE).manifest -outputresource:$(CS2CS_EXE);1

$(GEOD_EXE):	$(GEODEXE_OBJ) $(EXE_PROJ)
	cl $(GEODEXE_OBJ) $(EXE_PROJ) /link setargv.obj
	if exist $(GEOD_EXE).manifest mt -manifest $(GEOD_EXE).manifest -outputresource:$(GEOD_EXE);1

$(CCT_EXE):	$(CCTEXE_OBJ) $(EXE_PROJ)
	cl $(CCTEXE_OBJ) $(EXE_PROJ) /link setargv.obj
	if exist $(CCT_EXE).manifest mt -manifest $(CCT_EXE).manifest -outputresource:$(CCT_EXE);1

$(GIE_EXE):	$(GIEEXE_OBJ) $(EXE_PROJ)
	cl $(GIEEXE_OBJ) $(EXE_PROJ) /link setargv.obj
	if exist $(GIE_EXE).manifest mt -manifest $(GIE_EXE).manifest -outputresource:$(GIE_EXE);1

$(NAD2BIN_EXE):	nad2bin.obj emess.obj $(EXE_PROJ)
	cl nad2bin.obj emess.obj $(EXE_PROJ) /link setargv.obj

$(MULTISTRESSTEST_EXE): $(MULTISTRESSTEST_OBJ)
	cl $(MULTISTRESSTEST_OBJ) $(EXE_PROJ)
	if exist $(MULTISTRESSTEST_EXE).manifest mt -manifest $(MULTISTRESSTEST_EXE).manifest -outputresource:$(MULTISTRESSTEST_EXE);1

nadshift:	nad2bin.exe
	cd ..\nad
	..\src\nad2bin.exe < conus.lla conus
	..\src\nad2bin.exe < MD.lla MD
	..\src\nad2bin.exe < TN.lla TN
	..\src\nad2bin.exe < WI.lla WI
	..\src\nad2bin.exe < WO.lla WO
	..\src\nad2bin.exe < alaska.lla alaska
	..\src\nad2bin.exe < hawaii.lla hawaii
	..\src\nad2bin.exe < prvi.lla prvi
	..\src\nad2bin.exe < stgeorge.lla stgeorge
	..\src\nad2bin.exe < stlrnc.lla stlrnc
	..\src\nad2bin.exe < stpaul.lla stpaul
	..\src\nad2bin.exe < null.lla null
	cd ..\src

clean:
	del *.dll
	del *.exe
	del *.exp
	del *.manifest
	del *.lib
	del *.obj
	del *.pdb

install: all
	-mkdir $(INSTDIR)
	-mkdir $(INSTDIR)\bin
	-mkdir $(INSTDIR)\share
	-mkdir $(INSTDIR)\lib
	-mkdir $(INSTDIR)\include
	-mkdir $(INSTDIR)\test
	-mkdir $(INSTDIR)\test\gie
	copy *.exe $(INSTDIR)\bin
	copy *.dll $(INSTDIR)\bin
	copy *.lib $(INSTDIR)\lib
	copy proj.h     $(INSTDIR)\include
	copy proj_api.h $(INSTDIR)\include
	copy projects.h $(INSTDIR)\include
	copy geodesic.h $(INSTDIR)\include
	copy ..\test\gie\*.gie $(INSTDIR)\test\gie
