aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2017-04-14 18:37:02 -0700
committerRobert Schumacher <roschuma@microsoft.com>2017-04-14 18:37:02 -0700
commit8f245259b908dff2749ae431866df39e0312f938 (patch)
treea4ae14ca632eb3526c3d4a81dc8f97875a68c369
parent20397fc845fac398a1aca2ee17ce5b932fc1a83b (diff)
parentfe054b98c6c2e9d972a61138c6fa183cf7a9193e (diff)
downloadvcpkg-8f245259b908dff2749ae431866df39e0312f938.tar.gz
vcpkg-8f245259b908dff2749ae431866df39e0312f938.zip
Merge pull request #931 from saedrna/master
Add openblas and clapack for blas and lapack backend, respectively
-rw-r--r--ports/clapack/CONTROL4
-rw-r--r--ports/clapack/lapack.def1453
-rw-r--r--ports/clapack/portfile.cmake52
-rw-r--r--ports/clapack/use-other-blas-and-install-include.patch103
-rw-r--r--ports/geographiclib/CONTROL2
-rw-r--r--ports/geographiclib/portfile.cmake33
-rw-r--r--ports/geographiclib/remove-tools-and-fix-version.patch43
-rw-r--r--ports/openblas/CONTROL3
-rw-r--r--ports/openblas/install-openblas.patch24
-rw-r--r--ports/openblas/openblas_common.h72
-rw-r--r--ports/openblas/portfile.cmake71
11 files changed, 1857 insertions, 3 deletions
diff --git a/ports/clapack/CONTROL b/ports/clapack/CONTROL
new file mode 100644
index 000000000..cb470e4cd
--- /dev/null
+++ b/ports/clapack/CONTROL
@@ -0,0 +1,4 @@
+Source: clapack
+Version: 3.2.1
+Description: CLAPACK (f2c'ed version of LAPACK)
+Build-Depends: openblas
diff --git a/ports/clapack/lapack.def b/ports/clapack/lapack.def
new file mode 100644
index 000000000..e2070d99b
--- /dev/null
+++ b/ports/clapack/lapack.def
@@ -0,0 +1,1453 @@
+EXPORTS
+sgbbrd_
+sgbcon_
+sgbequ_
+sgbrfs_
+sgbsv_
+sgbsvx_
+sgbtf2_
+sgbtrf_
+sgbtrs_
+sgebak_
+sgebal_
+sgebd2_
+sgebrd_
+sgecon_
+sgeequ_
+sgees_
+sgeesx_
+sgeev_
+sgeevx_
+sgegs_
+sgegv_
+sgehd2_
+sgehrd_
+sgelq2_
+sgelqf_
+sgels_
+sgelsd_
+sgelss_
+sgelsx_
+sgelsy_
+sgeql2_
+sgeqlf_
+sgeqp3_
+sgeqpf_
+sgeqr2_
+sgeqrf_
+sgerfs_
+sgerq2_
+sgerqf_
+sgesc2_
+sgesdd_
+sgesv_
+sgesvd_
+sgesvx_
+sgetc2_
+sgetf2_
+sgetrf_
+sgetri_
+sgetrs_
+sggbak_
+sggbal_
+sgges_
+sggesx_
+sggev_
+sggevx_
+sggglm_
+sgghrd_
+sgglse_
+sggqrf_
+sggrqf_
+sggsvd_
+sggsvp_
+sgtcon_
+sgtrfs_
+sgtsv_
+sgtsvx_
+sgttrf_
+sgttrs_
+sgtts2_
+shgeqz_
+shsein_
+shseqr_
+slabrd_
+slacon_
+slacn2_
+slaein_
+slaexc_
+slag2_
+slags2_
+slagtm_
+slagv2_
+slahqr_
+slahrd_
+slahr2_
+slaic1_
+slaln2_
+slals0_
+slalsa_
+slalsd_
+slangb_
+slange_
+slangt_
+slanhs_
+slansb_
+slansp_
+slansy_
+slantb_
+slantp_
+slantr_
+slanv2_
+slapll_
+slapmt_
+slaqgb_
+slaqge_
+slaqp2_
+slaqps_
+slaqsb_
+slaqsp_
+slaqsy_
+slaqr0_
+slaqr1_
+slaqr2_
+slaqr3_
+slaqr4_
+slaqr5_
+slaqtr_
+slar1v_
+slar2v_
+ilaslr_
+ilaslc_
+slarf_
+slarfb_
+slarfg_
+slarft_
+slarfx_
+slargv_
+slarrv_
+slartv_
+slarfp_
+slarz_
+slarzb_
+slarzt_
+slaswp_
+slasy2_
+slasyf_
+slatbs_
+slatdf_
+slatps_
+slatrd_
+slatrs_
+slatrz_
+slatzm_
+slauu2_
+slauum_
+sopgtr_
+sopmtr_
+sorg2l_
+sorg2r_
+sorgbr_
+sorghr_
+sorgl2_
+sorglq_
+sorgql_
+sorgqr_
+sorgr2_
+sorgrq_
+sorgtr_
+sorm2l_
+sorm2r_
+sormbr_
+sormhr_
+sorml2_
+sormlq_
+sormql_
+sormqr_
+sormr2_
+sormr3_
+sormrq_
+sormrz_
+sormtr_
+spbcon_
+spbequ_
+spbrfs_
+spbstf_
+spbsv_
+spbsvx_
+spbtf2_
+spbtrf_
+spbtrs_
+spocon_
+spoequ_
+sporfs_
+sposv_
+sposvx_
+spotf2_
+spotrf_
+spotri_
+spotrs_
+spstrf_
+spstf2_
+sppcon_
+sppequ_
+spprfs_
+sppsv_
+sppsvx_
+spptrf_
+spptri_
+spptrs_
+sptcon_
+spteqr_
+sptrfs_
+sptsv_
+sptsvx_
+spttrs_
+sptts2_
+srscl_
+ssbev_
+ssbevd_
+ssbevx_
+ssbgst_
+ssbgv_
+ssbgvd_
+ssbgvx_
+ssbtrd_
+sspcon_
+sspev_
+sspevd_
+sspevx_
+sspgst_
+sspgv_
+sspgvd_
+sspgvx_
+ssprfs_
+sspsv_
+sspsvx_
+ssptrd_
+ssptrf_
+ssptri_
+ssptrs_
+sstegr_
+sstein_
+sstev_
+sstevd_
+sstevr_
+sstevx_
+ssycon_
+ssyev_
+ssyevd_
+ssyevr_
+ssyevx_
+ssygs2_
+ssygst_
+ssygv_
+ssygvd_
+ssygvx_
+ssyrfs_
+ssysv_
+ssysvx_
+ssytd2_
+ssytf2_
+ssytrd_
+ssytrf_
+ssytri_
+ssytrs_
+stbcon_
+stbrfs_
+stbtrs_
+stgevc_
+stgex2_
+stgexc_
+stgsen_
+stgsja_
+stgsna_
+stgsy2_
+stgsyl_
+stpcon_
+stprfs_
+stptri_
+stptrs_
+strcon_
+strevc_
+strexc_
+strrfs_
+strsen_
+strsna_
+strsyl_
+strti2_
+strtri_
+strtrs_
+stzrqf_
+stzrzf_
+sstemr_
+slansf_
+spftrf_
+spftri_
+spftrs_
+ssfrk_
+stfsm_
+stftri_
+stfttp_
+stfttr_
+stpttf_
+stpttr_
+strttf_
+strttp_
+sgejsv_
+sgesvj_
+sgsvj0_
+sgsvj1_
+sgeequb_
+ssyequb_
+spoequb_
+sgbequb_
+dgbbrd_
+dgbcon_
+dgbequ_
+dgbrfs_
+dgbsv_
+dgbsvx_
+dgbtf2_
+dgbtrf_
+dgbtrs_
+dgebak_
+dgebal_
+dgebd2_
+dgebrd_
+dgecon_
+dgeequ_
+dgees_
+dgeesx_
+dgeev_
+dgeevx_
+dgegs_
+dgegv_
+dgehd2_
+dgehrd_
+dgelq2_
+dgelqf_
+dgels_
+dgelsd_
+dgelss_
+dgelsx_
+dgelsy_
+dgeql2_
+dgeqlf_
+dgeqp3_
+dgeqpf_
+dgeqr2_
+dgeqrf_
+dgerfs_
+dgerq2_
+dgerqf_
+dgesc2_
+dgesdd_
+dgesv_
+dgesvd_
+dgesvx_
+dgetc2_
+dgetf2_
+dgetrf_
+dgetri_
+dgetrs_
+dggbak_
+dggbal_
+dgges_
+dggesx_
+dggev_
+dggevx_
+dggglm_
+dgghrd_
+dgglse_
+dggqrf_
+dggrqf_
+dggsvd_
+dggsvp_
+dgtcon_
+dgtrfs_
+dgtsv_
+dgtsvx_
+dgttrf_
+dgttrs_
+dgtts2_
+dhgeqz_
+dhsein_
+dhseqr_
+dlabrd_
+dlacon_
+dlacn2_
+dlaein_
+dlaexc_
+dlag2_
+dlags2_
+dlagtm_
+dlagv2_
+dlahqr_
+dlahrd_
+dlahr2_
+dlaic1_
+dlaln2_
+dlals0_
+dlalsa_
+dlalsd_
+dlangb_
+dlange_
+dlangt_
+dlanhs_
+dlansb_
+dlansp_
+dlansy_
+dlantb_
+dlantp_
+dlantr_
+dlanv2_
+dlapll_
+dlapmt_
+dlaqgb_
+dlaqge_
+dlaqp2_
+dlaqps_
+dlaqsb_
+dlaqsp_
+dlaqsy_
+dlaqr0_
+dlaqr1_
+dlaqr2_
+dlaqr3_
+dlaqr4_
+dlaqr5_
+dlaqtr_
+dlar1v_
+dlar2v_
+iladlr_
+iladlc_
+dlarf_
+dlarfb_
+dlarfg_
+dlarft_
+dlarfx_
+dlargv_
+dlarrv_
+dlartv_
+dlarfp_
+dlarz_
+dlarzb_
+dlarzt_
+dlaswp_
+dlasy2_
+dlasyf_
+dlatbs_
+dlatdf_
+dlatps_
+dlatrd_
+dlatrs_
+dlatrz_
+dlatzm_
+dlauu2_
+dlauum_
+dopgtr_
+dopmtr_
+dorg2l_
+dorg2r_
+dorgbr_
+dorghr_
+dorgl2_
+dorglq_
+dorgql_
+dorgqr_
+dorgr2_
+dorgrq_
+dorgtr_
+dorm2l_
+dorm2r_
+dormbr_
+dormhr_
+dorml2_
+dormlq_
+dormql_
+dormqr_
+dormr2_
+dormr3_
+dormrq_
+dormrz_
+dormtr_
+dpbcon_
+dpbequ_
+dpbrfs_
+dpbstf_
+dpbsv_
+dpbsvx_
+dpbtf2_
+dpbtrf_
+dpbtrs_
+dpocon_
+dpoequ_
+dporfs_
+dposv_
+dposvx_
+dpotf2_
+dpotrf_
+dpotri_
+dpotrs_
+dpstrf_
+dpstf2_
+dppcon_
+dppequ_
+dpprfs_
+dppsv_
+dppsvx_
+dpptrf_
+dpptri_
+dpptrs_
+dptcon_
+dpteqr_
+dptrfs_
+dptsv_
+dptsvx_
+dpttrs_
+dptts2_
+drscl_
+dsbev_
+dsbevd_
+dsbevx_
+dsbgst_
+dsbgv_
+dsbgvd_
+dsbgvx_
+dsbtrd_
+dspcon_
+dspev_
+dspevd_
+dspevx_
+dspgst_
+dspgv_
+dspgvd_
+dspgvx_
+dsprfs_
+dspsv_
+dspsvx_
+dsptrd_
+dsptrf_
+dsptri_
+dsptrs_
+dstegr_
+dstein_
+dstev_
+dstevd_
+dstevr_
+dstevx_
+dsycon_
+dsyev_
+dsyevd_
+dsyevr_
+dsyevx_
+dsygs2_
+dsygst_
+dsygv_
+dsygvd_
+dsygvx_
+dsyrfs_
+dsysv_
+dsysvx_
+dsytd2_
+dsytf2_
+dsytrd_
+dsytrf_
+dsytri_
+dsytrs_
+dtbcon_
+dtbrfs_
+dtbtrs_
+dtgevc_
+dtgex2_
+dtgexc_
+dtgsen_
+dtgsja_
+dtgsna_
+dtgsy2_
+dtgsyl_
+dtpcon_
+dtprfs_
+dtptri_
+dtptrs_
+dtrcon_
+dtrevc_
+dtrexc_
+dtrrfs_
+dtrsen_
+dtrsna_
+dtrsyl_
+dtrti2_
+dtrtri_
+dtrtrs_
+dtzrqf_
+dtzrzf_
+dstemr_
+dsgesv_
+dsposv_
+dlag2s_
+slag2d_
+dlat2s_
+dlansf_
+dpftrf_
+dpftri_
+dpftrs_
+dsfrk_
+dtfsm_
+dtftri_
+dtfttp_
+dtfttr_
+dtpttf_
+dtpttr_
+dtrttf_
+dtrttp_
+dgejsv_
+dgesvj_
+dgsvj0_
+dgsvj1_
+dgeequb_
+dsyequb_
+dpoequb_
+dgbequb_
+cbdsqr_
+cgbbrd_
+cgbcon_
+cgbequ_
+cgbrfs_
+cgbsv_
+cgbsvx_
+cgbtf2_
+cgbtrf_
+cgbtrs_
+cgebak_
+cgebal_
+cgebd2_
+cgebrd_
+cgecon_
+cgeequ_
+cgees_
+cgeesx_
+cgeev_
+cgeevx_
+cgegs_
+cgegv_
+cgehd2_
+cgehrd_
+cgelq2_
+cgelqf_
+cgels_
+cgelsd_
+cgelss_
+cgelsx_
+cgelsy_
+cgeql2_
+cgeqlf_
+cgeqp3_
+cgeqpf_
+cgeqr2_
+cgeqrf_
+cgerfs_
+cgerq2_
+cgerqf_
+cgesc2_
+cgesdd_
+cgesv_
+cgesvd_
+cgesvx_
+cgetc2_
+cgetf2_
+cgetrf_
+cgetri_
+cgetrs_
+cggbak_
+cggbal_
+cgges_
+cggesx_
+cggev_
+cggevx_
+cggglm_
+cgghrd_
+cgglse_
+cggqrf_
+cggrqf_
+cggsvd_
+cggsvp_
+cgtcon_
+cgtrfs_
+cgtsv_
+cgtsvx_
+cgttrf_
+cgttrs_
+cgtts2_
+chbev_
+chbevd_
+chbevx_
+chbgst_
+chbgv_
+chbgvd_
+chbgvx_
+chbtrd_
+checon_
+cheev_
+cheevd_
+cheevr_
+cheevx_
+chegs2_
+chegst_
+chegv_
+chegvd_
+chegvx_
+cherfs_
+chesv_
+chesvx_
+chetd2_
+chetf2_
+chetrd_
+chetrf_
+chetri_
+chetrs_
+chgeqz_
+chpcon_
+chpev_
+chpevd_
+chpevx_
+chpgst_
+chpgv_
+chpgvd_
+chpgvx_
+chprfs_
+chpsv_
+chpsvx_
+chptrd_
+chptrf_
+chptri_
+chptrs_
+chsein_
+chseqr_
+clabrd_
+clacgv_
+clacon_
+clacn2_
+clacp2_
+clacpy_
+clacrm_
+clacrt_
+cladiv_
+claed0_
+claed7_
+claed8_
+claein_
+claesy_
+claev2_
+clags2_
+clagtm_
+clahef_
+clahqr_
+clahrd_
+clahr2_
+claic1_
+clals0_
+clalsa_
+clalsd_
+clangb_
+clange_
+clangt_
+clanhb_
+clanhe_
+clanhp_
+clanhs_
+clanht_
+clansb_
+clansp_
+clansy_
+clantb_
+clantp_
+clantr_
+clapll_
+clapmt_
+clarcm_
+claqgb_
+claqge_
+claqhb_
+claqhe_
+claqhp_
+claqp2_
+claqps_
+claqsb_
+claqr0_
+claqr1_
+claqr2_
+claqr3_
+claqr4_
+claqr5_
+claqsp_
+claqsy_
+clar1v_
+clar2v_
+ilaclr_
+ilaclc_
+clarf_
+clarfb_
+clarfg_
+clarft_
+clarfp_
+clarfx_
+clargv_
+clarnv_
+clarrv_
+clartg_
+clartv_
+clarz_
+clarzb_
+clarzt_
+clascl_
+claset_
+clasr_
+classq_
+claswp_
+clasyf_
+clatbs_
+clatdf_
+clatps_
+clatrd_
+clatrs_
+clatrz_
+clatzm_
+clauu2_
+clauum_
+cpbcon_
+cpbequ_
+cpbrfs_
+cpbstf_
+cpbsv_
+cpbsvx_
+cpbtf2_
+cpbtrf_
+cpbtrs_
+cpocon_
+cpoequ_
+cporfs_
+cposv_
+cposvx_
+cpotf2_
+cpotrf_
+cpotri_
+cpotrs_
+cpstrf_
+cpstf2_
+cppcon_
+cppequ_
+cpprfs_
+cppsv_
+cppsvx_
+cpptrf_
+cpptri_
+cpptrs_
+cptcon_
+cpteqr_
+cptrfs_
+cptsv_
+cptsvx_
+cpttrf_
+cpttrs_
+cptts2_
+crot_
+cspcon_
+cspmv_
+cspr_
+csprfs_
+cspsv_
+cspsvx_
+csptrf_
+csptri_
+csptrs_
+csrscl_
+cstedc_
+cstegr_
+cstein_
+csteqr_
+csycon_
+csymv_
+csyr_
+csyrfs_
+csysv_
+csysvx_
+csytf2_
+csytrf_
+csytri_
+csytrs_
+ctbcon_
+ctbrfs_
+ctbtrs_
+ctgevc_
+ctgex2_
+ctgexc_
+ctgsen_
+ctgsja_
+ctgsna_
+ctgsy2_
+ctgsyl_
+ctpcon_
+ctprfs_
+ctptri_
+ctptrs_
+ctrcon_
+ctrevc_
+ctrexc_
+ctrrfs_
+ctrsen_
+ctrsna_
+ctrsyl_
+ctrti2_
+ctrtri_
+ctrtrs_
+ctzrqf_
+ctzrzf_
+cung2l_
+cung2r_
+cungbr_
+cunghr_
+cungl2_
+cunglq_
+cungql_
+cungqr_
+cungr2_
+cungrq_
+cungtr_
+cunm2l_
+cunm2r_
+cunmbr_
+cunmhr_
+cunml2_
+cunmlq_
+cunmql_
+cunmqr_
+cunmr2_
+cunmr3_
+cunmrq_
+cunmrz_
+cunmtr_
+cupgtr_
+cupmtr_
+icmax1_
+scsum1_
+cstemr_
+chfrk_
+ctfttp_
+clanhf_
+cpftrf_
+cpftri_
+cpftrs_
+ctfsm_
+ctftri_
+ctfttr_
+ctpttf_
+ctpttr_
+ctrttf_
+ctrttp_
+cgeequb_
+cgbequb_
+csyequb_
+cpoequb_
+cheequb_
+zbdsqr_
+zgbbrd_
+zgbcon_
+zgbequ_
+zgbrfs_
+zgbsv_
+zgbsvx_
+zgbtf2_
+zgbtrf_
+zgbtrs_
+zgebak_
+zgebal_
+zgebd2_
+zgebrd_
+zgecon_
+zgeequ_
+zgees_
+zgeesx_
+zgeev_
+zgeevx_
+zgegs_
+zgegv_
+zgehd2_
+zgehrd_
+zgelq2_
+zgelqf_
+zgels_
+zgelsd_
+zgelss_
+zgelsx_
+zgelsy_
+zgeql2_
+zgeqlf_
+zgeqp3_
+zgeqpf_
+zgeqr2_
+zgeqrf_
+zgerfs_
+zgerq2_
+zgerqf_
+zgesc2_
+zgesdd_
+zgesv_
+zgesvd_
+zgesvx_
+zgetc2_
+zgetf2_
+zgetrf_
+zgetri_
+zgetrs_
+zggbak_
+zggbal_
+zgges_
+zggesx_
+zggev_
+zggevx_
+zggglm_
+zgghrd_
+zgglse_
+zggqrf_
+zggrqf_
+zggsvd_
+zggsvp_
+zgtcon_
+zgtrfs_
+zgtsv_
+zgtsvx_
+zgttrf_
+zgttrs_
+zgtts2_
+zhbev_
+zhbevd_
+zhbevx_
+zhbgst_
+zhbgv_
+zhbgvd_
+zhbgvx_
+zhbtrd_
+zhecon_
+zheev_
+zheevd_
+zheevr_
+zheevx_
+zhegs2_
+zhegst_
+zhegv_
+zhegvd_
+zhegvx_
+zherfs_
+zhesv_
+zhesvx_
+zhetd2_
+zhetf2_
+zhetrd_
+zhetrf_
+zhetri_
+zhetrs_
+zhgeqz_
+zhpcon_
+zhpev_
+zhpevd_
+zhpevx_
+zhpgst_
+zhpgv_
+zhpgvd_
+zhpgvx_
+zhprfs_
+zhpsv_
+zhpsvx_
+zhptrd_
+zhptrf_
+zhptri_
+zhptrs_
+zhsein_
+zhseqr_
+zlabrd_
+zlacgv_
+zlacon_
+zlacn2_
+zlacp2_
+zlacpy_
+zlacrm_
+zlacrt_
+zladiv_
+zlaed0_
+zlaed7_
+zlaed8_
+zlaein_
+zlaesy_
+zlaev2_
+zlags2_
+zlagtm_
+zlahef_
+zlahqr_
+zlahrd_
+zlahr2_
+zlaic1_
+zlals0_
+zlalsa_
+zlalsd_
+zlangb_
+zlange_
+zlangt_
+zlanhb_
+zlanhe_
+zlanhp_
+zlanhs_
+zlanht_
+zlansb_
+zlansp_
+zlansy_
+zlantb_
+zlantp_
+zlantr_
+zlapll_
+zlapmt_
+zlaqgb_
+zlaqge_
+zlaqhb_
+zlaqhe_
+zlaqhp_
+zlaqp2_
+zlaqps_
+zlaqsb_
+zlaqr0_
+zlaqr1_
+zlaqr2_
+zlaqr3_
+zlaqr4_
+zlaqr5_
+zlaqsp_
+zlaqsy_
+zlar1v_
+zlar2v_
+ilazlr_
+ilazlc_
+zlarcm_
+zlarf_
+zlarfb_
+zlarfg_
+zlarft_
+zlarfp_
+zlarfx_
+zlargv_
+zlarnv_
+zlarrv_
+zlartg_
+zlartv_
+zlarz_
+zlarzb_
+zlarzt_
+zlascl_
+zlaset_
+zlasr_
+zlassq_
+zlaswp_
+zlasyf_
+zlatbs_
+zlatdf_
+zlatps_
+zlatrd_
+zlatrs_
+zlatrz_
+zlatzm_
+zlauu2_
+zlauum_
+zpbcon_
+zpbequ_
+zpbrfs_
+zpbstf_
+zpbsv_
+zpbsvx_
+zpbtf2_
+zpbtrf_
+zpbtrs_
+zpocon_
+zpoequ_
+zporfs_
+zposv_
+zposvx_
+zpotf2_
+zpotrf_
+zpotri_
+zpotrs_
+zpstrf_
+zpstf2_
+zppcon_
+zppequ_
+zpprfs_
+zppsv_
+zppsvx_
+zpptrf_
+zpptri_
+zpptrs_
+zptcon_
+zpteqr_
+zptrfs_
+zptsv_
+zptsvx_
+zpttrf_
+zpttrs_
+zptts2_
+zrot_
+zspcon_
+zspmv_
+zspr_
+zsprfs_
+zspsv_
+zspsvx_
+zsptrf_
+zsptri_
+zsptrs_
+zdrscl_
+zstedc_
+zstegr_
+zstein_
+zsteqr_
+zsycon_
+zsymv_
+zsyr_
+zsyrfs_
+zsysv_
+zsysvx_
+zsytf2_
+zsytrf_
+zsytri_
+zsytrs_
+ztbcon_
+ztbrfs_
+ztbtrs_
+ztgevc_
+ztgex2_
+ztgexc_
+ztgsen_
+ztgsja_
+ztgsna_
+ztgsy2_
+ztgsyl_
+ztpcon_
+ztprfs_
+ztptri_
+ztptrs_
+ztrcon_
+ztrevc_
+ztrexc_
+ztrrfs_
+ztrsen_
+ztrsna_
+ztrsyl_
+ztrti2_
+ztrtri_
+ztrtrs_
+ztzrqf_
+ztzrzf_
+zung2l_
+zung2r_
+zungbr_
+zunghr_
+zungl2_
+zunglq_
+zungql_
+zungqr_
+zungr2_
+zungrq_
+zungtr_
+zunm2l_
+zunm2r_
+zunmbr_
+zunmhr_
+zunml2_
+zunmlq_
+zunmql_
+zunmqr_
+zunmr2_
+zunmr3_
+zunmrq_
+zunmrz_
+zunmtr_
+zupgtr_
+zupmtr_
+izmax1_
+dzsum1_
+zstemr_
+zcgesv_
+zcposv_
+zlag2c_
+clag2z_
+zlat2c_
+zhfrk_
+ztfttp_
+zlanhf_
+zpftrf_
+zpftri_
+zpftrs_
+ztfsm_
+ztftri_
+ztfttr_
+ztpttf_
+ztpttr_
+ztrttf_
+ztrttp_
+zgeequb_
+zgbequb_
+zsyequb_
+zpoequb_
+zheequb_
+sbdsdc_
+sbdsqr_
+sdisna_
+slabad_
+slacpy_
+sladiv_
+slae2_
+slaebz_
+slaed0_
+slaed1_
+slaed2_
+slaed3_
+slaed4_
+slaed5_
+slaed6_
+slaed7_
+slaed8_
+slaed9_
+slaeda_
+slaev2_
+slagtf_
+slagts_
+slamrg_
+slanst_
+slapy2_
+slapy3_
+slarnv_
+slarra_
+slarrb_
+slarrc_
+slarrd_
+slarre_
+slarrf_
+slarrj_
+slarrk_
+slarrr_
+slaneg_
+slartg_
+slaruv_
+slas2_
+slascl_
+slasd0_
+slasd1_
+slasd2_
+slasd3_
+slasd4_
+slasd5_
+slasd6_
+slasd7_
+slasd8_
+slasda_
+slasdq_
+slasdt_
+slaset_
+slasq1_
+slasq2_
+slasq3_
+slasq4_
+slasq5_
+slasq6_
+slasr_
+slasrt_
+slassq_
+slasv2_
+spttrf_
+sstebz_
+sstedc_
+ssteqr_
+ssterf_
+slaisnan_
+sisnan_
+slamch_
+dbdsdc_
+dbdsqr_
+ddisna_
+dlabad_
+dlacpy_
+dladiv_
+dlae2_
+dlaebz_
+dlaed0_
+dlaed1_
+dlaed2_
+dlaed3_
+dlaed4_
+dlaed5_
+dlaed6_
+dlaed7_
+dlaed8_
+dlaed9_
+dlaeda_
+dlaev2_
+dlagtf_
+dlagts_
+dlamrg_
+dlanst_
+dlapy2_
+dlapy3_
+dlarnv_
+dlarra_
+dlarrb_
+dlarrc_
+dlarrd_
+dlarre_
+dlarrf_
+dlarrj_
+dlarrk_
+dlarrr_
+dlaneg_
+dlartg_
+dlaruv_
+dlas2_
+dlascl_
+dlasd0_
+dlasd1_
+dlasd2_
+dlasd3_
+dlasd4_
+dlasd5_
+dlasd6_
+dlasd7_
+dlasd8_
+dlasda_
+dlasdq_
+dlasdt_
+dlaset_
+dlasq1_
+dlasq2_
+dlasq3_
+dlasq4_
+dlasq5_
+dlasq6_
+dlasr_
+dlasrt_
+dlassq_
+dlasv2_
+dpttrf_
+dstebz_
+dstedc_
+dsteqr_
+dsterf_
+dlaisnan_
+disnan_
+dlamch_
+ilaenv_
+ieeeck_
+lsamen_
+iparmq_
+ilaprec_
+ilatrans_
+ilauplo_
+iladiag_
+ilaver_
+lsame_
diff --git a/ports/clapack/portfile.cmake b/ports/clapack/portfile.cmake
new file mode 100644
index 000000000..72b1aa23b
--- /dev/null
+++ b/ports/clapack/portfile.cmake
@@ -0,0 +1,52 @@
+# Common Ambient Variables:
+# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT}
+# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET}
+# CURRENT_PORT DIR = ${VCPKG_ROOT_DIR}\ports\${PORT}
+# PORT = current port name (zlib, etc)
+# TARGET_TRIPLET = current triplet (x86-windows, x64-windows-static, etc)
+# VCPKG_CRT_LINKAGE = C runtime linkage type (static, dynamic)
+# VCPKG_LIBRARY_LINKAGE = target library linkage type (static, dynamic)
+# VCPKG_ROOT_DIR = <C:\path\to\current\vcpkg>
+# VCPKG_TARGET_ARCHITECTURE = target architecture (x64, x86, arm)
+#
+
+include(vcpkg_common_functions)
+
+if(NOT VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ message(FATAL_ERROR "openblas can only be built for x64 currently")
+endif()
+
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/clapack-3.2.1-CMAKE)
+vcpkg_download_distfile(ARCHIVE
+ URLS "http://www.netlib.org/clapack/clapack-3.2.1-CMAKE.tgz"
+ FILENAME "clapack-3.2.1"
+ SHA512 cf19c710291ddff3f6ead7d86bdfdeaebca21291d9df094bf0a8ef599546b007757fb2dbb19b56511bb53ef7456eac0c73973b9627bf4d02982c856124428b49
+)
+vcpkg_extract_source_archive(${ARCHIVE})
+
+# apply patch can not add file
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/lapack.def DESTINATION ${SOURCE_PATH}/SRC)
+
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES "${CMAKE_CURRENT_LIST_DIR}/use-other-blas-and-install-include.patch"
+)
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+
+ # Disable this option if project cannot be built with Ninja
+ # OPTIONS -DUSE_THIS_IN_ALL_BUILDS=1 -DUSE_THIS_TOO=2
+ # OPTIONS_RELEASE -DOPTIMIZE=1
+ # OPTIONS_DEBUG -DDEBUGGABLE=1
+)
+
+vcpkg_install_cmake()
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+
+# Handle copyright
+file(COPY ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/clapack)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/clapack/COPYING ${CURRENT_PACKAGES_DIR}/share/clapack/copyright)
+
+vcpkg_copy_pdbs()
diff --git a/ports/clapack/use-other-blas-and-install-include.patch b/ports/clapack/use-other-blas-and-install-include.patch
new file mode 100644
index 000000000..0f81e64fe
--- /dev/null
+++ b/ports/clapack/use-other-blas-and-install-include.patch
@@ -0,0 +1,103 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 320ccc6..8c53def 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -3,6 +3,9 @@ project(CLAPACK C)
+ enable_testing()
+ include(CTest)
+
++# BLAS_LIBRARIES
++find_package(BLAS REQUIRED)
++
+ if(WIN32 AND NOT CYGWIN)
+ set(SECOND_SRC ${CLAPACK_SOURCE_DIR}/INSTALL/winsecond.c)
+ set(DSECOND_SRC ${CLAPACK_SOURCE_DIR}/INSTALL/windsecnd.c)
+@@ -19,7 +22,8 @@ if(NOT USE_BLAS_WRAP)
+ endif()
+ include_directories(${CLAPACK_SOURCE_DIR}/INCLUDE)
+ add_subdirectory(F2CLIBS)
+-add_subdirectory(BLAS)
++
++# add_subdirectory(BLAS)
+ add_subdirectory(SRC)
+ add_subdirectory(TESTING)
+ set(CLAPACK_VERSION 3.2.1)
+@@ -27,8 +31,13 @@ set(CPACK_PACKAGE_VERSION_MAJOR 3)
+ set(CPACK_PACKAGE_VERSION_MINOR 2)
+ set(CPACK_PACKAGE_VERSION_PATCH 1)
+ include(CPack)
+-export(TARGETS f2c blas lapack FILE clapack-targets.cmake)
+-configure_file(${CLAPACK_SOURCE_DIR}/clapack-config-version.cmake.in
+- ${CLAPACK_BINARY_DIR}/clapack-config-version.cmake @ONLY)
+-configure_file(${CLAPACK_SOURCE_DIR}/clapack-config.cmake.in
+- ${CLAPACK_BINARY_DIR}/clapack-config.cmake @ONLY)
++# export(TARGETS f2c blas lapack FILE clapack-targets.cmake)
++# configure_file(${CLAPACK_SOURCE_DIR}/clapack-config-version.cmake.in
++# ${CLAPACK_BINARY_DIR}/clapack-config-version.cmake @ONLY)
++# configure_file(${CLAPACK_SOURCE_DIR}/clapack-config.cmake.in
++# ${CLAPACK_BINARY_DIR}/clapack-config.cmake @ONLY)
++
++install(FILES
++ ${CMAKE_CURRENT_LIST_DIR}/include/clapack.h
++ ${CMAKE_CURRENT_LIST_DIR}/include/f2c.h
++ DESTINATION include)
+\ No newline at end of file
+diff --git a/F2CLIBS/libf2c/CMakeLists.txt b/F2CLIBS/libf2c/CMakeLists.txt
+index 43d7b3f..2bdbd05 100644
+--- a/F2CLIBS/libf2c/CMakeLists.txt
++++ b/F2CLIBS/libf2c/CMakeLists.txt
+@@ -58,5 +58,5 @@ if(WIN32)
+ endif()
+ include_directories(${CLAPACK_SOURCE_DIR}/F2CLIBS/libf2c)
+ include_directories(${CLAPACK_BINARY_DIR}/F2CLIBS/libf2c)
+-add_library(f2c ${OFILES} ${CMAKE_CURRENT_BINARY_DIR}/arith.h)
++add_library(f2c STATIC ${OFILES} ${CMAKE_CURRENT_BINARY_DIR}/arith.h)
+ set_property(TARGET f2c PROPERTY PREFIX lib)
+diff --git a/INCLUDE/clapack.h b/INCLUDE/clapack.h
+index d22da98..5ef0a5b 100644
+--- a/INCLUDE/clapack.h
++++ b/INCLUDE/clapack.h
+@@ -3,6 +3,8 @@
+ #ifndef __CLAPACK_H
+ #define __CLAPACK_H
+
++#include "f2c.h"
++
+ /* Subroutine */ int caxpy_(integer *n, complex *ca, complex *cx, integer *
+ incx, complex *cy, integer *incy);
+
+diff --git a/SRC/CMakeLists.txt b/SRC/CMakeLists.txt
+index ac4cce3..0548c8d 100644
+--- a/SRC/CMakeLists.txt
++++ b/SRC/CMakeLists.txt
+@@ -375,6 +375,17 @@ endif()
+ if(BUILD_COMPLEX16)
+ set(ALLOBJ ${ZLASRC} ${ALLAUX} ${DZLAUX})
+ endif()
+-add_library(lapack ${ALLOBJ} ${ALLXOBJ})
+-target_link_libraries(lapack blas)
++if(BUILD_SHARED_LIBS AND MSVC)
++ add_library(lapack SHARED ${ALLOBJ} ${ALLXOBJ} ${CMAKE_CURRENT_LIST_DIR}/lapack.def)
++else()
++ add_library(lapack ${ALLOBJ} ${ALLXOBJ})
++endif(BUILD_SHARED_LIBS AND MSVC)
++
++
++target_link_libraries(lapack ${BLAS_LIBRARIES} f2c)
++
++install(TARGETS lapack
++ RUNTIME DESTINATION bin
++ LIBRARY DESTINATION lib
++ ARCHIVE DESTINATION lib)
+
+diff --git a/TESTING/MATGEN/CMakeLists.txt b/TESTING/MATGEN/CMakeLists.txt
+index b2cb47a..54fa7a8 100644
+--- a/TESTING/MATGEN/CMakeLists.txt
++++ b/TESTING/MATGEN/CMakeLists.txt
+@@ -65,5 +65,5 @@ endif()
+ if(BUILD_COMPLEX16)
+ set(ALLOBJ $(ZMATGEN) $(DZATGEN))
+ endif()
+-add_library(tmglib ${ALLOBJ} )
++add_library(tmglib STATIC ${ALLOBJ} )
+
diff --git a/ports/geographiclib/CONTROL b/ports/geographiclib/CONTROL
index a463ff055..836049a66 100644
--- a/ports/geographiclib/CONTROL
+++ b/ports/geographiclib/CONTROL
@@ -1,3 +1,3 @@
Source: geographiclib
-Version: 1.47-patch1-2
+Version: 1.47-patch1-3
Description: a small set of C++ classes for performing conversions between geographic, UTM, UPS, MGRS, geocentric, and local cartesian coordinates, for gravity (e.g., EGM2008), geoid height, and geomagnetic field (e.g., WMM2010) calculations, and for solving geodesic problems.
diff --git a/ports/geographiclib/portfile.cmake b/ports/geographiclib/portfile.cmake
index b636bb62e..96b633aec 100644
--- a/ports/geographiclib/portfile.cmake
+++ b/ports/geographiclib/portfile.cmake
@@ -18,6 +18,10 @@ vcpkg_download_distfile(ARCHIVE
SHA512 d8fdfd7ae093057ec1a4ab922457fe71a3fb9975df5b673c276d62a0e9c4f212dc63652830b9d89e3890bc96aafd335992943cf6a1bce8260acf932d1eb7abfd
)
vcpkg_extract_source_archive(${ARCHIVE})
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES "${CMAKE_CURRENT_LIST_DIR}/remove-tools-and-fix-version.patch"
+)
if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
vcpkg_configure_cmake(
@@ -40,14 +44,39 @@ else()
endif()
vcpkg_install_cmake()
-file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/cmake)
+file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/share)
+file(GLOB GEOGRAPHICLIB_CMAKE_FILES ${CURRENT_PACKAGES_DIR}/cmake/*.cmake ${CURRENT_PACKAGES_DIR}/debug/cmake/*.cmake)
+file(COPY ${GEOGRAPHICLIB_CMAKE_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/share/geographiclib)
+
+file(READ ${CURRENT_PACKAGES_DIR}/debug/cmake/geographiclib-targets.cmake GEOGRAPHICLIB_MODULE)
+string(REPLACE "\${_IMPORT_PREFIX}/include" "\${_IMPORT_PREFIX}/../include" GEOGRAPHICLIB_MODULE "${GEOGRAPHICLIB_MODULE}")
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/geographiclib/geographiclib-targets.cmake "${GEOGRAPHICLIB_MODULE}")
+
+file(READ ${CURRENT_PACKAGES_DIR}/debug/cmake/geographiclib-targets-debug.cmake GEOGRAPHICLIB_DEBUG_MODULE)
+string(REPLACE "\${_IMPORT_PREFIX}" "\${_IMPORT_PREFIX}/../debug" GEOGRAPHICLIB_DEBUG_MODULE "${GEOGRAPHICLIB_DEBUG_MODULE}")
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/geographiclib/geographiclib-targets-debug.cmake "${GEOGRAPHICLIB_DEBUG_MODULE}")
+
+file(READ ${CURRENT_PACKAGES_DIR}/debug/cmake/geographiclib-namespace-targets-debug.cmake GEOGRAPHICLIB_DEBUG_MODULE)
+string(REPLACE "\${_IMPORT_PREFIX}" "\${_IMPORT_PREFIX}/../debug" GEOGRAPHICLIB_DEBUG_MODULE "${GEOGRAPHICLIB_DEBUG_MODULE}")
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/geographiclib/geographiclib-namespace-targets-debug.cmake "${GEOGRAPHICLIB_DEBUG_MODULE}")
+
+
+file(READ ${CURRENT_PACKAGES_DIR}/cmake/geographiclib-targets-release.cmake GEOGRAPHICLIB_RELEASE_MODULE)
+string(REPLACE "\${_IMPORT_PREFIX}" "\${_IMPORT_PREFIX}/.." GEOGRAPHICLIB_RELEASE_MODULE "${GEOGRAPHICLIB_RELEASE_MODULE}")
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/geographiclib/geographiclib-targets-release.cmake "${GEOGRAPHICLIB_RELEASE_MODULE}")
+
+file(READ ${CURRENT_PACKAGES_DIR}/cmake/geographiclib-namespace-targets-release.cmake GEOGRAPHICLIB_RELEASE_MODULE)
+string(REPLACE "\${_IMPORT_PREFIX}" "\${_IMPORT_PREFIX}/.." GEOGRAPHICLIB_RELEASE_MODULE "${GEOGRAPHICLIB_RELEASE_MODULE}")
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/geographiclib/geographiclib-namespace-targets-release.cmake "${GEOGRAPHICLIB_RELEASE_MODULE}")
+
file(COPY ${CURRENT_BUILDTREES_DIR}/src/GeographicLib-1.47/LICENSE.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/geographiclib)
file(RENAME ${CURRENT_PACKAGES_DIR}/share/geographiclib/LICENSE.txt ${CURRENT_PACKAGES_DIR}/share/geographiclib/copyright)
file(GLOB EXE_FILES "${CURRENT_PACKAGES_DIR}/bin/*.exe" "${CURRENT_PACKAGES_DIR}/debug/bin/*.exe")
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/cmake)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/cmake)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
-file(REMOVE_RECURSE ${EXE_FILES})
+# file(REMOVE_RECURSE ${EXE_FILES})
diff --git a/ports/geographiclib/remove-tools-and-fix-version.patch b/ports/geographiclib/remove-tools-and-fix-version.patch
new file mode 100644
index 000000000..d7c7598e0
--- /dev/null
+++ b/ports/geographiclib/remove-tools-and-fix-version.patch
@@ -0,0 +1,43 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e79923b..3448362 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -437,13 +437,13 @@ set_property (GLOBAL PROPERTY USE_FOLDERS ON)
+ # The list of subdirectories to process
+ add_subdirectory (src)
+ add_subdirectory (include/GeographicLib)
+-add_subdirectory (tools)
+-add_subdirectory (man)
+-add_subdirectory (doc)
+-add_subdirectory (js)
+-add_subdirectory (matlab)
+-add_subdirectory (python/geographiclib)
+-add_subdirectory (examples)
++# add_subdirectory (tools)
++# add_subdirectory (man)
++# add_subdirectory (doc)
++# add_subdirectory (js)
++# add_subdirectory (matlab)
++# add_subdirectory (python/geographiclib)
++# add_subdirectory (examples)
+ if (MSVC AND BUILD_NETGEOGRAPHICLIB)
+ if (GEOGRAPHICLIB_PRECISION EQUAL 2)
+ set (NETGEOGRAPHICLIB_LIBRARIES NETGeographicLib)
+diff --git a/cmake/project-config-version.cmake.in b/cmake/project-config-version.cmake.in
+index 3b3b9e8..a5ea344 100644
+--- a/cmake/project-config-version.cmake.in
++++ b/cmake/project-config-version.cmake.in
+@@ -18,10 +18,10 @@ elseif (NOT (APPLE OR (NOT DEFINED CMAKE_SIZEOF_VOID_P) OR
+ # since a multi-architecture library is built for that platform).
+ set (REASON "sizeof(*void) = @CMAKE_SIZEOF_VOID_P@")
+ set (PACKAGE_VERSION_UNSUITABLE TRUE)
+-elseif (MSVC AND NOT MSVC_VERSION STREQUAL "@MSVC_VERSION@")
++# elseif (MSVC AND NOT MSVC_VERSION STREQUAL "@MSVC_VERSION@")
+ # Reject if there's a mismatch in MSVC compiler versions
+- set (REASON "_MSC_VER = @MSVC_VERSION@")
+- set (PACKAGE_VERSION_UNSUITABLE TRUE)
++# set (REASON "_MSC_VER = @MSVC_VERSION@")
++# set (PACKAGE_VERSION_UNSUITABLE TRUE)
+ elseif (NOT CMAKE_CROSSCOMPILING STREQUAL "@CMAKE_CROSSCOMPILING@")
+ # Reject if there's a mismatch in ${CMAKE_CROSSCOMPILING}
+ set (REASON "cross-compiling = @CMAKE_CROSSCOMPILING@")
diff --git a/ports/openblas/CONTROL b/ports/openblas/CONTROL
new file mode 100644
index 000000000..d6ac6297d
--- /dev/null
+++ b/ports/openblas/CONTROL
@@ -0,0 +1,3 @@
+Source: openblas
+Version: v0.2.19
+Description: OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
diff --git a/ports/openblas/install-openblas.patch b/ports/openblas/install-openblas.patch
new file mode 100644
index 000000000..7beb11af9
--- /dev/null
+++ b/ports/openblas/install-openblas.patch
@@ -0,0 +1,24 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index ff42643..1a013ee 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -13,7 +13,7 @@ enable_language(ASM)
+ enable_language(C)
+
+ if(MSVC)
+-set(OpenBLAS_LIBNAME libopenblas)
++set(OpenBLAS_LIBNAME openblas)
+ else()
+ set(OpenBLAS_LIBNAME openblas)
+ endif()
+@@ -174,6 +174,10 @@ set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES
+ SOVERSION ${OpenBLAS_MAJOR_VERSION}
+ )
+
++install(TARGETS ${OpenBLAS_LIBNAME}
++ RUNTIME DESTINATION bin
++ LIBRARY DESTINATION lib
++ ARCHIVE DESTINATION lib)
+
+ # TODO: Why is the config saved here? Is this necessary with CMake?
+ #Save the config files for installation
diff --git a/ports/openblas/openblas_common.h b/ports/openblas/openblas_common.h
new file mode 100644
index 000000000..10b25d4c7
--- /dev/null
+++ b/ports/openblas/openblas_common.h
@@ -0,0 +1,72 @@
+#pragma once
+#include "openblas_config.h"
+
+#if defined(OPENBLAS_OS_WINNT) || defined(OPENBLAS_OS_CYGWIN_NT) || defined(OPENBLAS_OS_INTERIX)
+#define OPENBLAS_WINDOWS_ABI
+#define OPENBLAS_OS_WINDOWS
+
+#ifdef DOUBLE
+#define DOUBLE_DEFINED DOUBLE
+#undef DOUBLE
+#endif
+#endif
+
+#ifdef NEEDBUNDERSCORE
+#define BLASFUNC(FUNC) FUNC##_
+#else
+#define BLASFUNC(FUNC) FUNC
+#endif
+
+
+#ifdef OPENBLAS_QUAD_PRECISION
+typedef struct {
+ unsigned long x[2];
+} xdouble;
+#elif defined OPENBLAS_EXPRECISION
+#define xdouble long double
+#else
+#define xdouble double
+#endif
+
+#if defined(OS_WINNT) && defined(__64BIT__)
+typedef long long BLASLONG;
+typedef unsigned long long BLASULONG;
+#else
+typedef long BLASLONG;
+typedef unsigned long BLASULONG;
+#endif
+
+#ifdef OPENBLAS_USE64BITINT
+typedef BLASLONG blasint;
+#else
+typedef int blasint;
+#endif
+
+#if defined(XDOUBLE) || defined(DOUBLE)
+#define FLOATRET FLOAT
+#else
+#ifdef NEED_F2CCONV
+#define FLOATRET double
+#else
+#define FLOATRET float
+#endif
+#endif
+
+
+/* Inclusion of a standard header file is needed for definition of __STDC_*
+ predefined macros with some compilers (e.g. GCC 4.7 on Linux). This occurs
+ as a side effect of including either <features.h> or <stdc-predef.h>. */
+#include <stdio.h>
+#define OPENBLAS_COMPLEX_STRUCT
+typedef struct { float real, imag; } openblas_complex_float;
+typedef struct { double real, imag; } openblas_complex_double;
+typedef struct { xdouble real, imag; } openblas_complex_xdouble;
+#define openblas_make_complex_float(real, imag) {(real), (imag)}
+#define openblas_make_complex_double(real, imag) {(real), (imag)}
+#define openblas_make_complex_xdouble(real, imag) {(real), (imag)}
+#define openblas_complex_float_real(z) ((z).real)
+#define openblas_complex_float_imag(z) ((z).imag)
+#define openblas_complex_double_real(z) ((z).real)
+#define openblas_complex_double_imag(z) ((z).imag)
+#define openblas_complex_xdouble_real(z) ((z).real)
+#define openblas_complex_xdouble_imag(z) ((z).imag)
diff --git a/ports/openblas/portfile.cmake b/ports/openblas/portfile.cmake
new file mode 100644
index 000000000..63f464405
--- /dev/null
+++ b/ports/openblas/portfile.cmake
@@ -0,0 +1,71 @@
+# Common Ambient Variables:
+# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT}
+# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET}
+# CURRENT_PORT DIR = ${VCPKG_ROOT_DIR}\ports\${PORT}
+# PORT = current port name (zlib, etc)
+# TARGET_TRIPLET = current triplet (x86-windows, x64-windows-static, etc)
+# VCPKG_CRT_LINKAGE = C runtime linkage type (static, dynamic)
+# VCPKG_LIBRARY_LINKAGE = target library linkage type (static, dynamic)
+# VCPKG_ROOT_DIR = <C:\path\to\current\vcpkg>
+# VCPKG_TARGET_ARCHITECTURE = target architecture (x64, x86, arm)
+#
+
+include(vcpkg_common_functions)
+
+
+if(NOT VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ message(FATAL_ERROR "openblas can only be built for x64 currently")
+endif()
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ message(WARNING "openblas only support dynamic link for msvc")
+ set(VCPKG_LIBRARY_LINKAGE "dynamic")
+endif()
+
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/openblas-0.2.19)
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://codeload.github.com/xianyi/OpenBLAS/zip/v0.2.19"
+ FILENAME "openblas-v0.2.19.zip"
+ SHA512 d95dcd1ca5b3bdc5355969d10c22486f7e32f7dfc3a418b5d0a979d030e9f2ed242d2d78267a5896aa83d27b6041e13ee4c6694f9a589765535011eb22dad9e2
+)
+vcpkg_extract_source_archive(${ARCHIVE})
+
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES "${CMAKE_CURRENT_LIST_DIR}/install-openblas.patch"
+)
+
+# openblas require perl to generate .def for exports
+vcpkg_find_acquire_program(PERL)
+get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY)
+set(ENV{PATH} "${PERL_EXE_PATH};$ENV{PATH}")
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ OPTIONS -DTARGET=NEHALEM -DBUILD_WITHOUT_LAPACK=ON
+ # PREFER_NINJA # Disable this option if project cannot be built with Ninja
+ # OPTIONS -DUSE_THIS_IN_ALL_BUILDS=1 -DUSE_THIS_TOO=2
+ # OPTIONS_RELEASE -DOPTIMIZE=1
+ # OPTIONS_DEBUG -DDEBUGGABLE=1
+)
+
+
+vcpkg_install_cmake()
+
+# openblas do not make the config file , so I manually made this
+# but I think in most case, libraries will not include these files, they define their own used function prototypes
+# this is only to quite vcpkg
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/openblas_common.h DESTINATION ${CURRENT_PACKAGES_DIR}/include)
+
+file(COPY ${SOURCE_PATH}/config.h DESTINATION ${CURRENT_PACKAGES_DIR}/include)
+file(RENAME ${CURRENT_PACKAGES_DIR}/include/config.h ${CURRENT_PACKAGES_DIR}/include/openblas_config.h)
+
+file(READ ${SOURCE_PATH}/cblas.h CBLAS_H)
+string(REPLACE "#include \"common.h\"" "#include \"openblas_common.h\"" CBLAS_H ${CBLAS_H})
+file(WRITE ${CURRENT_PACKAGES_DIR}/include/cblas.h)
+
+# openblas is BSD
+file(COPY ${CURRENT_BUILDTREES_DIR}/src/OpenBLAS-0.2.19/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/openblas)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/openblas/LICENSE ${CURRENT_PACKAGES_DIR}/share/openblas/copyright)
+
+vcpkg_copy_pdbs()