[Proj] building proj4

Eric Miller EMiller at dfg.ca.gov
Thu Apr 5 10:47:05 EST 2012

I think if you replace all "cl" and "link" commands in the makefiles with $(CC) and $(LINK), respectively, and then set the environment variables to "icl.exe" and "xilink.exe", respectively, then it should work.  The src/makefile.vc is relying on inference rules to create "azimuthal", "conic", etc.  So, to satisfy those build rules, nmake uses whatever $(CC) command is defined.

Eric G. Miller
Software Developer
CA Dept. of Fish & Game

>>> On 4/5/2012 at  7:25 AM, "Wellspring, Lance" <Lance.Wellspring at Woolpert.com>
> Hello all,
> I needed a 64 bit version of proj4 and was able to build it from source on 
> Win7 using the VS 2010 command line compiler.  My application then 
> successfully used this custom build.
> However, I now have a need to build proj4 using Intel Integrated Performance 
> Primitives (IPP).  This basically entails changing all uses of 'cl' to 'icl', 
> and uses of 'link' to 'xilink', and then of course adding whatever options I 
> need.  Intel IPP works basically as a plugin to VS 2010 (as I'm using it), 
> adding an Intel compiler mode to the VS 2010 command line compiler.
> My problem is  even though I changed all uses of 'cl' to 'icl' in 
> 'Proj\src\makefile.vc', when calling 'nmake /f Proj\makefile.vc' it still 
> uses 'cl' in some cases.  I cannot seem to find where these additional 'cl' 
> calls are being made from so that I can change them.  Here is the initial 
> output of the build, where the first rogue 'cl' is called:
> C:\PROJ\proj-4.8.0>nmake /f makefile.vc
> Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
> Copyright (C) Microsoft Corporation.  All rights reserved.
>         cd src
>         nmake /f makefile.vc
> Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
> Copyright (C) Microsoft Corporation.  All rights reserved.
>         cl /nologo -I. -DPROJ_LIB=\"C:\PROJ\SHARE\"  -DHAVE_STRERROR=1 /nologo 
> /
> MD /O2 /Oi /Ot /GS- /fp:precise /GA /QxSSE4.1 /Qipo /c aasincos.c adjlon.c 
> bch2b
> ps.c bchgen.c pj_gauss.c biveval.c dmstor.c mk_cheby.c pj_auth.c pj_deriv.c 
> pj_e
> ll_set.c pj_ellps.c pj_errno.c pj_factors.c pj_fwd.c pj_init.c pj_inv.c 
> pj_list.
> c pj_malloc.c pj_mlfn.c pj_msfn.c pj_open_lib.c pj_param.c pj_phi2.c 
> pj_pr_list.
> c pj_qsfn.c pj_strerrno.c pj_tsfn.c pj_units.c pj_zpoly1.c rtodms.c 
> vector1.c pj
> _release.c geocent.c pj_transform.c pj_datum_set.c pj_datums.c 
> pj_apply_gridshif
> t.c nad_cvt.c nad_init.c nad_intr.c pj_utils.c pj_gridlist.c pj_gridinfo.c 
> proj_
> mdist.c pj_mutex.c pj_initcache.c pj_ctx.c pj_log.c pj_apply_vgridshift.c 
> PJ_bog
> gs.c PJ_collg.c PJ_crast.c PJ_denoy.c PJ_eck1.c PJ_eck2.c PJ_eck3.c 
> PJ_eck4.c PJ
> _eck5.c PJ_fahey.c PJ_fouc_s.c PJ_gins8.c PJ_gn_sinu.c PJ_goode.c PJ_igh.c 
> PJ_ha
> tano.c PJ_loxim.c PJ_mbt_fps.c PJ_mbtfpp.c PJ_mbtfpq.c PJ_moll.c PJ_nell.c 
> PJ_ne
> ll_h.c PJ_putp2.c PJ_putp3.c PJ_putp4p.c PJ_putp5.c PJ_putp6.c PJ_robin.c 
> PJ_sts
> .c PJ_urm5.c PJ_urmfps.c PJ_wag2.c PJ_wag3.c PJ_wink1.c PJ_wink2.c PJ_isea.c 
> PJ_
> aeqd.c PJ_gnom.c PJ_laea.c PJ_mod_ster.c PJ_nsper.c PJ_nzmg.c PJ_ortho.c 
> PJ_ster
> e.c PJ_sterea.c proj_rouss.c PJ_aea.c PJ_bipc.c PJ_bonne.c PJ_eqdc.c 
> PJ_imw_p.c
> PJ_lcc.c PJ_poly.c PJ_rpoly.c PJ_sconics.c PJ_lcca.c PJ_cass.c PJ_cc.c 
> PJ_cea.c
> PJ_eqc.c PJ_gall.c PJ_labrd.c PJ_lsat.c PJ_merc.c PJ_mill.c PJ_ocea.c 
> PJ_omerc.c
> PJ_somerc.c PJ_tcc.c PJ_tcea.c PJ_tmerc.c PJ_geos.c PJ_gstmerc.c 
> proj_etmerc.c
> PJ_airy.c PJ_aitoff.c PJ_august.c PJ_bacon.c PJ_chamb.c PJ_hammer.c 
> PJ_lagrng.c
> PJ_larr.c PJ_lask.c PJ_nocol.c PJ_ob_tran.c PJ_oea.c PJ_tpeqd.c PJ_vandg.c 
> PJ_va
> ndg2.c PJ_vandg4.c PJ_wag7.c pj_latlong.c PJ_krovak.c pj_geocent.c 
> PJ_healpix.c
> PJ_natearth.c
> cl : Command line warning D9002 : ignoring unknown option '/QxSSE4.1'
> cl : Command line warning D9002 : ignoring unknown option '/Qipo'
> aasincos.c
> adjlon.c
> bch2bps.c
> ...
> The 'cd src' and call to 'nmake' are in the wrapper makefile.vc.  Next is 
> some output from VS 2010.  After that is the rogue 'cl'.  The build goes on 
> to do all the things that I expect, including the 'lib' and 'xilink' calls.  
> But I need the source files to be built with the 'icl' command, not 'cl'.  
> What am I missing?  Where is this 'cl' being called from?
> Thanks for your time,
> Lance

More information about the Proj mailing list