1
0
mirror of https://gitlab.xiph.org/xiph/icecast-common.git synced 2024-12-04 14:46:31 -05:00

Add a name mangling mechanism so we can safely compile in code we share with applications that might link with use. Currently only hooked up for the timing liblet, but thread is the real target.

Basically we define _mangle() in config.h, and use that in timing.h (if available) to prepend the package name to all the symbols in the header and including C files. It's thus fairly invisible.

Unfortunately the prefix is hardwired, so it's another thing that has to be maintained by hand (not that is changes often, but we can't make it a macro). AH_VERBATIM seems to be the only way to add a macro that takes arguments, and it explicitly doesn't do shell expansion. Further, @PACKAGE@ substitution doesn't happen on config.h.in. Insert standard autotools frustration here.

svn path=/trunk/timing/; revision=5060
This commit is contained in:
giles 2003-07-04 23:18:26 +00:00
parent 11fbb2eb0c
commit cfb106b16b
2 changed files with 8 additions and 0 deletions

View File

@ -26,6 +26,8 @@
#include "timing.h"
/* see timing.h for an explanation of _mangle() */
/*
* Returns milliseconds no matter what.
*/

View File

@ -11,6 +11,12 @@ typedef __int64 int64_t;
typedef unsigned __int64 uint64_t;
#endif
/* config.h should be included before we are to define _mangle */
#ifdef _mangle
# define timing_get_time _mangle(timing_get_time)
# define timing_sleep _mangle(timing_sleep)
#endif
uint64_t timing_get_time(void);
void timing_sleep(uint64_t sleeptime);