Dear Sirs, I have tried to update my 'dynamichazard' package on CRAN but I have had some issues with the '-Wlto-type-mismatch' checks. In particular, I have tried to follow "Writing R Extensions" section "Fortran character strings" and defined a C++ header file (https://github.com/boennecd/dynamichazard/blob/460fe74cadad5c029c4f0ffb50074139135c2166/src/Rconfig-wrap.h) with the following content
> #ifndef RCONFIG_WRAP_H > #define RCONFIG_WRAP_H > #define USE_FC_LEN_T > #include <Rconfig.h> > > #ifndef FCLEN > #define FCLEN > #endif > #ifndef FCONE > #define FCONE > #endif > > #endif which I include before including 'R_ext/BLAS.h' and 'R_ext/Lapack.h' files. I then make the following C declaration of the Fortran subroutine that causes the issue (https://github.com/boennecd/dynamichazard/blob/460fe74cadad5c029c4f0ffb50074139135c2166/src/BLAS_LAPACK/R_BLAS_LAPACK.cpp#L2-L29) > extern "C" > { > void F77_NAME(dchur)( > const char*, // UPLO > const char*, // TRANS > int*, // N > int*, // M > double*, // R > int*, // LDR > double*, // X > double*, // Z > int*, // LDZ > double*, // Y > double*, // RHO > double*, // C > double*, // S > int* // INFO, > FCLEN FCLEN > ); > } Lastly, I use the 'FCONE' macro when calling the function. The Fortran subroutine (a LINPACK subroutine) is defined in this file: https://github.com/boennecd/dynamichazard/blob/460fe74cadad5c029c4f0ffb50074139135c2166/src/BLAS_LAPACK/dchur.f#L7 I gather the above is as done in the BLAS and LAPACK header in R. Yet, I still got a mail in the CRAN submission stating that > We see > > * checking whether package ‘dynamichazard’ can be installed ... > [207s/211s] WARNING > Found the following significant warnings: > BLAS_LAPACK/R_BLAS_LAPACK.cpp:12:10: warning: type of ‘dchur_’ does > not match original declaration [-Wlto-type-mismatch] > > and there's also > > BLAS_LAPACK/R_BLAS_LAPACK.cpp:12:10: warning: type of ‘dchur_’ does not > match original declaration [-Wlto-type-mismatch] > 12 | void F77_NAME(dchur)( > | ^ > BLAS_LAPACK/dchur.f:7:1: note: type mismatch in parameter 15 > 7 | SUBROUTINE DCHUR(UPLO,TRANS,N,M,R,LDR,X,Z,LDZ,Y,RHO,C,S,INFO) > | ^ > BLAS_LAPACK/dchur.f:7:1: note: type ‘long int’ should match type ‘void’ > BLAS_LAPACK/dchur.f:7:1: note: ‘dchur’ was previously declared here I am not sure how to handle the issue. I am sorry if I am doing something which is obviously wrong. I also got some messages about the declarations in RcppArmadillo but I gather these are upstream issues which I cannot do anything about > /home/Hornik/tmp/R-d-gcc-LTO/include/R_ext/Lapack.h:1584:1: warning: > ‘dtrtri_’ violates the C++ One Definition Rule [-Wodr] > 1584 | F77_NAME(dtrtri)(const char* uplo, const char* diag, > | ^ > /home/Hornik/lib/R/Library/3.7/x86_64-linux-gnu/RcppArmadillo/include/armadillo_bits/def_lapack.hpp:421:8: > note: type mismatch in parameter 7 > 421 | void arma_fortran(arma_dtrtri)(const char* uplo, const char* diag, > const blas_int* n, double* a, const blas_int* lda, blas_int* info, blas_len > uplo_len, blas_len diag_len); > | ^ > /home/Hornik/lib/R/Library/3.7/x86_64-linux-gnu/RcppArmadillo/include/armadillo_bits/def_lapack.hpp:421:8: > note: type ‘blas_len’ should match type ‘void’ > /home/Hornik/lib/R/Library/3.7/x86_64-linux-gnu/RcppArmadillo/include/armadillo_bits/def_lapack.hpp:421:8: > note: ‘dtrtri_’ was previously declared here > /home/Hornik/tmp/R-d-gcc-LTO/include/R_ext/BLAS.h:242:1: warning: ‘dsyrk_’ > violates the C++ One Definition Rule [-Wodr] > 242 | F77_NAME(dsyrk)(const char *uplo, const char *trans, > | ^ > /home/Hornik/lib/R/Library/3.7/x86_64-linux-gnu/RcppArmadillo/include/armadillo_bits/def_blas.hpp:110:8: > note: type mismatch in parameter 11 > 110 | void arma_fortran(arma_dsyrk)(const char* uplo, const char* transA, > const blas_int* n, const blas_int* k, const double* alpha, const double* > A, > const blas_int* ldA, const double* beta, double* C, const blas_int* ldC, > blas_len uplo_len, blas_len transA_len); > | ^ > /home/Hornik/lib/R/Library/3.7/x86_64-linux-gnu/RcppArmadillo/include/armadillo_bits/def_blas.hpp:110:8: > note: type ‘blas_len’ should match type ‘void’ > /home/Hornik/lib/R/Library/3.7/x86_64-linux-gnu/RcppArmadillo/include/armadillo_bits/def_blas.hpp:110:8: > note: ‘dsyrk_’ was previously declared here > /home/Hornik/tmp/R-d-gcc-LTO/include/R_ext/Lapack.h:825:1: warning: ‘dpotrf_’ > violates the C++ One Definition Rule [-Wodr] > 825 | F77_NAME(dpotrf)(const char* uplo, const int* n, > | ^ > /home/Hornik/lib/R/Library/3.7/x86_64-linux-gnu/RcppArmadillo/include/armadillo_bits/def_lapack.hpp:467:8: > note: type mismatch in parameter 6 > 467 | void arma_fortran(arma_dpotrf)(const char* uplo, const blas_int* n, > double* a, const blas_int* lda, blas_int* info, blas_len uplo_len); > | ^ > /home/Hornik/lib/R/Library/3.7/x86_64-linux-gnu/RcppArmadillo/include/armadillo_bits/def_lapack.hpp:467:8: > note: type ‘blas_len’ should match type ‘void’ > /home/Hornik/lib/R/Library/3.7/x86_64-linux-gnu/RcppArmadillo/include/armadillo_bits/def_lapack.hpp:467:8: > note: ‘dpotrf_’ was previously declared here > installing to > /home/Hornik/tmp/CRAN/dynamichazard.Rcheck/00LOCK-dynamichazard/00new/dynamichazard/libs Sincerely Yours, Benjamin Christoffersen ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel