---
+* [Bug 3871] 4.2.8p17 build without hopf6021 refclock enabled fails.
+ Reported by Hans Mayer. Moved NONEMPTY_TRANSLATION_UNIT
+ declaration from ntp_types.h to config.h. <hart@ntp.org>
* [Bug 3869] Remove long-gone "calldelay" & "crypto sign" from docs.
Reported by PoolMUC@web.de. <hart@ntp.org>
* [Bug 3859] Use NotifyIpInterfaceChange on Windows ntpd. <hart@ntp.org>
* Provide ntpd thread names to debugger on Windows. <hart@ntp.org>
* Remove dead code libntp/numtohost.c and its unit tests. <hart@ntp.org>
* Remove class A, B, C IPv4 distinctions in netof(). <hart@ntp.org>
+* Use NONEMPTY_COMPILATION_UNIT in more conditionally-compiled files.
---
(4.2.8p17) 2023/06/06 Released by Harlan Stenn <stenn@ntp.org>
[support dynamic interleave?])
AC_MSG_RESULT([$ntp_ok])
+AH_BOTTOM([
+ /*
+ * Macro to use in otherwise-empty source files to comply with ANSI C
+ * requirement that each translation unit (source file) contain some
+ * declaration. This has commonly been done by declaring an unused
+ * global variable of type int or char. An extern reference to abs()
+ * serves the same purpose without bloat. We once used exit() but
+ * that can produce warnings on systems that declare exit() noreturn.
+ */
+ #define NONEMPTY_TRANSLATION_UNIT extern int abs(int);
+])
+
NTP_UNITYBUILD
NTP_PROBLEM_TESTS
return base + ALIGN_UNITS((minsize < 1) ? 1 : minsize);
}
-/*
- * Macro to use in otherwise-empty source files to comply with ANSI C
- * requirement that each translation unit (source file) contain some
- * declaration. This has commonly been done by declaring an unused
- * global variable of type int or char. An extern reference to abs()
- * serves the same purpose without bloat. We once used exit() but
- * that can produce warnings on systems that declare exit() noreturn.
- */
-#define NONEMPTY_TRANSLATION_UNIT extern int abs(int);
-
/*
* On Unix struct sock_timeval is equivalent to struct timeval.
* On Windows built with 64-bit time_t, sock_timeval.tv_sec is a long
return 0;
}
# else /* no special adjtime() needed */
-int adjtime_bs;
+NONEMPTY_TRANSLATION_UNIT
# endif
#endif
#endif /* not PCM_STYLE_SOUND */
}
#else
-int audio_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* HAVE_{SYS_AUDIOIO,SUN_AUDIOIO,MACHINE_SOUNDCARD,SYS_SOUNDCARD}_H */
return ebuf;
}
#else
-int strerror_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif
}
#endif /* HW_WANT_RPL_ASPRINTF */
#else /* Dummy declaration to avoid empty translation unit warnings. */
-int main(void);
+NONEMPTY_TRANSLATION_UNIT
#endif /* HW_WANT_RPL_SNPRINTF || HW_WANT_RPL_VSNPRINTF || HW_WANT_RPL_ASPRINTF || [...] */
#if TEST_SNPRINTF
}
#else /* not (REFCLOCK && CLOCK_PARSE && CLOCK_COMPUTIME) */
-int clk_computime_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* not (REFCLOCK && CLOCK_PARSE && CLOCK_COMPUTIME) */
/*
}
#else /* not (REFCLOCK && CLOCK_PARSE && CLOCK_DCF7000) */
-int clk_dcf7000_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* not (REFCLOCK && CLOCK_PARSE && CLOCK_DCF7000) */
/*
}
#else /* not (REFCLOCK && CLOCK_PARSE && CLOCK_MEINBERG) */
-int clk_meinberg_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* not (REFCLOCK && CLOCK_PARSE && CLOCK_MEINBERG) */
/*
}
#else /* not (REFCLOCK && CLOCK_PARSE && CLOCK_RAWDCF) */
-int clk_rawdcf_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* not (REFCLOCK && CLOCK_PARSE && CLOCK_RAWDCF) */
/*
}
#else /* not (REFCLOCK && CLOCK_PARSE && CLOCK_RCC8000) */
-int clk_rcc8000_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* not (REFCLOCK && CLOCK_PARSE && CLOCK_RCC8000) */
/*
}
#else /* not (REFCLOCK && CLOCK_PARSE && CLOCK_SCHMID) */
-int clk_schmid_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* not (REFCLOCK && CLOCK_PARSE && CLOCK_SCHMID) */
/*
}
#else /* not (REFCLOCK && CLOCK_PARSE && CLOCK_SEL240X) */
-int clk_sel240x_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* not (REFCLOCK && CLOCK_PARSE && CLOCK_SEL240X) */
}
#else /* not (REFCLOCK && CLOCK_PARSE && CLOCK_TRIMTAIP) */
-int clk_trimtaip_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* not (REFCLOCK && CLOCK_PARSE && CLOCK_TRIMTAIP) */
/*
}
#else /* not (REFCLOCK && CLOCK_PARSE && CLOCK_TRIMTSIP && !PARSESTREAM) */
-int clk_trimtsip_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* not (REFCLOCK && CLOCK_PARSE && CLOCK_TRIMTSIP && !PARSESTREAM) */
/*
}
#else /* not (REFCLOCK && CLOCK_PARSE && CLOCK_VARITEXT) */
-int clk_varitext_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* not (REFCLOCK && CLOCK_PARSE && CLOCK_VARITEXT) */
/*
}
#else /* not (REFCLOCK && CLOCK_PARSE) */
-int parse_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* not (REFCLOCK && CLOCK_PARSE) */
/*
unsigned short nformats = sizeof(clockformats) / sizeof(clockformats[0]) - 1;
#else /* not (REFCLOCK && CLOCK_PARSE) */
-int parse_conf_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* not (REFCLOCK && CLOCK_PARSE) */
/*
return (u_int)data_size;
}
# else /* !AUTOKEY follows */
-int ntp_crypto_bs_pubkey;
+NONEMPTY_TRANSLATION_UNIT
# endif /* !AUTOKEY */
pp->lastref = pp->lastrec;
}
#else
-int refclock_acts_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
}
#else
-int refclock_arbiter_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
}
#else
-int refclock_as2201_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
refclock_receive(peer);
}
#else
-int refclock_atom_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
return;
}
#else
-int refclock_bancomm_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
}
#else
-int refclock_chronolog_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
u_char num_refclock_conf = sizeof(refclock_conf)/sizeof(struct refclock *);
#else
-int refclock_conf_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif
#endif
#else
-int refclock_dumbclock_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* defined(REFCLOCK) && defined(CLOCK_DUMBCLOCK) */
#else
-int refclock_fg_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
}
#else
-int refclock_gpsvme_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
}
#else
-int refclock_heath_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
}
#else
-int refclock_hopfpci_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
}
#else
-int refclock_hopfser_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
}
#else
-int refclock_hpgps_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
#else
-int refclock_irig_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
/**************************************************************************************************/
#else
-int refclock_jjy_bs ;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
}
#else /* not (REFCLOCK && CLOCK_JUPITER && HAVE_PPSAPI) */
-int refclock_jupiter_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* not (REFCLOCK && CLOCK_JUPITER && HAVE_PPSAPI) */
refclock_receive(peer);
}
#else
-int refclock_local_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
}
#else
-int refclock_mx4200_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
#endif
#else
-int refclock_neoclock4x_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
/*
}
#else
-int refclock_oncore_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK && CLOCK_ONCORE */
}
#else /* REFCLOCK && CLOCK_PALISADE*/
-int refclock_palisade_c_notempty;
+NONEMPTY_TRANSLATION_UNIT
#endif
refclock_receive(peer);
}
#else
-int refclock_pcf_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
}
#else
-int refclock_pst_int;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
#endif /* TRIMBLE_OUTPUT_FUNC */
#else /* defined(REFCLOCK) && defined(CLOCK_RIPENCC) */
-int refclock_ripencc_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* defined(REFCLOCK) && defined(CLOCK_RIPENCC) */
}
#else
-int refclock_tpro_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
#endif
#else
-int refclock_true_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
} // End DoyTimeFromSecTime
#else
-int refclock_tsyncpci_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
}
#else
-int refclock_tt560_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
}
#else
-int refclock_ulink_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
#else
-int refclock_wwv_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
#endif /* HAVE_PPSAPI */
#else
-int refclock_wwvb_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
}
#else
-int refclock_zyfer_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif /* REFCLOCK */
}
#else /* !NEED_NETSNMP_DAEMONIZE */
-int netsnp_daemonize_bs;
+NONEMPTY_TRANSLATION_UNIT
#endif
# define DYNAMIC_INTERLEAVE 0
#endif
+/*
+ * Macro to use in otherwise-empty source files to comply with ANSI C
+ * requirement that each translation unit (source file) contain some
+ * declaration. This has commonly been done by declaring an unused
+ * global variable of type int or char. An extern reference to abs()
+ * serves the same purpose without bloat. We once used exit() but
+ * that can produce warnings on systems that declare exit() noreturn.
+ */
+#define NONEMPTY_TRANSLATION_UNIT extern int abs(int);
+
/*
* Below this line are includes which must happen after the bulk of
* config.h is processed. If you need to add another #include to this
<ClCompile Include="..\..\..\..\libntp\authreadkeys.c" />
<ClCompile Include="..\..\..\..\libntp\authusekey.c" />
<ClCompile Include="..\..\..\..\libntp\a_md5encrypt.c" />
+ <ClCompile Include="..\..\..\..\libntp\bsd_strerror.c" />
<ClCompile Include="..\..\..\..\libntp\buftvtots.c" />
<ClCompile Include="..\..\..\..\libntp\caljulian.c" />
<ClCompile Include="..\..\..\..\libntp\caltontp.c" />
<ClCompile Include="..\..\..\..\libntp\lib\isc\win32\win32os.c">
<Filter>libisc Source Files</Filter>
</ClCompile>
+ <ClCompile Include="..\..\..\..\libntp\bsd_strerror.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\..\sntp\libopts\ag-char-map.h">
<ClCompile Include="..\..\..\..\libparse\clk_rawdcf.c" />
<ClCompile Include="..\..\..\..\libparse\clk_rcc8000.c" />
<ClCompile Include="..\..\..\..\libparse\clk_schmid.c" />
+ <ClCompile Include="..\..\..\..\libparse\clk_sel240x.c" />
<ClCompile Include="..\..\..\..\libparse\clk_trimtaip.c" />
<ClCompile Include="..\..\..\..\libparse\clk_trimtsip.c" />
<ClCompile Include="..\..\..\..\libparse\clk_varitext.c" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
<ClCompile Include="..\..\..\..\ntpd\refclock_gpsdjson.c">
<Filter>Reference Clock</Filter>
</ClCompile>
+ <ClCompile Include="..\..\..\..\libparse\clk_sel240x.c">
+ <Filter>Parse Lib</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\..\include\ascii.h">
</ResourceCompile>
</ItemGroup>
<ItemGroup>
- <None Include="..\..\libntp\MSG00001.bin">
- <Filter>Generated Files</Filter>
- </None>
- <None Include="..\libntp\messages.mc">
- <Filter>Resource Files</Filter>
- </None>
<None Include="..\..\..\..\ChangeLog" />
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\..\..\..\ntpd\ntp_parser.h">
<Filter>Header Files</Filter>
</CustomBuild>
- <CustomBuild Include="..\..\..\..\packageinfo.sh" />
+ <CustomBuild Include="..\..\..\..\.bk\SCCS\ChangeSet,s" />
+ <CustomBuild Include="scm-rev" />
</ItemGroup>
</Project>
\ No newline at end of file