From 1a9bfc925b5c3865c7651fb0bd658306309df8a4 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Thu, 22 Feb 2018 23:36:29 +0000 Subject: [PATCH] Changes in preparation for gfortran v8 The v8 compiler has an ABI change where the charlen hidden arguments change from int to size_t type. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@8528 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- astro.cpp | 2 +- decodedtext.cpp | 2 +- mainwindow.cpp | 40 +++++++++++++++++++++------------------- plotter.cpp | 5 +++++ plotter.h | 5 ----- wsjtx_config.h.in | 15 +++++++++++++++ 6 files changed, 43 insertions(+), 26 deletions(-) diff --git a/astro.cpp b/astro.cpp index e1778412b..9829b7159 100644 --- a/astro.cpp +++ b/astro.cpp @@ -29,7 +29,7 @@ extern "C" { double* ramoon, double* decmoon, double* dgrd, double* poloffset, double* xnr, double* techo, double* width1, double* width2, bool* bTx, const char* AzElFileName, const char* jpleph, - int len1, int len2, int len3, int len4); + fortran_charlen_t, fortran_charlen_t, fortran_charlen_t, fortran_charlen_t); } Astro::Astro(QSettings * settings, Configuration const * configuration, QWidget * parent) diff --git a/decodedtext.cpp b/decodedtext.cpp index 54c56e5f9..3523266f3 100644 --- a/decodedtext.cpp +++ b/decodedtext.cpp @@ -5,7 +5,7 @@ #include extern "C" { - bool stdmsg_(char const * msg, bool contest_mode, char const * mygrid, int len_msg, int len_grid); + bool stdmsg_(char const * msg, bool contest_mode, char const * mygrid, fortran_charlen_t, fortran_charlen_t); } namespace diff --git a/mainwindow.cpp b/mainwindow.cpp index d9d761602..0b5ecb74c 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -73,45 +73,47 @@ extern "C" { bool* bmsk144, bool* bcontest, bool* btrain, double const pcoeffs[], int* ingain, char mycall[], char hiscall[], bool* bshmsg, bool* bswl, char ddir[], float green[], float s[], int* jh, float *pxmax, float *rmsNoGain, char line[], char mygrid[], - int len1, int len2, int len3, int len4, int len5); + fortran_charlen_t, fortran_charlen_t, fortran_charlen_t, fortran_charlen_t, + fortran_charlen_t); // float s[], int* jh, char line[], char mygrid[], void genft8_(char* msg, char* MyGrid, bool* bcontest, int* i3bit, char* msgsent, - char ft8msgbits[], int itone[], int len1, int len2, int len3); + char ft8msgbits[], int itone[], fortran_charlen_t, fortran_charlen_t, + fortran_charlen_t); void gen4_(char* msg, int* ichk, char* msgsent, int itone[], - int* itext, int len1, int len2); + int* itext, fortran_charlen_t, fortran_charlen_t); void gen9_(char* msg, int* ichk, char* msgsent, int itone[], - int* itext, int len1, int len2); + int* itext, fortran_charlen_t, fortran_charlen_t); void genmsk144_(char* msg, char* MyGrid, int* ichk, bool* bcontest, - char* msgsent, int itone[], int* itext, int len1, - int len2, int len3); + char* msgsent, int itone[], int* itext, fortran_charlen_t, + fortran_charlen_t, fortran_charlen_t); void gen65_(char* msg, int* ichk, char* msgsent, int itone[], - int* itext, int len1, int len2); + int* itext, fortran_charlen_t, fortran_charlen_t); void genqra64_(char* msg, int* ichk, char* msgsent, int itone[], - int* itext, int len1, int len2); + int* itext, fortran_charlen_t, fortran_charlen_t); - void genwspr_(char* msg, char* msgsent, int itone[], int len1, int len2); + void genwspr_(char* msg, char* msgsent, int itone[], fortran_charlen_t, fortran_charlen_t); - void genwspr_fsk8_(char* msg, char* msgsent, int itone[], int len1, int len2); + void genwspr_fsk8_(char* msg, char* msgsent, int itone[], fortran_charlen_t, fortran_charlen_t); - void geniscat_(char* msg, char* msgsent, int itone[], int len1, int len2); + void geniscat_(char* msg, char* msgsent, int itone[], fortran_charlen_t, fortran_charlen_t); void azdist_(char* MyGrid, char* HisGrid, double* utch, int* nAz, int* nEl, int* nDmiles, int* nDkm, int* nHotAz, int* nHotABetter, - int len1, int len2); + fortran_charlen_t, fortran_charlen_t); - void morse_(char* msg, int* icw, int* ncw, int len); + void morse_(char* msg, int* icw, int* ncw, fortran_charlen_t); int ptt_(int nport, int ntx, int* iptt, int* nopen); void wspr_downsample_(short int d2[], int* k); - int savec2_(char* fname, int* TR_seconds, double* dial_freq, int len1); + int savec2_(char* fname, int* TR_seconds, double* dial_freq, fortran_charlen_t); void avecho_( short id2[], int* dop, int* nfrit, int* nqual, float* f1, float* level, float* sigdb, float* snr, float* dfreq, @@ -119,21 +121,21 @@ extern "C" { void fast_decode_(short id2[], int narg[], int* ntrperiod, char msg[], char mycall[], char hiscall[], - int len1, int len2, int len3); + fortran_charlen_t, fortran_charlen_t, fortran_charlen_t); void degrade_snr_(short d2[], int* n, float* db, float* bandwidth); void wav12_(short d2[], short d1[], int* nbytes, short* nbitsam2); void refspectrum_(short int d2[], bool* bclearrefspec, - bool* brefspec, bool* buseref, const char* c_fname, int len); + bool* brefspec, bool* buseref, const char* c_fname, fortran_charlen_t); void freqcal_(short d2[], int* k, int* nkhz,int* noffset, int* ntol, - char line[], int len); + char line[], fortran_charlen_t); - void fix_contest_msg_(char* MyGrid, char* msg, int len1, int len2); + void fix_contest_msg_(char* MyGrid, char* msg, fortran_charlen_t, fortran_charlen_t); void calibrate_(char data_dir[], int* iz, double* a, double* b, double* rms, - double* sigmaa, double* sigmab, int* irc, int len1); + double* sigmaa, double* sigmab, int* irc, fortran_charlen_t); void foxgen_(); diff --git a/plotter.cpp b/plotter.cpp index 737fb4ff6..cf3166127 100644 --- a/plotter.cpp +++ b/plotter.cpp @@ -8,6 +8,11 @@ #define MAX_SCREENSIZE 2048 +extern "C" { + void flat4_(float swide[], int* iz, int* nflatten); + void plotsave_(float swide[], int* m_w , int* m_h1, int* irow); +} + CPlotter::CPlotter(QWidget *parent) : //CPlotter Constructor QFrame {parent}, m_set_freq_action {new QAction {tr ("&Set Rx && Tx Offset"), this}}, diff --git a/plotter.h b/plotter.h index 722c538de..20d1739ac 100644 --- a/plotter.h +++ b/plotter.h @@ -179,9 +179,4 @@ private: extern QVector g_ColorTbl; -extern "C" { - void flat4_(float swide[], int* iz, int* nflatten); - void plotsave_(float swide[], int* m_w , int* m_h1, int* irow); -} - #endif // PLOTTER_H diff --git a/wsjtx_config.h.in b/wsjtx_config.h.in index c3e80564c..80ac160b9 100644 --- a/wsjtx_config.h.in +++ b/wsjtx_config.h.in @@ -1,6 +1,10 @@ #ifndef WSJTX_CONFIG_H__ #define WSJTX_CONFIG_H__ +#ifdef __cplusplus +extern "C" { +#endif + #define WSJTX_VERSION_MAJOR @WSJTX_VERSION_MAJOR@ #define WSJTX_VERSION_MINOR @WSJTX_VERSION_MINOR@ #define WSJTX_VERSION_PATCH @WSJTX_VERSION_PATCH@ @@ -36,6 +40,17 @@ # ifndef _UNICODE # define _UNICODE # endif +#endif + + /* typedef for consistent gfortran ABI for charlen type hidden arguments */ +#if __GNUC__ > 7 + typedef size_t fortran_charlen_t; +#else + typedef int fortran_charlen_t; +#endif + +#ifdef __cplusplus +} #endif #endif